Documentación
SDKs de cliente compatibles en la documentación de NexoRouter.
SDKs de cliente compatibles
Estado: OpenAI SDK es estable para los endpoints documentados. Otros clientes son candidatos hasta completar una prueba.
NexoRouter no publica todavía un SDK propio. La integración recomendada es usar HTTP directo o un cliente OpenAI que permita configurar base_url, API key y model ID.
Elige un cliente
| Opción | Estado | Úsala cuando |
|---|---|---|
curl o fetch | Estable | Quieres ver el request exacto, depurar headers o reducir dependencias. |
| OpenAI SDK para Python | Estable para Chat Completions documentado | Tu servicio usa Python y quieres objetos tipados y manejo HTTP incluido. |
| OpenAI SDK para Node.js | Estable para Chat Completions documentado | Tu app usa Node.js o TypeScript. |
| SDKs OpenAI de otros lenguajes | Candidato | El cliente permite una base URL personalizada y conserva el endpoint /chat/completions. |
| Frameworks de agentes | Candidato | Ya verificaste chat básico y la combinación cliente/modelo que necesita tu agente. |
La palabra “compatible” no significa que todos los métodos de un SDK estén disponibles. NexoRouter solo garantiza los endpoints publicados en Referencia de API.
Configuración común
API key: una key creada en NexoRouter
Base URL: https://api.nexorouter.com/v1
Model: un ID actual desde Models o GET /v1/models
Método: Chat Completions
Guarda la key en el servidor. No la incluyas en JavaScript enviado al navegador, apps móviles distribuidas, repositorios, screenshots o logs.
Python
Instala el cliente:
python -m pip install --upgrade openai
export NEXOROUTER_API_KEY="your_nexorouter_key"
Crea main.py:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["NEXOROUTER_API_KEY"],
base_url="https://api.nexorouter.com/v1",
timeout=60.0,
max_retries=2,
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "system", "content": "Answer clearly and briefly."},
{"role": "user", "content": "Give me three checks before releasing an API integration."},
],
max_tokens=256,
)
print(response.choices[0].message.content)
print(response.usage)
Ejecuta:
python main.py
Node.js y TypeScript
Instala el cliente:
npm install openai
export NEXOROUTER_API_KEY="your_nexorouter_key"
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.NEXOROUTER_API_KEY,
baseURL: "https://api.nexorouter.com/v1",
timeout: 60_000,
maxRetries: 2,
});
const response = await client.chat.completions.create({
model: "deepseek-v4-flash",
messages: [
{ role: "system", content: "Answer clearly and briefly." },
{ role: "user", content: "Give me three checks before releasing an API integration." },
],
max_tokens: 256,
});
console.log(response.choices[0].message.content);
console.log(response.usage);
HTTP directo con fetch
Esta opción evita depender de métodos adicionales de un SDK:
const response = await fetch("https://api.nexorouter.com/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.NEXOROUTER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "deepseek-v4-flash",
messages: [{ role: "user", content: "Reply with: connected" }],
max_tokens: 32,
}),
});
const body = await response.json();
if (!response.ok) {
throw new Error(`${response.status} ${body?.error?.code ?? "api_error"}: ${body?.error?.message ?? "Request failed"}`);
}
console.log(body.choices[0].message.content);
Compatibilidad que debes comprobar
Antes de adoptar otro SDK, confirma:
- Permite cambiar la base URL.
- Envía
Authorization: Bearer .... - Usa
POST /v1/chat/completions, no solo/v1/responses. - Permite enviar el model ID exacto sin renombrarlo.
- Funciona sin streaming.
- Expone status HTTP, body de error y headers de rate limit.
Si el SDK crea requests de embeddings, Responses API, Anthropic Messages o Gemini nativo, esa parte no está cubierta por la compatibilidad actual.
Producción
- Crea una key distinta por entorno y servicio.
- Define presupuesto, expiración y alcance de modelos.
- Usa timeout y reintentos limitados solo para errores transitorios.
- Respeta
retry-afteren respuestas429. - Registra request ID, model ID y status, nunca la key o el prompt completo por defecto.
- Revisa Usage Logs para tokens, costo, latencia y errores.