Documentación
Chat Completions compatible con OpenAI en la documentación de NexoRouter.
Chat Completions compatible con OpenAI
Estado: API pública estable.
La ruta pública principal de NexoRouter es el endpoint compatible con OpenAI POST /v1/chat/completions. La mayoría de SDKs y herramientas deben empezar por aquí.
Úsala cuando
- Ya usas el SDK de OpenAI y quieres cambiar de proveedor con mínimos cambios.
- Una herramienta pide proveedor OpenAI-compatible, Custom OpenAI u OpenAI API.
- Tu app envía requests de chat de texto mediante
messages. - Quieres ver request ID, costo, latencia y estado del resultado en Usage Logs.
No uses esta página como prueba de soporte para Responses API, Claude nativo, Gemini nativo, embeddings, streaming, visión, imagen, video o audio.
Endpoint
Base URL: https://api.nexorouter.com/v1
Endpoint: POST /v1/chat/completions
Header: Authorization: Bearer YOUR_NEXOROUTER_API_KEY
Configuración de SDK
| Cliente | Campo de key | Campo de base URL |
|---|---|---|
Python openai | api_key | base_url |
Node.js openai | apiKey | baseURL |
| Herramientas con variables de entorno | OPENAI_API_KEY | OPENAI_BASE_URL |
| Clientes HTTP genéricos | Authorization: Bearer ... | URL completa del request |
Para herramientas que reutilizan nombres de variables de OpenAI:
export OPENAI_API_KEY="$NEXOROUTER_API_KEY"
export OPENAI_BASE_URL="https://api.nexorouter.com/v1"
Mantén esas variables limitadas al shell, servicio o proyecto que debe usar NexoRouter.
Request mínimo
curl https://api.nexorouter.com/v1/chat/completions \
-H "Authorization: Bearer $NEXOROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{ "role": "user", "content": "Write one short production checklist." }
],
"max_tokens": 256
}'
Regla de migración desde SDK de OpenAI
Cuando migres código existente del SDK de OpenAI, conserva la forma del request y cambia solo:
apiKey -> API key de NexoRouter
baseURL -> https://api.nexorouter.com/v1
model -> un model ID desde Models de NexoRouter
Python:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_NEXOROUTER_API_KEY",
base_url="https://api.nexorouter.com/v1",
)
Node.js:
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.NEXOROUTER_API_KEY,
baseURL: "https://api.nexorouter.com/v1",
});
Go:
package main
import (
"context"
"fmt"
"os"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey(os.Getenv("NEXOROUTER_API_KEY")),
option.WithBaseURL("https://api.nexorouter.com/v1"),
)
completion, err := client.Chat.Completions.New(
context.Background(),
openai.ChatCompletionNewParams{
Model: "deepseek-v4-flash",
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Write one short production checklist."),
},
},
)
if err != nil {
panic(err)
}
fmt.Println(completion.Choices[0].Message.Content)
}
.NET:
using OpenAI;
using OpenAI.Chat;
using System.ClientModel;
ChatClient client = new(
model: "deepseek-v4-flash",
credential: new ApiKeyCredential(
Environment.GetEnvironmentVariable("NEXOROUTER_API_KEY")
),
options: new OpenAIClientOptions
{
Endpoint = new Uri("https://api.nexorouter.com/v1")
}
);
ChatCompletion completion = client.CompleteChat("Write one short production checklist.");
Console.WriteLine(completion.Content[0].Text);
Otros lenguajes:
Usa un cliente OpenAI-compatible solo si permite configurar ambos:
api key = API key de NexoRouter
base URL = https://api.nexorouter.com/v1
Límite del request body
Empieza con los campos comunes de Chat Completions:
| Campo | Guía |
|---|---|
model | Usa un model ID exacto desde Models o GET /v1/models. |
messages | Envía mensajes de chat estilo OpenAI. |
temperature | Opcional. Mantén defaults en las primeras pruebas. |
max_tokens | Opcional. Usa un valor pequeño para checks de setup. |
stream | No dependas de streaming salvo que la página relevante documente soporte para tu cliente y modelo. |
tools | Verifica por modelo y herramienta antes de workflows agénticos en producción. |
Verifica
Después del primer request, abre Usage Logs y confirma API key, model ID, estado del resultado, tokens, costo, latencia y request ID.
Fallos comunes
| Fallo | Causa probable | Solución |
|---|---|---|
invalid_api_key | Key incorrecta, falta Bearer, key expirada, key disabled o key de otro servicio | Revisa key y base URL juntas. |
model_not_found | Typo en model ID o alcance de modelos de la key no incluye ese modelo | Copia el model ID desde Models y crea una key de reemplazo si el alcance es demasiado estrecho. |
insufficient_quota | Saldo de cuenta o presupuesto de key insuficiente | Agrega saldo o crea una key de reemplazo con el presupuesto correcto. |
| Timeout | Modelo lento, timeout corto del cliente, proxy de red o request grande | Aumenta el timeout del cliente o elige un modelo más rápido. |
Incorrecto vs correcto
| Incorrecto | Correcto |
|---|---|
Key de NexoRouter con https://api.openai.com/v1 | Key de NexoRouter con https://api.nexorouter.com/v1 |
Key de OpenAI con https://api.nexorouter.com/v1 | Key de NexoRouter con https://api.nexorouter.com/v1 |
| Key completa pegada en soporte | Nombre de key, últimos cuatro caracteres y request ID |