Chat Completions
POST /v1/chat/completions es el endpoint de texto compatible con OpenAI, y el que hablan la mayoría de los SDK, frameworks y herramientas. Todos los modelos de texto del catálogo responden en él —incluidos Claude, Gemini y los modelos open-weight—, así que una sola estructura de request sirve para todos.
Un request
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.inferray.com/v1",
apiKey: process.env.INFERRAY_API_KEY,
});
const completion = await client.chat.completions.create({
model: "claude-sonnet-4-6",
messages: [
{ role: "system", content: "You are a concise assistant." },
{ role: "user", content: "Name three uses for a quartz crystal." },
],
max_tokens: 300,
});
console.log(completion.choices[0].message.content);
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.inferray.com/v1", api_key=os.environ["INFERRAY_API_KEY"])
completion = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "Name three uses for a quartz crystal."},
],
max_tokens=300,
)
print(completion.choices[0].message.content)
Messages
messages es la conversación completa, de la más antigua a la más reciente. El endpoint no guarda estado entre llamadas, así que envía cada vez el historial que quieres que vea el modelo.
| Rol | Úsalo para |
|---|---|
system o developer | Instrucciones que enmarcan la conversación. |
user | Lo que dijo la persona. content es un string o un array de partes para imágenes y documentos. |
assistant | Las respuestas anteriores del modelo, incluidas las tool_calls que haya hecho. |
tool | El resultado de una llamada a herramienta, con el tool_call_id correspondiente. |
Parámetros
| Parámetro | Qué hace |
|---|---|
model | Obligatorio. Un ID de modelo del catálogo. |
messages | Obligatorio. La conversación. |
max_tokens / max_completion_tokens | Límite de la longitud de la respuesta. Mantenlo dentro del max_output_tokens del modelo. |
temperature, top_p | Muestreo. Cuanto más bajo, más determinista. Algunos modelos de razonamiento los ignoran o los rechazan. |
stop | Uno o más strings que terminan la generación. |
stream | true para recibir los tokens a medida que se generan; consulta streaming. |
tools, tool_choice | Funciones que el modelo puede llamar; consulta llamadas a herramientas. |
response_format | Modo JSON o un esquema JSON; consulta salidas estructuradas. |
reasoning_effort | Cuánto piensa un modelo de razonamiento; consulta razonamiento. |
Los parámetros se pasan al modelo tal como los envías. Un modelo que no admite alguno puede ignorarlo o devolver un 400 que lo indique; la página del modelo muestra lo que admite.
La respuesta
{
"id": "chatcmpl-8f2c...",
"object": "chat.completion",
"created": 1767225600,
"model": "claude-sonnet-4-6",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "1. Oscillators in watches..." },
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 31,
"completion_tokens": 64,
"total_tokens": 95,
"prompt_tokens_details": { "cached_tokens": 0 },
"completion_tokens_details": { "reasoning_tokens": 0 },
"cost": 0.001053,
"cost_details": { "input_cost": 0.000093, "output_cost": 0.00096, "total_cost": 0.001053 }
}
}
finish_reason es stop cuando el modelo terminó, length cuando alcanzó max_tokens, tool_calls cuando quiere el resultado de una herramienta y content_filter cuando el modelo se negó. model es siempre el ID que pediste.
usage es aquello por lo que se factura la solicitud: tokens de entrada, tokens de salida y, cuando corresponde, tokens en caché y de razonamiento. usage.cost es el importe cobrado por esta solicitud en dólares estadounidenses, con tu descuento ya aplicado, y cost_details lo desglosa. Consulta uso y costos para ver los campos de cada endpoint.
Otros SDK y lenguajes
Todo lo que hable el formato OpenAI funciona con la URL base https://api.inferray.com/v1: los SDK oficiales de OpenAI en todos los lenguajes, el Vercel AI SDK, LangChain, LlamaIndex y HTTP directo.