> ## 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 gestión de modelos

> Esta documentación de la API ofrece una descripción detallada de la interfaz de gestión de modelos, incluidas las funciones, los ejemplos de solicitud, las descripciones de los parámetros y los formatos de respuesta para las versiones nueva y heredada de la API.

## Nueva versión de la API

### Obtener información de los modelos

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

**Descripción**: Recupera información detallada de todos los modelos disponibles.

### Descripción de los campos del objeto de modelo

<ResponseField name="data" type="array">
  Un array de objetos con la información de los modelos.
</ResponseField>

<ResponseField name="model_id" type="string">
  El identificador único del modelo.
</ResponseField>

<ResponseField name="desc" type="string">
  Una descripción de la funcionalidad del modelo (en inglés).
</ResponseField>

<ResponseField name="types" type="string">
  Tipo de modelo. Valores admitidos: `llm` (Modelo de lenguaje grande), `image_generation`, `video`, `tts` (Texto a voz), `stt` (Voz a texto), `embedding`, `rerank`.
</ResponseField>

<ResponseField name="features" type="string">
  Funciones admitidas. Valores admitidos: `thinking` (razonamiento), `tools` (uso de herramientas), `function_calling`, `web` (búsqueda web), `deepsearch`, `long_context`, `structured_outputs`.
</ResponseField>

<ResponseField name="input_modalities" type="string">
  Modalidades de entrada admitidas. Valores admitidos: `text`, `image`, `audio`, `video`, `pdf`.
</ResponseField>

<ResponseField name="max_output" type="string">
  Número máximo de tokens de salida.
</ResponseField>

<ResponseField name="context_length" type="string">
  Tamaño de la ventana de contexto (número máximo de tokens de entrada).
</ResponseField>

<ResponseField name="pricing" type="object">
  Objeto con la información de precios.
</ResponseField>

<ResponseField name="pricing.input" type="number">
  Precio de los tokens de entrada (por cada 1K tokens, en USD).
</ResponseField>

<ResponseField name="pricing.output" type="number">
  Precio de los tokens de salida (por cada 1K tokens, en USD).
</ResponseField>

<ResponseField name="pricing.cache_read" type="number">
  Precio de lectura desde caché (por cada 1K tokens, en USD, campo opcional).
</ResponseField>

<ResponseField name="pricing.cache_write" type="number">
  Precio de escritura en caché (por cada 1K tokens, en USD, campo opcional).
</ResponseField>

### Ejemplos de solicitud

<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>

### Descripción de los parámetros de la solicitud (para filtrado)

<ParamField query="type" path="string" type="string">
  Tipo de modelo. Valores admitidos: `llm` (Modelo de lenguaje grande), `image_generation`, `video`, `tts` (Texto a voz), `stt` (Voz a texto), `embedding`, `rerank`.
</ParamField>

<ParamField query="modalities" path="param" type="string">
  Modalidades de entrada. Valores admitidos: `text`, `image`, `audio`, `video`, `pdf`. Admite consultas multimodalidad (separadas por comas).
</ParamField>

<ParamField query="model" path="param" type="string">
  Búsqueda difusa por nombre de modelo (admite coincidencia parcial).
</ParamField>

<ParamField query="features" path="param" type="string">
  Funciones del modelo. Valores admitidos: `thinking` (razonamiento), `tools` (uso de herramientas), `function_calling`, `web` (búsqueda web), `deepsearch`, `long_context`, `structured_outputs`. Admite consultas multifunción (separadas por comas).
</ParamField>

<ParamField query="sort_by" path="string" type="string">
  Campo de ordenación. Valores admitidos:

  * `model_ratio`: Ordena por relación coste-eficacia.
  * `context_length`: Ordena por longitud del contexto.
  * `coding`: Prioriza los modelos para programación.
  * `order`: Ordena por el orden predeterminado.
</ParamField>

<ParamField query="sort_order" path="string" type="string">
  Orden de clasificación. Valores admitidos:

  * `asc` (ascendente)
  * `desc` (descendente)
</ParamField>

### Ejemplo de respuesta exitosa

```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
}
```

### Ejemplos de escenarios de uso

<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>

> **Nota**: Al usar la ordenación inteligente para modelos de programación, el sistema priorizará los modelos etiquetados con `coding`, y los demás modelos se mostrarán en el orden predeterminado.

### Optimización del rendimiento

#### Mecanismo de caché

* **Política de caché**: Caché HTTP, duración de la caché de 300 segundos (5 minutos).
* **Control de caché**: `Cache-Control: public, max-age=300, stale-while-revalidate=300`
* **Validación de contenido**: Admite validación de hash de contenido mediante ETag.

#### Ejemplo de uso de la caché

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

> Si el contenido no se ha actualizado, el servidor devuelve un código de estado `304 Not Modified`.

