Documentación

Documentación

Claude Code

Claude Code trata cualquier endpoint en formato Anthropic como una pasarela. Dos variables lo dirigen a Kunavo, otras tres fijan los modelos que ofrece Kunavo, la instalación no se modifica y cada sesión se factura por token con cargo a tu saldo en lugar de a una suscripción.

Dos variables de entorno — ANTHROPIC_BASE_URL y ANTHROPIC_AUTH_TOKEN — trasladan Claude Code a un modelo de pago por uso sin cambiar la instalación.

# One terminal session
export ANTHROPIC_BASE_URL=https://api.kunavo.com   # origin, no /v1
export ANTHROPIC_AUTH_TOKEN=sk-kn-...

# Pin models Kunavo serves. Claude Code's default and its opus/sonnet aliases
# follow Anthropic's newest models; the sonnet alias asks for Sonnet 5.5,
# which Kunavo does not serve — unpinned, /model sonnet 404s.
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

claude
ANTHROPIC_BASE_URL es el origen. Claude Code añade /v1/messages por su cuenta; el fragmento de verificación oficial de Anthropic es curl "$ANTHROPIC_BASE_URL/v1/messages". Por eso, un valor que termine en /v1 genera solicitudes a /v1/v1/messages y devuelve 404. Este es el fallo de configuración más habitual; la página de ANTHROPIC_BASE_URL cubre los demás.
Fija los modelos. El modelo predeterminado integrado de Claude Code es el Opus más reciente (Opus 5.5 en septiembre de 2026, según la documentación de configuración de modelos de Anthropic), y un modelo que Kunavo aún no ofrece devuelve 404 en la primera solicitud. El alias sonnet solicita Sonnet 5.5, que Kunavo no ofrece, por lo que /model sonnet devuelve 404 a menos que también se fije. ANTHROPIC_MODEL establece el modelo de la sesión; ANTHROPIC_DEFAULT_OPUS_MODEL cubre /model opus (Opus 5.5 requiere Claude Code v2.1.280 o posterior), ANTHROPIC_DEFAULT_SONNET_MODEL cubre /model sonnet, y ANTHROPIC_DEFAULT_HAIKU_MODEL las llamadas en segundo plano. Funciona cualquier ID de GET /v1/models.
Usa ANTHROPIC_AUTH_TOKEN, no ANTHROPIC_API_KEY. Las dos variables eligen una cabecera: AUTH_TOKEN envía Authorization: Bearer, y API_KEY envía x-api-key. Kunavo acepta ambas, pero API_KEY requiere una solicitud de aprobación única en una sesión interactiva antes de surtir efecto; AUTH_TOKEN no.
¿Prefieres no editar las variables de entorno manualmente? CC Switch puede guardar Kunavo como proveedor de Claude Code; usa la misma raíz del servicio y la misma clave bearer que se indicaron arriba. La configuración campo por campo está en la página de CC Switch.
¿Aún no tienes una clave? Crea una cuenta de Kunavo, genera una clave (empieza por sk-kn-) y añade crédito desde $10; las llamadas se pagan con ese saldo y las llamadas fallidas no se facturan. El panel se abre entonces en la configuración de Claude Code.

Paso a paso

  1. Cree una clave en /app/keys y cópiela: se muestra una sola vez.
  2. Exporta las variables anteriores para la sesión o persístelas en el bloque env de ~/.claude/settings.json: {"env":{"ANTHROPIC_BASE_URL":"https://api.kunavo.com","ANTHROPIC_AUTH_TOKEN":"sk-kn-...","ANTHROPIC_MODEL":"claude-sonnet-5","ANTHROPIC_DEFAULT_OPUS_MODEL":"claude-opus-5-5","ANTHROPIC_DEFAULT_SONNET_MODEL":"claude-sonnet-5","ANTHROPIC_DEFAULT_HAIKU_MODEL":"claude-haiku-4-5"}}. La documentación de Anthropic indica explícitamente que la credencial no debe incluirse en el archivo .claude/settings.json de un proyecto, ya que ese archivo se confirma en el repositorio.
  3. Ejecuta claude y abre la pestaña Status. Una línea que nombre Auth token confirma que la credencial de la pasarela está activa; si una línea Login method nombra una cuenta de claude.ai, significa que no se recogió la variable.
  4. Para la extensión de VS Code, las variables deben ir en claudeCode.environmentVariables en la configuración de usuario de VS Code; la extensión comprueba las credenciales antes de iniciarse, así que ~/.claude/settings.json llega al proceso iniciado, pero no a esa comprobación.

