OneProvider

Chat Completions

Usa POST /v1/chat/completions con el formato de solicitud de OpenAI y obtén respuestas al estilo OpenAI de modelos Claude. Con ejemplos en Python y Node.

POST /v1/chat/completions acepta la forma de solicitud de OpenAI y devuelve la forma de respuesta de OpenAI. El ID del modelo es el único cambio necesario respecto a tu código actual de OpenAI.

Todos los modelos, capacidades y precios Índice de la documentación para agentes de IA: https://oneprovider.dev/docs/llms.txt

Solicitud

http
POST https://api.oneprovider.dev/v1/chat/completions
Authorization: Bearer sk-...
content-type: application/json
{
"model": "claude-sonnet-5-5",
"messages": [
{ "role": "system", "content": "You are concise." },
{ "role": "user", "content": "Why is the sky blue?" }
],
"max_tokens": 256,
"stream": false
}

Respuesta

La forma coincide 1:1 con OpenAI: id, choices[].message, usage.

json
{
"id": "chatcmpl_01...",
"object": "chat.completion",
"created": 1715472000,
"model": "claude-sonnet-5-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "Rayleigh scattering..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 48,
"completion_tokens": 92,
"total_tokens": 140
}
}

OpenAI SDK (Python)

python
from openai import OpenAI
client = OpenAI(
api_key="<OPENAI_API_KEY>",
base_url="https://api.oneprovider.dev/v1",
)
r = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Say hi."}],
)
print(r.choices[0].message.content)

OpenAI SDK (Node)

ts
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: "https://api.oneprovider.dev/v1",
});
const r = await client.chat.completions.create({
model: "claude-sonnet-5-5",
messages: [{ role: "user", content: "Say hi." }],
});
console.log(r.choices[0].message?.content);

Correspondencia de campos

Datos de referencia
Campo de OpenAIComportamiento en OneProvider
messagesSe reenvía; el rol system pasa al system de Anthropic.
max_tokensSe reenvía.
temperature, top_pSe reenvía.
tools, tool_choiceSe traduce a tools / tool_choice de Anthropic, con la misma normalización que en Uso de herramientas .
streamSe reenvía; emite fragmentos SSE de OpenAI (no eventos de Anthropic).
response_formatjson_object se respeta mediante una indicación en el prompt del sistema. El modo estricto json_schema se ignora por ahora.
logprobs, top_logprobsSe ignora: los modelos no los exponen.
seedSe ignora: no es compatible.
n > 1Devuelve una sola opción. Llama al endpoint N veces si necesitas N muestras.
Elige un formato de API y mantenlo Tanto /v1/chat/completions como /v1/messages llegan a los mismos modelos al mismo precio. Chat Completions adapta el formato de OpenAI al modelo; el endpoint nativo Messages se salta ese paso. Para proyectos nuevos recomendamos /v1/messages . Para migrar desde OpenAI, Chat Completions es el camino rápido.

Respuestas rápidas

¿Qué base URL uso?

Claude Code y los SDK de Anthropic usan https://api.oneprovider.dev. Los SDK de OpenAI y los clientes compatibles con OpenAI usan https://api.oneprovider.dev/v1. Una misma clave funciona con ambas; la lista de modelos está en la página de modelos y las tarifas, en la página de precios .

¿Cómo me autentico?

Envía la clave sk-… tal cual en x-api-key o en Authorization: Bearer: en uno de los dos, nunca en ambos. Guarda la clave en una variable de entorno, no en un archivo que se suba al repositorio. Más sobre la autenticación .

¿Dónde obtengo una clave?

Abre tu panel en el bot de Telegram @oneprovider_robot o en app.oneprovider.dev, recarga el saldo y pulsa “Emitir una clave”. Cada clave puede tener su propio límite de gasto. Panel y claves de API .

¿Qué significan 401, 404 y 429?

401: falta la clave, está mal escrita o se envió en un encabezado equivocado; pega la clave completa, sin comillas ni espacios. 404: casi siempre es una base URL incorrecta, por ejemplo con /v1 ausente o duplicado. 429 con “Insufficient balance”: se agotó el saldo del panel o el límite de gasto de la clave, así que recarga en lugar de reintentar; cualquier otro 429 es un límite de frecuencia, así que espera según Retry-After. Detalles: códigos de error y solución de problemas .

¿Por qué se cortan o se reinician los streams?

Las VPN y los proxies VLESS suelen almacenar SSE en búfer o romper la negociación de HTTP/2. OneProvider no tiene restricciones regionales y no almacena los streams en búfer: desactiva el proxy y reintenta.

¿Dónde pregunto si esto no basta?

Escribe a @Oneproviderhelpbot en Telegram o abre “Soporte” en el panel web, con el código de estado HTTP y el mensaje de error exacto. Cómo funciona el soporte .

Última actualización: 2026-11-08 ¿Encontraste un error? @Oneproviderhelpbot