### Manejo de errores

<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>

### Notas importantes

1. **Integridad de datos**: Este endpoint devuelve todos los modelos que cumplen los criterios, sin paginación.
2. **Compatibilidad de tipos**: Admite la asignación automática entre identificadores de tipo nuevos y antiguos:
   * `t2t` ↔ `llm`
   * `t2i` ↔ `image_generation`
   * `t2v` ↔ `video`
   * `reranking` ↔ `rerank`
3. **Lógica de filtrado**: Múltiples condiciones de filtro se combinan con un Y lógico.
4. **Regla de ordenación**: Cuando no se especifica un método de ordenación, los modelos se organizan en el orden predeterminado del sistema.

***

## Versión heredada de la API

> ⚠️ **Nota**: Los siguientes son endpoints de la API heredada. Se recomienda utilizar la nueva versión de la API para obtener mejor rendimiento y funcionalidades.

### Obtener la lista de modelos

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

* Si el usuario ha iniciado sesión, recupera la lista de modelos disponibles para el grupo del usuario. Si no se ha iniciado sesión, recupera la lista del grupo `default`.
* Si la cabecera contiene un campo `Authorization`, consulta la lista de modelos configurados para el token correspondiente.

**Ejemplo de respuesta:**

```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
    }
  ]
}
```

### Respuesta

| Código de estado | Significado | Descripción | Modelo de datos |
| ---------------- | ----------- | ----------- | --------------- |
| 200              | OK          | ninguno     | En línea        |

### Estructura de datos de la respuesta

**Código de estado 200**

| Nombre                     | Tipo           | Obligatorio | Descripción                |
| -------------------------- | -------------- | ----------- | -------------------------- |
| » data                     | \[object]      | true        | ninguno                    |
| »» id                      | string         | true        | ID del modelo              |
| »» object                  | string         | true        | `model`                    |
| »» created                 | integer        | true        | Marca temporal de creación |
| »» owned\_by               | string         | true        | Desarrollador              |
| »» permission              | \[object]¦null | true        | ninguno                    |
| »»» id                     | string         | true        | ninguno                    |
| »»» object                 | string         | true        | ninguno                    |
| »»» created                | integer        | true        | ninguno                    |
| »»» allow\_create\_engine  | boolean        | true        | ninguno                    |
| »»» allow\_sampling        | boolean        | true        | ninguno                    |
| »»» allow\_logprobs        | boolean        | true        | ninguno                    |
| »»» allow\_search\_indices | boolean        | true        | ninguno                    |
| »»» allow\_view            | boolean        | true        | ninguno                    |
| »»» allow\_fine\_tuning    | boolean        | true        | ninguno                    |
| »»» organization           | string         | true        | ninguno                    |
| »»» group                  | null           | true        | ninguno                    |
| »»» is\_blocking           | boolean        | true        | ninguno                    |
| »» root                    | string         | true        | Nombre del modelo raíz     |
| »» parent                  | null           | true        | Modelo padre               |

### Obtener información del modelo

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

### Parámetros de la solicitud

| Nombre | Ubicación | Tipo   | Obligatorio | Descripción   |
| ------ | --------- | ------ | ----------- | ------------- |
| model  | path      | string | true        | ID del modelo |

**Ejemplo de respuesta:**

```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
}
```

### Respuesta

| Código de estado | Significado | Descripción | Modelo de datos |
| ---------------- | ----------- | ----------- | --------------- |
| 200              | OK          | ninguno     | En línea        |

### Estructura de datos de la respuesta

**Código de estado 200**

| Nombre                   | Tipo      | Obligatorio | Descripción                |
| ------------------------ | --------- | ----------- | -------------------------- |
| id                       | string    | true        | ID del modelo              |
| object                   | string    | true        | `model`                    |
| created                  | integer   | true        | Marca temporal de creación |
| owned\_by                | string    | true        | Desarrollador              |
| permission               | \[object] | true        | ninguno                    |
| » id                     | string    | false       | ninguno                    |
| » object                 | string    | false       | ninguno                    |
| » created                | integer   | false       | ninguno                    |
| » allow\_create\_engine  | boolean   | false       | ninguno                    |
| » allow\_sampling        | boolean   | false       | ninguno                    |
| » allow\_logprobs        | boolean   | false       | ninguno                    |
| » allow\_search\_indices | boolean   | false       | ninguno                    |
| » allow\_view            | boolean   | false       | ninguno                    |
| » allow\_fine\_tuning    | boolean   | false       | ninguno                    |
| » organization           | string    | false       | ninguno                    |
| » group                  | null      | false       | ninguno                    |
| » is\_blocking           | boolean   | false       | ninguno                    |
| root                     | string    | true        | Nombre del modelo raíz     |
| parent                   | null      | true        | Modelo padre               |

***

Última actualización: 2026-06-01
