> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aihubmix.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API de gestion des modèles

> Cette documentation API décrit en détail l'interface de gestion des modèles, y compris les fonctionnalités, les exemples de requêtes, la description des paramètres et les formats de réponse pour les versions nouvelle et héritée de l'API.

## Nouvelle version de l'API

### Obtenir les informations sur les modèles

**Endpoint** : `GET https://aihubmix.com/api/v1/models`

**Description** : récupère les informations détaillées de tous les modèles disponibles.

### Description des champs de l'objet modèle

<ResponseField name="data" type="array">
  Tableau d'objets d'information sur les modèles.
</ResponseField>

<ResponseField name="model_id" type="string">
  Identifiant unique du modèle.
</ResponseField>

<ResponseField name="desc" type="string">
  Description des fonctionnalités du modèle (en anglais).
</ResponseField>

<ResponseField name="types" type="string">
  Type de modèle. Valeurs prises en charge : `llm` (grand modèle de langage), `image_generation`, `video`, `tts` (synthèse vocale), `stt` (reconnaissance vocale), `embedding`, `rerank`.
</ResponseField>

<ResponseField name="features" type="string">
  Fonctionnalités prises en charge. Valeurs prises en charge : `thinking` (raisonnement), `tools` (utilisation d'outils), `function_calling`, `web` (recherche web), `deepsearch`, `long_context`, `structured_outputs`.
</ResponseField>

<ResponseField name="input_modalities" type="string">
  Modalités d'entrée prises en charge. Valeurs prises en charge : `text`, `image`, `audio`, `video`, `pdf`.
</ResponseField>

<ResponseField name="max_output" type="string">
  Nombre maximal de jetons de sortie.
</ResponseField>

<ResponseField name="context_length" type="string">
  Taille de la fenêtre de contexte (nombre maximal de jetons d'entrée).
</ResponseField>

<ResponseField name="pricing" type="object">
  Objet contenant les informations tarifaires.
</ResponseField>

<ResponseField name="pricing.input" type="number">
  Prix par jeton d'entrée (par 1 000 jetons, en USD).
</ResponseField>

<ResponseField name="pricing.output" type="number">
  Prix par jeton de sortie (par 1 000 jetons, en USD).
</ResponseField>

<ResponseField name="pricing.cache_read" type="number">
  Prix de lecture du cache (par 1 000 jetons, en USD, champ optionnel).
</ResponseField>

<ResponseField name="pricing.cache_write" type="number">
  Prix d'écriture du cache (par 1 000 jetons, en USD, champ optionnel).
</ResponseField>

### Exemples de requêtes

<CodeGroup>
  ```python Python theme={null}
  import requests

  # API Endpoint
  url = "https://aihubmix.com/api/v1/models"

  response = requests.get(url)
  print(response.json())

  # Example with parameters
  params = {
      "type": "llm",                   
  	"modalities": "text",
  	"model": "gpt-5",
  	"features": "thinking",
      "sort_by": "context_length",
      "sort_order": "desc"    
  }
  response = requests.get(url, params=params)
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  fetch('https://aihubmix.com/api/v1/models')
    .then(response => response.json())
    .then(data => console.log(data));

  // Example with parameters
  const params = new URLSearchParams({
    type: 'llm',
    modalities: 'text',
    model: 'gpt-5',
    features: 'thinking',
    sort_by: 'context_length',
    sort_order: 'desc' 
  });

  fetch(`https://aihubmix.com/api/v1/models?${params}`)
    .then(response => response.json())
    .then(data => console.log(data));
  ```

  ```bash cURL theme={null}
  # Get all models
  curl -X GET "https://aihubmix.com/api/v1/models"

  # Get models with specific filters
  curl -X GET "https://aihubmix.com/api/v1/models?type=llm&modalities=text&model=gpt-5&features=thinking&sort_by=context_length&sort_order=desc"
  ```
</CodeGroup>

### Description des paramètres de requête (pour le filtrage)

<ParamField query="type" path="string" type="string">
  Type de modèle. Valeurs prises en charge : `llm` (grand modèle de langage), `image_generation`, `video`, `tts` (synthèse vocale), `stt` (reconnaissance vocale), `embedding`, `rerank`.
</ParamField>

<ParamField query="modalities" path="param" type="string">
  Modalités d'entrée. Valeurs prises en charge : `text`, `image`, `audio`, `video`, `pdf`. Prend en charge les requêtes multimodalités (séparées par des virgules).
</ParamField>

<ParamField query="model" path="param" type="string">
  Recherche approximative par nom de modèle (correspondance partielle prise en charge).
</ParamField>

<ParamField query="features" path="param" type="string">
  Fonctionnalités du modèle. Valeurs prises en charge : `thinking` (raisonnement), `tools` (utilisation d'outils), `function_calling`, `web` (recherche web), `deepsearch`, `long_context`, `structured_outputs`. Prend en charge les requêtes multifonctionnalités (séparées par des virgules).
</ParamField>

<ParamField query="sort_by" path="string" type="string">
  Trier par champ. Valeurs prises en charge :

  * `model_ratio` : tri par rapport coût/efficacité.
  * `context_length` : tri par longueur de contexte.
  * `coding` : priorité aux modèles de codage.
  * `order` : tri par ordre par défaut.
</ParamField>

<ParamField query="sort_order" path="string" type="string">
  Ordre de tri. Valeurs prises en charge :

  * `asc` (ascendant)
  * `desc` (descendant)
</ParamField>

### Exemple de réponse en cas de succès

```json theme={null}
{
    "data": [
        {
            "model_id": "gpt-5",
            "desc": "GPT-5 is OpenAI's flagship model for coding, reasoning, and agentic tasks across domains.",
            "pricing": {
                "cache_read": 0.125,
                "input": 1.25,
                "output": 10
            },
            "types": "llm",
            "features": "thinking,tools,function_calling,structured_outputs",
            "input_modalities": "text,image",
            "max_output": 128000,
            "context_length": 400000
        },
        {
            "model_id": "gpt-5-codex",
            "desc": "GPT-5-Codex is a version of GPT-5 optimized for autonomous coding tasks in Codex or similar environments. It is only available in the Responses API, and the underlying model snapshots will be updated regularly. https://docs.aihubmix.com/en/api/Responses-API You can also use it in codex-cll; see https://docs.aihubmix.com/en/api/Codex-CLI for using codex-cll through Aihubmix.",
            "pricing": {
                "cache_read": 0.125,
                "input": 1.25,
                "output": 10
            },
            "types": "llm",
            "features": "thinking,tools,function_calling,structured_outputs",
            "input_modalities": "text,image",
            "max_output": 128000,
            "context_length": 400000
        }
    ],
    "message": "",
    "success": true
}
```

### Exemples de scénarios d'utilisation

<CodeGroup>
  ```bash Get all large language models theme={null}
  GET https://aihubmix.com/api/v1/models?type=llm
  ```

  ```bash Get models suitable for coding, sorted by context length theme={null}
  GET https://aihubmix.com/api/v1/models?tag=coding&sort_by=context_length&sort_order=desc
  ```

  ```bash Search for a specific model theme={null}
  GET https://aihubmix.com/api/v1/models?model=gpt-5
  ```

  ```bash Compound query theme={null}
  GET https://aihubmix.com/api/v1/models?type=llm&modalities=text,image&features=function_calling&sort_by=model_ratio&sort_order=asc
  ```

  ```bash Smart sort for coding models theme={null}
  GET https://aihubmix.com/api/v1/models?sort_by=coding
  ```
</CodeGroup>

> **Remarque** : lors de l'utilisation du tri intelligent pour les modèles de codage, le système privilégiera les modèles étiquetés `coding`, les autres modèles étant listés dans l'ordre par défaut.

### Optimisation des performances

#### Mécanisme de mise en cache

* **Politique de cache** : mise en cache HTTP, durée du cache de 300 secondes (5 minutes).
* **Contrôle du cache** : `Cache-Control: public, max-age=300, stale-while-revalidate=300`
* **Validation du contenu** : prise en charge de la validation par hash de contenu ETag.

#### Exemple d'utilisation du cache

```bash theme={null}
# Conditional request using ETag
curl -H "If-None-Match: \"abc123...\"" \
     https://aihubmix.com/api/v1/models
```

> Si le contenu n'a pas été mis à jour, le serveur renvoie un code d'état `304 Not Modified`.

### Gestion des erreurs

<CodeGroup>
  ```json 400 Bad Request (Invalid Parameters) theme={null}
  {
    "success": false,
    "message": "Invalid request parameter format"
  }
  ```

  ```json 500 Internal Server Error theme={null}
  {
    "success": false,
    "message": "Internal server error, please try again later"
  }
  ```
</CodeGroup>

### Remarques importantes

1. **Intégrité des données** : cet endpoint renvoie tous les modèles correspondant aux critères, sans pagination.
2. **Compatibilité des types** : prend en charge le mappage automatique entre les anciens et nouveaux identifiants de type :
   * `t2t` ↔ `llm`
   * `t2i` ↔ `image_generation`
   * `t2v` ↔ `video`
   * `reranking` ↔ `rerank`
3. **Logique de filtrage** : plusieurs conditions de filtre sont combinées avec un ET logique.
4. **Règle de tri** : si aucune méthode de tri n'est spécifiée, les modèles sont rangés dans l'ordre par défaut du système.

***

## Version héritée de l'API

> ⚠️ **Remarque** : les endpoints suivants sont des endpoints d'API hérités. Il est recommandé d'utiliser la nouvelle version de l'API pour de meilleures performances et fonctionnalités.

### Obtenir la liste des modèles

**Endpoint** : `GET /v1/models`

* Si un utilisateur est connecté, cette opération récupère la liste des modèles disponibles pour le groupe de l'utilisateur. Si aucun utilisateur n'est connecté, elle récupère la liste pour le groupe `default`.
* Si l'en-tête contient un champ `Authorization`, elle interroge la liste des modèles configurés pour le token correspondant.

**Exemple de réponse :**

```json theme={null}
{
  "data": [
    {
      "id": "gpt-4o-mini",
      "object": "model",
      "created": 1626777600,
      "owned_by": "OpenAI",
      "permission": [
        {
          "id": "modelperm-LwHkVFn8AcMItP432fKKDIKJ",
          "object": "model_permission",
          "created": 1626777600,
          "allow_create_engine": true,
          "allow_sampling": true,
          "allow_logprobs": true,
          "allow_search_indices": false,
          "allow_view": true,
          "allow_fine_tuning": false,
          "organization": "*",
          "group": null,
          "is_blocking": false
        }
      ],
      "root": "gpt-4o-mini",
      "parent": null
    }
  ]
}
```

### Réponse

| Code d'état | Signification | Description | Modèle de données |
| ----------- | ------------- | ----------- | ----------------- |
| 200         | OK            | aucun       | Inline            |

### Structure des données de réponse

**Code d'état 200**

| Nom                        | Type           | Requis | Description            |
| -------------------------- | -------------- | ------ | ---------------------- |
| » data                     | \[object]      | oui    | aucun                  |
| »» id                      | string         | oui    | ID du modèle           |
| »» object                  | string         | oui    | `model`                |
| »» created                 | integer        | oui    | Horodatage de création |
| »» owned\_by               | string         | oui    | Développeur            |
| »» permission              | \[object]¦null | oui    | aucun                  |
| »»» id                     | string         | oui    | aucun                  |
| »»» object                 | string         | oui    | aucun                  |
| »»» created                | integer        | oui    | aucun                  |
| »»» allow\_create\_engine  | boolean        | oui    | aucun                  |
| »»» allow\_sampling        | boolean        | oui    | aucun                  |
| »»» allow\_logprobs        | boolean        | oui    | aucun                  |
| »»» allow\_search\_indices | boolean        | oui    | aucun                  |
| »»» allow\_view            | boolean        | oui    | aucun                  |
| »»» allow\_fine\_tuning    | boolean        | oui    | aucun                  |
| »»» organization           | string         | oui    | aucun                  |
| »»» group                  | null           | oui    | aucun                  |
| »»» is\_blocking           | boolean        | oui    | aucun                  |
| »» root                    | string         | oui    | Nom du modèle racine   |
| »» parent                  | null           | oui    | Modèle parent          |

### Obtenir les informations sur un modèle

**Endpoint** : `GET /v1/models/:model`

### Paramètres de requête

| Nom   | Dans | Type   | Requis | Description  |
| ----- | ---- | ------ | ------ | ------------ |
| model | path | string | oui    | ID du modèle |

**Exemple de réponse :**

```json theme={null}
200 Response
```

```json theme={null}
{
  "id": "string",
  "object": "string",
  "created": 0,
  "owned_by": "string",
  "permission": [
    {
      "id": "string",
      "object": "string",
      "created": 0,
      "allow_create_engine": true,
      "allow_sampling": true,
      "allow_logprobs": true,
      "allow_search_indices": true,
      "allow_view": true,
      "allow_fine_tuning": true,
      "organization": "string",
      "group": null,
      "is_blocking": true
    }
  ],
  "root": "string",
  "parent": null
}
```

### Réponse

| Code d'état | Signification | Description | Modèle de données |
| ----------- | ------------- | ----------- | ----------------- |
| 200         | OK            | aucun       | Inline            |

### Structure des données de réponse

**Code d'état 200**

| Nom                      | Type      | Requis | Description            |
| ------------------------ | --------- | ------ | ---------------------- |
| id                       | string    | oui    | ID du modèle           |
| object                   | string    | oui    | `model`                |
| created                  | integer   | oui    | Horodatage de création |
| owned\_by                | string    | oui    | Développeur            |
| permission               | \[object] | oui    | aucun                  |
| » id                     | string    | non    | aucun                  |
| » object                 | string    | non    | aucun                  |
| » created                | integer   | non    | aucun                  |
| » allow\_create\_engine  | boolean   | non    | aucun                  |
| » allow\_sampling        | boolean   | non    | aucun                  |
| » allow\_logprobs        | boolean   | non    | aucun                  |
| » allow\_search\_indices | boolean   | non    | aucun                  |
| » allow\_view            | boolean   | non    | aucun                  |
| » allow\_fine\_tuning    | boolean   | non    | aucun                  |
| » organization           | string    | non    | aucun                  |
| » group                  | null      | non    | aucun                  |
| » is\_blocking           | boolean   | non    | aucun                  |
| root                     | string    | oui    | Nom du modèle racine   |
| parent                   | null      | oui    | Modèle parent          |

***

Dernière mise à jour : 2026-06-01
