Saltar al contenido

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 — tools con input_schema, bloques tool_use en la respuesta y bloques tool_result en tu siguiente turno. Consulta tool calling.
  • Imágenes y PDF — bloques image y document, como fuentes base64 o URL, en los modelos que los aceptan. Consulta visión y documentos.
  • Extended thinking — thinking con budget_tokens en los modelos que razonan. Consulta razonamiento.
  • Prompt caching — cache_control en los bloques de contenido. Consulta prompt caching.
  • Streaming — stream: true devuelve 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.