Anthropic Messages
POST /v1/messages habla el formato Anthropic Messages, así que los SDK de Anthropic y las herramientas construidas sobre ellos —entre ellas Claude Code— funcionan con solo cambiar la URL base y la clave. Todos los modelos de texto responden en él, no solo Claude.
Una solicitud
El Anthropic SDK agrega /v1/messages por su cuenta, así que su URL base no lleva /v1:
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
baseURL: "https://api.inferray.com",
apiKey: process.env.INFERRAY_API_KEY,
});
const message = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
system: "You are a concise assistant.",
messages: [{ role: "user", content: "Explain idempotency in one paragraph." }],
});
console.log(message.content[0].text);
import os
import anthropic
client = anthropic.Anthropic(base_url="https://api.inferray.com", api_key=os.environ["INFERRAY_API_KEY"])
message = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
messages=[{"role": "user", "content": "Explain idempotency in one paragraph."}],
)
print(message.content[0].text)
curl https://api.inferray.com/v1/messages \
-H "x-api-key: $INFERRAY_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-8",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Explain idempotency in one paragraph."}]
}'
La clave va en x-api-key o en Authorization: Bearer; ambos funcionan.
Qué se mantiene
La solicitud y la respuesta siguen el formato Anthropic: max_tokens es obligatorio, system es un campo de nivel superior y el contenido es una lista de bloques tipados.
- Tools —
toolsconinput_schema, bloquestool_useen la respuesta y bloquestool_resulten tu siguiente turno. Consulta tool calling. - Imágenes y PDF — bloques
imageydocument, como fuentes base64 o URL, en los modelos que los aceptan. Consulta visión y documentos. - Extended thinking —
thinkingconbudget_tokensen los modelos que razonan. Consulta razonamiento. - Prompt caching —
cache_controlen los bloques de contenido. Consulta prompt caching. - Streaming —
stream: truedevuelve el stream de eventos de Anthropic (message_start,content_block_delta,message_stop). Consulta streaming.
El uso se devuelve en los campos de Anthropic: input_tokens, output_tokens, cache_read_input_tokens y cache_creation_input_tokens.
Modelos que no son de Claude
Aquí puedes llamar a cualquier modelo de texto —gpt-5.5, gemini-3.6-flash, kimi-k2.6—, y eso es lo que permite que Claude Code y otras herramientas nativas de Anthropic los usen. Las funciones que un modelo no tiene, como extended thinking en un modelo que no razona, se rechazan o se ignoran en lugar de imitarse.
Errores
Los errores se devuelven con la estructura de Anthropic, {"type": "error", "error": {"type": "...", "message": "..."}}, así que el SDK lanza sus excepciones habituales. Los códigos de estado significan lo mismo que en cualquier otro lugar — consulta errores.