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ónEstadoÚsala cuando
curl o fetchEstableQuieres ver el request exacto, depurar headers o reducir dependencias.
OpenAI SDK para PythonEstable para Chat Completions documentadoTu servicio usa Python y quieres objetos tipados y manejo HTTP incluido.
OpenAI SDK para Node.jsEstable para Chat Completions documentadoTu app usa Node.js o TypeScript.
SDKs OpenAI de otros lenguajesCandidatoEl cliente permite una base URL personalizada y conserva el endpoint /chat/completions.
Frameworks de agentesCandidatoYa 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:

  1. Permite cambiar la base URL.
  2. Envía Authorization: Bearer ....
  3. Usa POST /v1/chat/completions, no solo /v1/responses.
  4. Permite enviar el model ID exacto sin renombrarlo.
  5. Funciona sin streaming.
  6. 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-after en respuestas 429.
  • 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.

Siguiente

SDKs de cliente compatibles — NexoRouter