Chat
Anthropic Messages y Claude Code
Los modelos Claude también hablan la Messages API de Anthropic, así que los SDK de Anthropic, Claude Code y todo lo creado para ellos funcionan con una nueva URL base y una nueva clave.
/v1/messagesURL base https://api.zurelay.com (los SDK añaden /v1/messages). Envía la clave como x-api-key o Authorization: Bearer, con anthropic-version: 2023-06-01. Aquí solo se sirven modelos Claude; los demás modelos usan /v1/chat/completions.
Con los SDK de Anthropic
import osimport anthropicclient = anthropic.Anthropic( base_url="https://api.zurelay.com", api_key=os.environ["ZURELAY_API_KEY"],)message = client.messages.create( model="claude-opus-5-5", max_tokens=1024, system="You are a careful code reviewer.", messages=[{"role": "user", "content": "Review this function: def add(a, b): return a - b"}],)print(message.content[0].text)Todo lo de la Messages API de Anthropic pasa tal cual (excepto metadata, que se queda con nosotros): system como cadena o como bloques (con cache_control para la caché de prompt), tools, thinking, output_config, stop_sequences, temperature, streaming con los mismos eventos y cabeceras anthropic-beta. Las imágenes y los PDF entran como bloques image y document: consulta Imágenes, PDF, audio y vídeo. Anthropic rechaza temperature, top_p y top_k en Claude desde Opus 4.7, así que en esos modelos los omitimos de la solicitud en lugar de hacer que falle.
Razonamiento
Claude razona de forma adaptativa: decide cuánto necesita cada solicitud, y output_config.effort define cuánto esfuerzo pone: low, medium, high, xhigh (extra alto) o max. Añade display: "summarized" a thinking para recibir un resumen del razonamiento en bloques thinking.
import osimport anthropicclient = anthropic.Anthropic( base_url="https://api.zurelay.com", api_key=os.environ["ZURELAY_API_KEY"],)message = client.messages.create( model="claude-opus-5-5", max_tokens=32000, thinking={"type": "adaptive", "display": "summarized"}, output_config={"effort": "xhigh"}, messages=[{"role": "user", "content": "How many primes are there below 1,000?"}],)for block in message.content: print(block.thinking if block.type == "thinking" else block.text)- Claude Opus 5.5 y los modelos Fable siempre razonan: Opus 5.5 a
mediumsalvo que fijes un nivel, Fable ahigh. Si se les pide no razonar, funcionan alow. - Claude Sonnet 5.5 y Opus 5 razonan a
highpor defecto, y Claude Haiku 5.5 amedium. De Opus 4.6 a 4.8 solo razonan cuando envíasthinking. Opus 4.6 no tienexhigh, así que funciona ahigh. - La forma antigua,
thinking: { type: "enabled", budget_tokens }, funciona en todos los modelos Claude: los que la rechazan razonan de forma adaptativa al nivel más cercano. Claude Haiku 4.5 solo acepta esa forma, y recibe un presupuesto cuando envías razonamiento adaptativo. - El razonamiento se factura como tokens de salida, así que deja espacio para él en
max_tokensaxhighymax, y usa streaming en las respuestas largas. Cuando fijas un nivel, la cabecerax-zurelay-reasoning-effortindica cuál se usó.
Caché de prompts
La caché funciona como en Anthropic: pon cache_control en los bloques que quieras cachear, o en toda la solicitud, para conservarlos cinco minutos, o añade "ttl": "1h" para conservarlos una hora. Cada parte de la entrada se factura como la factura Anthropic:
Los dos tipos de escritura están en usage.cache_creation, y cache_creation_input_tokens es ambos juntos. Cada página de modelo muestra sus precios de caché. Solo se factura como escritura lo que pides cachear: una solicitud sin cache_control paga el precio de entrada por todo lo que no lee de la caché, y la entrada que pediste conservar cinco minutos nunca se factura como de una hora.
Claude Code
Apunta Claude Code a Zurelay con cinco variables de entorno (la URL base, tu clave y los tres alias de modelo) y ejecútalo como de costumbre:
export ANTHROPIC_BASE_URL="https://api.zurelay.com"export ANTHROPIC_AUTH_TOKEN="$ZURELAY_API_KEY"export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5-5"export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-5-5"claudePara conservarlo, pon los mismos valores en el bloque env de ~/.claude/settings.json. La guía completa, y las guías para Cursor, Cline y otros, están en Integraciones.
Los niveles /effort de Claude Code llegan al modelo como output_config.effort, así que xhigh y max funcionan como en Anthropic. Ultracode es un ajuste de Claude Code, no un nivel de esfuerzo: funciona al nivel de la sesión (xhigh cuando inicias Claude Code con --effort ultracode).
Contar tokens
/v1/messages/count_tokensAcepta el mismo cuerpo que /v1/messages y devuelve { "input_tokens": 1234 }, una estimación de lo que contaría la solicitud. Gratis.
Errores
Los errores vuelven con el formato de Anthropic ({ "type": "error", "error": { "type", "message" } }), con los mismos significados que en la página de errores. No llevan code: usa el estado HTTP y error.type.
/v1/chat/completions. Envía uno a /v1/messages y el error indicará qué endpoint usar. La tabla de Imágenes, PDF, audio y vídeo muestra qué lee cada modelo.- Consejo: El contador de tokens de Anthropic y el nuestro pueden variar ligeramente; lo que se factura es el uso que aparece en la respuesta.
¿Tienes dudas o falta algo? Escribe a nuestro equipo de soporte y te responderemos por email, normalmente en menos de un minuto.