Comprobado con «Conectar Claude Code a una pasarela de LLM» de Anthropic el 3 de octubre de 2026. La configuración de terceros puede cambiar; si el nombre de un campo ya no coincide con lo que ves, esa página es la autoridad, no esta.

Esta es la versión breve. El tutorial completo —elección del modelo, coste de una sesión real y modos de fallo— está en la guía de claves de API de Claude Code.

Verifica antes de depurar el cliente

Una solicitud determina si el fallo está en el endpoint, la clave o el archivo de configuración. Si devuelve JSON, la misma URL base y la misma clave funcionan en Claude Code.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer sk-kn-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'

Qué ID de modelo introducir en el campo

Todos los modelos de texto están disponibles mediante un ID de modelo; la lista activa está en GET /v1/models, y el catálogo con precios está en la página de modelos. Las tarifas son USD por 1M de tokens, entrada / salida.

ID de modeloEntrada / salida de KunavoDónde encaja en Claude Code
claude-sonnet-5$1.40 / $7.00el modelo de trabajo predeterminado, que se define con /model o ANTHROPIC_MODEL
claude-opus-5-5$2.80 / $14.00planificación y ediciones a nivel de arquitectura
claude-haiku-4-5$0.70 / $3.50el nivel pequeño y rápido que Claude Code usa para el trabajo en segundo plano
claude-fable-5$7.00 / $35.00el nivel de vanguardia, para los planes que justifican su tarifa
La facturación es por token desde un saldo prepago, sin cuota mensual; consulta facturación. Con contexto repetido —que constituye la mayor parte de lo que envía un editor o cliente de chat—, la caché de indicaciones cambia más la factura que la elección del modelo.

Preguntas frecuentes

¿Cómo uso Claude Code sin una suscripción a Claude?

Define ANTHROPIC_BASE_URL con un endpoint en formato Anthropic y ANTHROPIC_AUTH_TOKEN con la clave de ese endpoint; fija ANTHROPIC_MODEL en un modelo que ofrezca el endpoint, ya que quizá el valor predeterminado integrado de Claude Code no esté disponible. Claude Code se autentica entonces con el endpoint en lugar de con claude.ai, y quien posea esa credencial factura el uso por token, en vez de cargarlo a un plan de suscripción. Anthropic documenta esto como modo de pasarela; el inicio de sesión guardado en claude.ai permanece en el disco, sin usarse, y vuelve a utilizarse en cuanto se desactivan las variables.

¿ANTHROPIC_BASE_URL debe incluir /v1?

No. Claude Code añade la ruta por su cuenta, así que la variable debe contener el origen: https://api.kunavo.com, no https://api.kunavo.com/v1. El comando de verificación oficial de Anthropic es curl "$ANTHROPIC_BASE_URL/v1/messages", que muestra directamente la concatenación. Si la URL base ya termina en /v1, las solicitudes se envían a /v1/v1/messages y devuelven 404.

¿Cuál es la diferencia entre ANTHROPIC_AUTH_TOKEN y ANTHROPIC_API_KEY?

Se incluyen las credenciales en cabeceras HTTP distintas: ANTHROPIC_AUTH_TOKEN envía Authorization: Bearer, mientras que ANTHROPIC_API_KEY envía x-api-key. Una clave en la variable equivocada llega al endpoint en una cabecera que este no lee, y la solicitud falla con 401. Si la documentación de una pasarela dice «token bearer», usa ANTHROPIC_AUTH_TOKEN; si dice «clave de API» o «x-api-key», usa ANTHROPIC_API_KEY.

¿Qué funciones de Claude Code dejan de funcionar con una URL base personalizada?

Remote Control y el dictado por voz necesitan una identidad de claude.ai y no están disponibles mientras haya una credencial de pasarela definida; además, Remote Control se desactiva siempre que ANTHROPIC_BASE_URL apunte a un host que no sea de Anthropic. La comprobación de disponibilidad del modo rápido también se conecta directamente a api.anthropic.com en lugar de seguir la URL base. Todo lo que forma parte del bucle principal —el agente, las herramientas, los subagentes y los servidores MCP— funciona con la API de Messages y no se ve afectado.