Modelos
Enumere todos los modelos disponibles en su clave API, completos con indicadores de capacidad, límites de contexto y precios por token.
GET /v1/models
Devuelve la lista de modelos que puedes usar ahora mismo. Las solicitudes autenticadas incluyen cualquier modelo por usuario que haya habilitado en el panel. La forma refleja la de OpenAI GET /v1/models con campos de capacidad adicionales de la Fuerza Aérea.
https://api.airforce/v1/modelsEjemplo
curl https://api.airforce/v1/models \
-H "Authorization: Bearer sk-air-YOUR_API_KEY"Forma de respuesta
La envolvente de nivel superior es { object: "list", data: Model[] }. Cada Model tiene los campos a continuación: los campos marcados como opcionales pueden omitirse cuando se desconocen.
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | string | Optional | Public model identifier you pass as the "model" field on every other endpoint, e.g. "claude-sonnet-4.6" or "gpt-5.1-chat". |
| object | string | Optional | Always "model". |
| created | integer | Optional | Unix timestamp the model was added to Airforce. |
| owned_by | string | Optional | Vendor name: "openai", "anthropic", "google", "deepseek", … |
| catalog_id | string | Optional | Canonical vendor identifier for the underlying model family (e.g. "anthropic/claude-sonnet-4-6"). Stable across Airforce ID changes. |
| context_length | integer | Optional | Total context window in tokens (input + output). |
| max_output_tokens | integer | Optional | Hard cap on a single response. Use this as the upper bound when picking max_tokens. |
| input_modalities | array | Optional | Subset of ["text", "image", "audio", "document", "video"] the model accepts as input. |
| output_modalities | array | Optional | Subset of ["text", "image", "audio", "video"] the model can produce. |
| supports_chat | boolean | Optional | Available on /v1/chat/completions and /v1/messages. |
| supports_streaming | boolean | Optional | Honors stream: true. |
| supports_vision | boolean | Optional | Accepts image_url content blocks. |
| supports_tools | boolean | Optional | Accepts the tools / tool_choice parameters. |
| supports_reasoning | boolean | Optional | Honors reasoning_effort / thinking / thinking_budget. |
| supports_documents | boolean | Optional | Accepts document content blocks (PDF, etc.). |
| supports_caching | boolean | Optional | Honors cache_control on Anthropic-style system prompts. |
| supports_audio_input | boolean | Optional | Accepts audio content blocks (multimodal STT-in-chat). |
| supports_video_input | boolean | Optional | Accepts video content blocks. |
| knowledge_cutoff | string | Optional | Vendor-published knowledge cutoff month, e.g. "2025-09". |
| status | string | Optional | "stable" | "beta" | "deprecated" | "disabled". |
| pricepermilliontokens | integer | Optional | Input cost in cents per 1M tokens. Output side has output_pricepermilliontokens. |
| cache_read_pricepermilliontokens | integer | Optional | Discounted rate for cache-hit input tokens (Anthropic-style caching). |
Ejemplo de respuesta
{
"object": "list",
"data": [
{
"id": "claude-sonnet-4.6",
"object": "model",
"created": 1740000000,
"owned_by": "anthropic",
"catalog_id": "anthropic/claude-sonnet-4-6",
"context_length": 200000,
"max_output_tokens": 64000,
"input_modalities": ["text", "image", "document"],
"output_modalities": ["text"],
"supports_chat": true,
"supports_streaming": true,
"supports_vision": true,
"supports_tools": true,
"supports_reasoning": true,
"supports_documents": true,
"supports_caching": true,
"knowledge_cutoff": "2025-08",
"status": "stable",
"pricepermilliontokens": 300,
"output_pricepermilliontokens": 1500,
"cache_read_pricepermilliontokens": 30
}
// … more models
]
}Filtrar por capacidad
No hay ningún parámetro de consulta del lado del servidor: filtre la lista del lado del cliente utilizando los indicadores de capacidad. Los filtros más comunes:
const res = await fetch('https://api.airforce/v1/models', {
headers: { Authorization: `Bearer ${API_KEY}` },
});
const { data } = await res.json();
// Vision-capable chat models
const visionModels = data.filter(m => m.supports_chat && m.supports_vision);
// Cheapest reasoning model with at least 100k context
const reasoning = data
.filter(m => m.supports_reasoning && (m.context_length ?? 0) >= 100_000)
.sort((a, b) => (a.pricepermilliontokens ?? 0) - (b.pricepermilliontokens ?? 0))[0];
// All models from one vendor, by canonical catalog family
const allClaude = data.filter(m => m.catalog_id?.startsWith('anthropic/'));Campos de precios
Todo *pricepermilliontokens Los campos son céntimos enteros por 1 000 000 de tokens. Divida por 100 para obtener dólares por millón.
| Parameter | Type | Required | Description |
|---|---|---|---|
| pricepermilliontokens | integer | Optional | Input tokens, cents per 1M. |
| output_pricepermilliontokens | integer | Optional | Output tokens, cents per 1M. |
| cache_write_5m_pricepermilliontokens | integer | Optional | Cache-write rate for 5-minute TTL caches (Anthropic). |
| cache_write_1h_pricepermilliontokens | integer | Optional | Cache-write rate for 1-hour TTL caches (Anthropic). |
| cache_read_pricepermilliontokens | integer | Optional | Cache-read rate (typically 10× cheaper than uncached input). |
Estado y obsolescencia del modelo
| Parameter | Type | Required | Description |
|---|---|---|---|
| stable | status | Optional | Production-ready. Use freely. |
| beta | status | Optional | Available, but the upstream API surface may change without notice. |
| deprecated | status | Optional | Still callable, but a sunset is scheduled. Migrate to the replacement listed in the model description. |
| disabled | status | Optional | Will not be returned to anonymous callers; admins may still surface it for testing. |
¿Quieres una vista navegable?
El /página de modelos presenta estos mismos datos con comparaciones de agrupación, búsqueda y precios.