Documentación
Referencia de API en la documentación de NexoRouter.
Referencia de API
Esta página documenta la superficie pública estable actual de la API compatible con OpenAI.
Solo los endpoints documentados aquí son compromisos de soporte del producto. Otros paths bajo /v1 pueden pasar por el gateway, pero no son promesas de API pública estable hasta que aparezcan en esta referencia.
Base URL
https://api.nexorouter.com/v1
Autenticación
Authorization: Bearer YOUR_NEXOROUTER_API_KEY
Usa una key de NexoRouter, no una key del proveedor original. El gateway aplica estado, expiración, presupuesto y alcance de modelos de esa key antes de completar el request.
Flujo de un request
- Tu cliente envía una key, model ID y payload compatible.
- NexoRouter valida el body y aplica límites de requests y tokens.
- El gateway comprueba disponibilidad comercial del modelo.
- El request se enruta al proveedor configurado.
- La respuesta se normaliza cuando hay un error conocido.
- Usage Logs registra modelo, key, tokens, costo, latencia, estado y request ID disponible.
Un status 200 confirma que el request terminó, no que todos los modelos tengan exactamente los mismos campos opcionales. Programa el cliente para tolerar campos adicionales y comprueba valores opcionales antes de usarlos.
Headers
Request:
| Header | Requerido | Uso |
|---|---|---|
Authorization: Bearer ... | sí | API key de NexoRouter. |
Content-Type: application/json | sí para JSON | Tipo del request body. |
Accept: application/json | no | Preferencia de response del cliente. |
Response, cuando aplique:
| Header | Significado |
|---|---|
x-request-id | Identificador para correlacionar logs y soporte, si el upstream o gateway lo entrega. |
x-ratelimit-limit | Capacidad de la ventana que produjo un 429. |
x-ratelimit-remaining | Capacidad restante en esa ventana. |
retry-after | Segundos que debes esperar antes de reintentar un 429. |
GET /models
Devuelve model IDs disponibles públicamente.
Request
curl https://api.nexorouter.com/v1/models \
-H "Authorization: Bearer $NEXOROUTER_API_KEY"
Response
{
"object": "list",
"data": [
{
"id": "kimi-k2.6",
"object": "model"
}
]
}
La respuesta puede incluir campos adicionales compatibles con OpenAI. Usa id como model ID estable para requests.
POST /chat/completions
Crea una respuesta de chat.
Mensajes
Cada item de messages contiene como mínimo role y content. Los roles de texto comunes son:
| Role | Uso |
|---|---|
system | Define comportamiento e instrucciones de alto nivel. |
user | Entrada del usuario o de la aplicación. |
assistant | Respuestas anteriores que quieres conservar en contexto. |
Contenido multimodal, tool messages y formatos especiales dependen del modelo y no forman parte del contrato de texto básico.
Request body
| Field | Type | Required | Notes |
|---|---|---|---|
model | string | yes | Copia desde Models o GET /v1/models. |
messages | array | yes | Lista de mensajes compatible con OpenAI, no vacía. |
temperature | number | no | 0 a 2. |
top_p | number | no | 0 a 1. |
max_tokens | integer | no | Entero positivo. |
El gateway rechaza un array messages vacío, max_tokens no positivo y sampling parameters fuera de rango antes de enviar el request al proveedor.
Request
curl https://api.nexorouter.com/v1/chat/completions \
-H "Authorization: Bearer $NEXOROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2.6",
"messages": [
{ "role": "user", "content": "Write one short launch checklist." }
],
"max_tokens": 256
}'
Response
{
"id": "chatcmpl_example",
"object": "chat.completion",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Create an API key, choose a model, test in Playground, and monitor usage logs."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 18,
"total_tokens": 38
}
}
Campos de response
| Campo | Uso |
|---|---|
id | ID de la completion cuando está disponible. |
choices | Lista de resultados devueltos. |
choices[].message.content | Texto de la respuesta. |
choices[].finish_reason | Motivo de finalización reportado por el modelo o proveedor. |
usage.prompt_tokens | Tokens de entrada reportados. |
usage.completion_tokens | Tokens de salida reportados. |
usage.total_tokens | Total reportado. |
Los campos de uso y finish reason pueden variar por modelo o proveedor. Usa Usage Logs como fuente operativa para costo y trazabilidad.
Errores
Los errores documentados usan una forma compatible con OpenAI:
{
"error": {
"message": "Human-readable explanation",
"type": "invalid_request_error",
"code": "invalid_request"
}
}
| HTTP | Códigos típicos | Acción |
|---|---|---|
400 | invalid_request, invalid_request_body | Corrige JSON o parámetros; no reintentes igual. |
401 | invalid_api_key | Revisa key, header, estado y expiración. |
403 | insufficient_quota o acceso rechazado | Revisa saldo, presupuesto y alcance de la key. |
404 | model_not_found | Copia el model ID actual y revisa el alcance de la key. |
413 | request_too_large | Reduce o divide el input. |
429 | rate_limit_exceeded, token_rate_limit_exceeded | Respeta retry-after y reduce concurrencia. |
502 | upstream_unreachable, upstream_error | Reintento limitado o prueba otro modelo. |
504 | upstream_request_timeout, otros timeouts upstream | Aumenta timeout del cliente, reintenta con límite o cambia de modelo. |
No registres el valor de la API key ni bodies sensibles al capturar un error.
Reintentos e idempotencia
- Reintenta solo fallos transitorios como
429,502y504. - Usa backoff exponencial, jitter y un máximo pequeño de intentos.
- No reintentes automáticamente
400,401,403,404o413sin cambiar la causa. - Chat Completions no documenta una key de idempotencia pública. Un retry puede generar otra completion y otro cargo.
- Para acciones de negocio, implementa idempotencia en tu aplicación antes de ejecutar el resultado del modelo.
Generación multimedia
NexoRouter también ofrece generación pública de imágenes, video asíncrono y síntesis de voz para los IDs multimedia devueltos por GET /v1/models.
Consulta APIs de imagen, video y voz para ver formatos de request, consulta de tareas, unidades de precio y límites.
CORS
La API pública responde a preflight CORS de navegador y permite GET, POST, PUT, PATCH, DELETE y OPTIONS. Expone estos headers al navegador:
x-request-idx-ratelimit-limitx-ratelimit-remainingretry-after
Streaming
Streaming no aparece como API pública verificada. Usa chat/completions sin streaming salvo que una página de NexoRouter documente explícitamente el comportamiento de streaming para tu cliente y modelo.
Embeddings
Embeddings no aparece como API pública verificada. Usa un proveedor separado de embeddings hasta que NexoRouter documente comportamiento del endpoint, modelos públicos, precios y Usage Logs.
Límites de endpoints
No asumas soporte para una familia de endpoints salvo que una página la documente explícitamente.
Familias que todavía no están documentadas como API pública estable:
- OpenAI Responses API
- Anthropic Messages API
- Gemini native API
- transcripción y traducción de audio
- generación de música