SUB&SUB · Docs
Idioma
Tema

Referencia de la API

SUB&SUB expone un relay multiproveedor en https://api.subnsub.com/v1. Los clientes de OpenAI llaman a /v1/chat/completions; los clientes de Anthropic llaman a /v1/messages. La misma clave sk-cf-... enruta ambos — elige el modelo en el cuerpo de la solicitud y el relay elige el upstream.

Disponibilidad del servicio

Solo cuentas existentes El acceso a la API está limitado actualmente a las cuentas creadas antes del 8 de junio de 2026 (hora de Pekín). Las nuevas cuentas pueden usar la cuenta compartida y SUB&SUB Tools, pero no pueden entrar en la consola de la API, crear una clave, añadir saldo para la API ni llamar al relay. Esta sección se actualizará cuando vuelva a abrirse el acceso a la API.

Inicio rápido

Para una cuenta existente con acceso a la API necesitas tres cosas:

  1. URL base: https://api.subnsub.com/v1 (clientes de OpenAI) o https://api.subnsub.com (clientes de Anthropic — el SDK añade /v1/messages por sí mismo)
  2. Clave API: sk-cf-... emitida desde la consola
  3. Model: uno de los 16 modelos compatibles, p. gpt-5.4-mini o claude-sonnet-5

Autenticación

Cada solicitud debe llevar una cabecera Authorization: Bearer sk-cf-.... Las claves se emiten desde la consola y se almacenan como hashes SHA-256 — una vez que abandonas la pantalla de creación, el texto plano desaparece para siempre, así que guárdalo de inmediato.

Consejo Genera una clave por integración (chatbot, plugin de IDE, trabajo por lotes). Revocar una clave filtrada en la consola surte efecto en cuestión de segundos.

Endpoints

La superficie pública estable se describe a continuación y en el documento OpenAPI 3.1 legible por máquinas. Los campos no enumerados pueden enviarse al proveedor, pero no pasan automáticamente a formar parte del contrato de compatibilidad de SUB&SUB.

POST /v1/chat/completions

POST/v1/chat/completions

Envía una solicitud de chat completion. La forma de la solicitud coincide con la API de Chat Completions de OpenAI — los SDK de OpenAI funcionan sin modificaciones.

ParámetroTipoDescripción
modelstringUno de los IDs de modelo verificados.
messagesarrayHistorial de la conversación. Cada elemento: {role, content} con rolesystem / user / assistant.
streambooleanSi es true, la respuesta se envía como fragmentos SSE. Consulta Streaming.
stream_optionsobjectOpcional. El relay siempre fuerza {include_usage: true} en el upstream para que el fragmento final lleve el bloque de uso de tokens — sobrescribirlo no tiene efecto.
max_tokensintegerLimita la longitud de la respuesta. Por defecto, el máximo del modelo.
temperaturenumber0 – 2. Más alto = más aleatorio.

POST /v1/responses

POST/v1/responses

OpenAI Responses API: la forma de solicitud OpenAI más nueva (client.responses.create(...)). Funciona con todos los modelos de catálogo: gpt-* de forma nativa, claude-* a través del mismo puente de compatibilidad que chat/compleciones. El uso se mide de manera idéntica: tokens de entrada/salida según la tasa de nivel del modelo.

ParámetroTipoDescripción
modelstringCualquier modelo de catálogo ID.
inputstring | arrayEl mensaje: una cadena simple o la lista de elementos estructurados que define Responses API.
max_output_tokensintegerLimita la longitud de la respuesta (razonamiento + resultado visible combinados).
reasoningobject{"effort": "..."}: los mismos cinco valores que reasoning_effort.
streambooleanSi es true, transmite la secuencia estándar de Respuestas SSE: response.created, response.output_text.delta,…, response.completed.
backgroundbooleanNo compatible. background: true devuelve 400 unsupported_background_mode: el relé solo sirve ejecuciones sincrónicas.
Aviso El sufijo de búsqueda web :online no tiene ningún efecto en este punto final: el sufijo se elimina pero no se inyecta ningún contexto de búsqueda (las consultas se extraen de messages, que las solicitudes de Respuestas no llevan). Utilice /v1/chat/completions o /v1/messages para búsqueda web.

Ejemplo ejecutable de Responses:

curl https://api.subnsub.com/v1/responses \
  -H "Authorization: Bearer sk-cf-xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini",
    "input": "Explain exponential backoff in two sentences."
  }'

POST /v1/messages

POST/v1/messages

Endpoint nativo de Anthropic para los modelos claude-* — el SDK de Anthropic (anthropic-sdk-python, @anthropic-ai/sdk, claude-code) funciona sin modificaciones contra esta ruta. Apunta tu URL base a https://api.subnsub.com y autentícate mediante la cabecera x-api-key (la forma Authorization-Bearer también funciona, si tu cliente lo prefiere).

ParámetroTipoDescripción
modelstringUn ID de modelo claude-* (consulta Modelos disponibles). Pasar aquí un modelo de OpenAI devuelve 400 invalid_request_error.
max_tokensintegerRequerido por Anthropic — limita la longitud de la respuesta del asistente.
messagesarrayHistorial de la conversación, forma de Anthropic: {role, content} con roleuser / assistant.
streambooleanSi es true, devuelve la secuencia estándar de eventos SSE de Anthropic: message_start, content_block_delta, message_delta, message_stop.
thinkingobjectReenviado textualmente a Anthropic. Utilice {"type":"adaptive"} donde sea compatible; Fable 5 siempre utiliza el pensamiento adaptativo incluso cuando se omite este campo. No hay ID de modelo -thinking sintéticos.
cache_controlobjectEl prompt-caching está soportado. Los tokens de escritura en caché se facturan a 1.25× y los de lectura en caché a 0.10× la tarifa de entrada del tier.
Aviso Claude solicitudes son atendidas directamente por Anthropic cuentas oficiales. Utilice las identificaciones de modelo oficiales exactas que se enumeran a continuación.

Ejemplo ejecutable de Anthropic Messages:

curl https://api.subnsub.com/v1/messages \
  -H "x-api-key: sk-cf-xxxxxxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

POST /v1/messages/count_tokens

POST/v1/messages/count_tokens

Cuenta un prompt con formato Anthropic antes de enviarlo. Usa los mismos campos x-api-key, anthropic-version, model, system, messages y tools que enviarías a /v1/messages. Este endpoint no se factura. Se elimina el sufijo :online, pero no se obtienen ni se cuentan resultados de búsqueda.

curl https://api.subnsub.com/v1/messages/count_tokens \
  -H "x-api-key: sk-cf-xxxxxxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Count this prompt."}]
  }'

GET /v1/models

GET/v1/models

Enumere los modelos que realmente puede utilizar. El relé verifica el estado de ambas familias ascendentes y devuelve las 16 identificaciones públicas verificadas, la misma lista blanca que aplican los puntos finales POST, por lo que el descubrimiento nunca anuncia un modelo que sería 400. Si no se puede acceder al catálogo ascendente, el punto final devuelve 502 models_unreachable en lugar de una lista vacía engañosa.

# sample response (truncated)
{
  "object": "list",
  "data": [
    { "id": "gpt-5.4-mini",      "type": "model", ... },
    { "id": "gpt-5.4",           "type": "model", ... },
    { "id": "claude-sonnet-5",     "type": "model", ... },
    { "id": "claude-fable-5",      "type": "model", ... },
    ...
  ]
}

Contrato de compatibilidad

Ser compatible con OpenAI no garantiza todos los campos de todos los modelos upstream en cada ruta. Hay tres niveles de soporte:

EstadoDetalle
Documentado y estableGeneración de texto en los cuatro endpoints anteriores; respuestas síncronas y en streaming; controles de razonamiento documentados; caché de prompts de Anthropic; :online en Chat Completions y Messages; autenticación, medición y formatos de error documentados.
Reenvío, depende del modeloLlamadas a herramientas/funciones, herramientas estrictas, salida estructurada / JSON Schema, controles de muestreo, secuencias de parada, contenido multipartes (incluidas imágenes o documentos) y límites de contexto/salida. El edge reenvía estos campos sin validación local, pero el soporte y la forma exacta de la respuesta varían según modelo y protocolo. Prueba el modelo y payload exactos antes de producción; no se promete normalización entre proveedores.
No disponibleEjecuciones de Responses en segundo plano; :online en Responses; APIs de OpenAI para generación de imágenes, audio, Realtime, Batch, Files, Embeddings y Moderation; alias Claude sintéticos con -thinking; y el esfuerzo de razonamiento minimal de OpenAI.
Consejo Considera openapi.json junto con esta página como el contrato admitido. Un campo aceptado hoy por un proveedor puede desaparecer allí sin convertirse en una garantía permanente de SUB&SUB.

Modelos disponibles

Dos familias río arriba. Los 7 modelos OpenAI se dirigen a cuentas compartidas del nivel ChatGPT; los 9 modelos Claude son atendidos por cuentas oficiales Anthropic. Las tarifas por token dependen del nivel (consulte Pricing): la misma clave funciona para ambos.

OpenAI

ID del modeloFamiliaTierNotas
gpt-5.4-mini GPT-5.4Mini Rápido y barato. Predeterminado recomendado para chat y programación.
gpt-5.4 GPT-5.4StandardGPT-5.4 de tamaño completo — más lento, razonamiento más potente.
gpt-5.4-2026-03-05GPT-5.4StandardSnapshot fechado de gpt-5.4.
gpt-5.5 GPT-5.5Premium Buque insignia más reciente.
gpt-5.6-luna GPT-5.6Luna Ligero GPT-5.6: entre Mini y Estándar.
gpt-5.6-terra GPT-5.6StandardTamaño mediano GPT-5.6: la misma tarifa que gpt-5.4.
gpt-5.6-sol GPT-5.6Premium Arriba GPT-5.6: la misma tarifa que gpt-5.5.

Anthropic

ID del modeloFamiliaTierNotas
claude-fable-5 Fable 5 Fable El modelo más capaz y ampliamente lanzado de Anthropic; El pensamiento adaptativo siempre está activo.
claude-haiku-4-5-20251001 Haiku 4.5 Mini El Claude más pequeño — misma tarifa por token que gpt-5.4-mini.
claude-sonnet-4-5-20250929 Sonnet 4.5 StandardClaude de tier medio — misma tarifa por token que gpt-5.4.
claude-sonnet-4-6 Sonnet 4.6 StandardAjuste más reciente de Sonnet — tier Standard, misma tarifa que sonnet-4.5.
claude-sonnet-5 Sonnet 5 Sonnet 5 IntroÚltimo Sonnet; El precio de lanzamiento se aplica hasta el 31 de agosto de 2026.
claude-opus-4-5-20251101 Opus 4.5 Ultra Claude de frontera. Facturado al precio de lista de Anthropic — sin margen (consulta Precios).
claude-opus-4-6 Opus 4.6 Ultra Ajuste más reciente de Opus.
claude-opus-4-7 Opus 4.7 Ultra Snapshot anterior de Opus.
claude-opus-4-8 Opus 4.8 Ultra Último snapshot de Opus.
Aviso El catálogo Claude utiliza ID de modelo oficiales Anthropic. Se admite el almacenamiento en caché rápido: el caché escribe la factura a 1,25 × y lee a 0,10 × la tasa de entrada del nivel (consulte Precios).
Fable negativas Fable 5 clasificadores de seguridad pueden devolver HTTP 200 con stop_reason: "refusal" y una matriz de contenido vacía. Los clientes deben bifurcarse en stop_reason, no solo en el estado HTTP, y volver a intentar la solicitud con claude-opus-4-8. A través de los puntos finales del protocolo OpenAI, el mismo resultado se expone como finish_reason: "content_filter" (chat/finalizaciones) o status: "incomplete" con incomplete_details.reason: "content_filter" (respuestas). Los rechazos en el momento oportuno no se deducen de su saldo; un rechazo a mitad de camino después de una producción parcial se factura normalmente.
No disponible Los ID de OpenAI retirados (gpt-5.2* y gpt-5.3-codex*), el alias simple gpt-5.6 (use las variantes nombradas arriba), las variantes OpenAI Pro/image/audio/en tiempo real, los ID de notación de puntos (por ejemplo, claude-sonnet-4.5) y los ID de modelo sintéticos -thinking no están disponibles. Utilice los ID exactos anteriores y el campo thinking nativo de Anthropic.

Esfuerzo de razonamiento

Cada modelo OpenAI anterior es un modelo de razonamiento: el backend puede gastar más o menos tokens de "pensamiento" antes de emitir resultados visibles. Establezca reasoning_effort en el cuerpo de la solicitud OpenAI /v1/chat/completions (o reasoning: {"effort": ...} en /v1/responses) para controlar el presupuesto. Para Claude, utilice los campos Anthropic nativos thinking y output_config.effort; consulte la sección /v1/messages. Los modelos OpenAI aceptan los mismos cinco valores de esfuerzo:

ValorComportamiento
none Sin pensamiento — directo a la respuesta. El más barato y rápido.
low Una pasada de razonamiento breve.
medium Predeterminado si no pasas el campo. Equilibrado.
high Razonamiento más profundo. Recomendado para programación no trivial / problemas de varios pasos.
xhigh Esfuerzo máximo. El más lento y caro; resérvalo para análisis difíciles donde realmente lo necesites.
# Two equivalent forms — pick whichever your SDK supports
{
  "model": "gpt-5.4-mini",
  "reasoning_effort": "high",
  "messages": [ ... ]
}

{
  "model": "gpt-5.5",
  "reasoning": { "effort": "xhigh" },
  "messages": [ ... ]
}
Coste Los tokens de pensamiento cuentan como tokens de salida para la facturación — más esfuerzo = más tokens de salida = una factura mayor con el mismo prompt. La tarifa por token no cambia.
Aviso El protocolo de OpenAI también define 'minimal', pero los modelos de este relay lo rechazan: "'minimal' is not supported with this model". Limítate a los cinco valores anteriores.

Streaming

Establece "stream": true para recibir Server-Sent Events. El fragmento final lleva un bloque usage (forzamos stream_options.include_usage en el upstream para que los recuentos de tokens siempre se emitan), y luego un literal data: [DONE] cierra el stream.

# Streaming format (line by line)
data: {"id":"resp_...","choices":[{"delta":{"content":"Hi"}}]}

data: {"id":"resp_...","choices":[{"delta":{"content":"!"}}]}

data: {"id":"resp_...","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":11,"total_tokens":29}}

data: [DONE]

Ejemplo ejecutable de streaming en Python:

from openai import OpenAI

client = OpenAI(
    api_key="sk-cf-xxxxxxxxxxxx",
    base_url="https://api.subnsub.com/v1",
)

stream = client.chat.completions.create(
    model="gpt-5.4-mini",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True,
)
for chunk in stream:
    text = chunk.choices[0].delta.content if chunk.choices else None
    if text:
        print(text, end="", flush=True)

Añade :online a cualquier ID de modelo soportado por el endpoint y el relay ejecutará una búsqueda web antes de reenviar al modelo, anteponiendo los resultados a la conversación para que la respuesta se base en datos frescos. El sufijo funciona en /v1/chat/completions y /v1/messages (este último sigue requiriendo una base claude-*); no se requiere ningún campo de solicitud específico de búsqueda.

# Same call as before — just :online on the model
curl https://api.subnsub.com/v1/chat/completions \
  -H "Authorization: Bearer sk-cf-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini:online",
    "messages": [
      {"role": "user", "content": "What did Anthropic ship this week?"}
    ]
  }'

Cómo funciona: el relay elimina :online, toma el mensaje de usuario más reciente como consulta (limitada a 400 caracteres), llama a Tavily para obtener hasta 3 resultados con el texto extraído de la página cuando esté disponible, más un resumen opcional generado por Tavily, y luego los antepone a ese mismo turno de usuario como un bloque <search_results> claramente delimitado antes de enviar la solicitud al upstream. La llamada de búsqueda tiene un timeout de 8 segundos. Los resultados se inyectan deliberadamente en el rol de usuario — nunca en el system prompt — para que los fragmentos no confiables no puedan elevarse a instrucciones de prioridad de sistema.

El bloque <search_results> tiene este aspecto. Va precedido de una instrucción de una línea que indica al modelo que trate el bloque como datos externos no confiables y que cite los elementos numerados de forma inline:

<search_results query="What did Anthropic ship this week?" retrieved="2026-05-21">
Summary: <short LLM-generated synthesis of the result set>

[1] Anthropic launches Opus 4.8
URL: https://www.anthropic.com/news/opus-4-8
<extracted page text, or short snippet if extraction failed — up to ~2000 chars>

[2] ...
</search_results>
ComportamientoDetalle
CosteSin recargo hoy — pagas la tarifa normal por token del modelo; el relay absorbe la llamada de búsqueda. El bloque <search_results> inyectado sí cuenta como tokens de entrada, así que espera una factura de tokens de prompt mayor que la misma pregunta sin :online.
Modo de falloSuave. Si Tavily agota el tiempo o falla, la solicitud continúa al modelo sin contexto de búsqueda (sigues obteniendo una respuesta, solo que sin fundamentar). El único fallo duro es 503 search_unavailable cuando la búsqueda no está configurada en el relay en absoluto.
count_tokens/v1/messages/count_tokens elimina el sufijo pero nunca llama a Tavily — el recuento refleja tu prompt original, no el aumentado.
Varios turnosSolo se consulta y aumenta el último turno de usuario; los turnos anteriores quedan intactos. Para buscar de nuevo, envía un nuevo mensaje de usuario con :online aún en el modelo.

Cuándo usar :online

El relay hace una única llamada a Tavily por solicitud e inyecta los resultados — no es un bucle de búsqueda agéntico. El modelo no decide volver a buscar en función de lo que ve, como hacen Perplexity Sonar o la herramienta de navegación de ChatGPT. Planifica teniendo en cuenta esa limitación:

Buen encajeMal encaje
Hechos sensibles al tiempo (noticias, precios, números de versión, fechas de lanzamiento)Código privado o pegado que no está en la web pública — añade ruido al prompt sin fundamentar
Localizar un documento o anuncio oficialMatemáticas, razonamiento, traducción, escritura creativa — no hay nada que fundamentar
Cualquier cosa que de otro modo verificarías buscando en GoogleConocimiento estable que ya está en los datos de entrenamiento ("qué es un árbol binario")

Formula el último mensaje de usuario como una consulta de búsqueda autónoma. La búsqueda se ejecuta contra el texto literal de tu turno de usuario más reciente (limitado a 400 caracteres), por lo que los seguimientos conversacionales como "¿y qué hay de la última versión?" se convierten en consultas inútiles sin contexto. En un chat de varios turnos, replantea el tema cuando añadas :online — p. ej. "última versión del SDK de Python de Anthropic" en lugar de "la más reciente".

Para preguntas que requieren síntesis de varios pasos (comparar y contrastar, investigación profunda), divídelas en varios turnos y añade :online a cada uno. El modelo leerá los resultados frescos de cada turno; tú diriges la siguiente consulta manualmente. Ten en cuenta que el bloque <search_results> inyectado se envía solo al upstream — no se devuelve a tu cliente y no se conserva en la siguiente solicitud, así que si un turno posterior depende de detalles de fuentes anteriores, pide al modelo que los resuma en su respuesta visible. El modo de investigación en una sola pasada no está soportado.

Consejo Combínalo con un esfuerzo de razonamiento alto (reasoning_effort: "high") para que el modelo realmente sopese las fuentes devueltas en lugar de apoyarse en el primer resultado. La instrucción inyectada pide al modelo que cite las fuentes numeradas como [1], [2] de forma inline, por lo que la salida normalmente llevará tales citas — aunque el modelo no está estrictamente obligado a ese formato.

Errores

El envoltorio depende del endpoint que hayas llamado — el relay devuelve los errores en el protocolo que coincide con el SDK del llamante, y los errores del upstream se transmiten literalmente.

Rutas de OpenAI (/v1/chat/completions, /v1/responses, /v1/models) — envoltorio de OpenAI:

{ "error": { "message": "...", "type": "...", "code": "..." } }

Rutas de Anthropic (/v1/messages, /v1/messages/count_tokens) — envoltorio de Anthropic:

{ "type": "error", "error": { "type": "...", "message": "..." } }

El envoltorio de Anthropic usa una forma diferente — sin campo code, y el discriminador type: "error" está en el nivel superior (con el error.type interno dando la categoría, p. ej. authentication_error, invalid_request_error, permission_error, api_error). Los SDK de Anthropic ya parsean esta forma; los manejadores de errores del SDK estándar de OpenAI no, así que llama a /v1/messages con un SDK de Anthropic (o haz HTTP en crudo).

Los códigos de estado son los canónicos de HTTP en ambos protocolos:

EstadoOpenAI code / Anthropic error.typeSignificado
401invalid_api_key / authentication_errorClave sk-cf-... ausente o desconocida.
402insufficient_balance / permission_errorEl saldo de la cuenta es negativo. Recarga en la pestaña de facturación de la consola.
403key_revoked / permission_errorLa clave fue revocada.
403account_closed / permission_errorLa cuenta no está habilitada para el acceso de API; los registros después del corte del servicio del 8 de junio de 2026 no incluyen el servicio API.
400model_not_available / invalid_request_errorEl model que enviaste no está en el catálogo verificado, o es incorrecto para el endpoint (p. ej. un modelo de OpenAI en /v1/messages) — comprueba Modelos disponibles.
400unsupported_background_mode / —background: true el /v1/responses: el relé solo sirve ejecuciones sincrónicas. OpenAI sobre solamente.
429rate_limit_exceeded / rate_limit_errorLa capacidad upstream compartida está limitada temporalmente. Respeta retry-after cuando exista y reintenta con espera exponencial y jitter.
503Ninguna cuenta upstream atiende actualmente la solicitud — normalmente una ventana transitoria de límite de tasa de todo el grupo. Reintenta tras una breve espera.
503search_unavailable / api_errorUsaste :online pero la búsqueda web no está configurada en este relay. Consulta Búsqueda web.
502upstream_unreachable / api_errorEl relay no pudo alcanzar el backend. Reintenta tras un breve backoff.
500server_error / api_errorEl relay falló antes o después de contactar con el upstream. Reintenta solo si es seguro repetir la operación; si no, revisa primero el historial de uso.

Reintentos y fiabilidad

Usa un número limitado de reintentos. El relay depende de capacidad upstream compartida y las solicitudes de generación no son idempotentes.

Precios y facturación

Pago por uso, facturado por token en microdólares (1 micro = $0.000001 = 1/10,000 de un centavo) para que las solicitudes de menos de un centavo se registren con precisión. Las tarifas son por 1M de tokens, por tier — consulta la tabla de modelos para ver a qué tier mapea cada modelo.

TierModelosEntrada / 1MSalida / 1M
Mini gpt-5.4-mini, claude-haiku-4-5-20251001 $0.20$1.60
Luna gpt-5.6-luna $0.30$2.40
Standardgpt-5.4, gpt-5.4-2026-03-05, gpt-5.6-terra, claude-sonnet-4-5-20250929, claude-sonnet-4-6$0.75$6.00
Premium gpt-5.5, gpt-5.6-sol $1.10$8.80
Sonnet 5 Introclaude-sonnet-5 $2.00$10.00
Ultra claude-opus-4-5-20251101, claude-opus-4-6, claude-opus-4-7, claude-opus-4-8$5.00$25.00
Fable claude-fable-5 $10.00$50.00

Las tarifas de Fable y Ultra coinciden con los precios de lista publicados de Anthropic. Sonnet 5 utiliza la tarifa introductoria de $2/$10 de Anthropic hasta el 31 de agosto de 2026; su precio estándar publicado después de esa fecha es $3/$15. Los otros niveles funcionan por debajo de las tarifas ascendentes gracias al respaldo de suscripción conjunta.

Los tokens de razonamiento (cuando configuras reasoning_effort en OpenAI, o el campo nativo thinking de Anthropic en Claude) cuentan como output tokens según la tasa de nivel del modelo; no hay un recargo separado por esfuerzo elevado, pero una solicitud de pensamiento profundo puede emitir fácilmente entre 10 y 50 veces más tokens de salida que una uno sin esfuerzo, por lo que el billete de un dólar crece con él.

El prompt-caching de Anthropic se factura como una línea aparte: las escrituras en caché a 1.25× y las lecturas en caché a 0.10× la tarifa de entrada del tier. Así, un acierto de caché de haiku-4.5 cuesta 0.20 × 0.10 = $0.02 per 1M tokens, y un acierto de caché de sonnet-4.5 cuesta 0.75 × 0.10 = $0.075 per 1M tokens. Los tokens de caché se detallan en el registro de facturación de cada solicitud — la consola muestra el desglose.

El saldo se descuenta en tiempo real a medida que cada solicitud retorna — para las solicitudes en streaming, la liquidación se ejecuta después de que aterrice el fragmento [DONE]. Consulta tu saldo en vivo y las liquidaciones por solicitud en /console#billing.

Recarga La consola admite Stripe Checkout — tarjeta, Link, Alipay, WeChat Pay. Los créditos nunca caducan.

Límites de tasa

Hoy no hay límites de tasa por clave. Siguen aplicándose la capacidad upstream compartida y la limitación del lado del proveedor; si alcanzas esos límites, el relay devuelve 429 con una cabecera retry-after. Los límites de RPM / TPM por clave están previstos.

Estado y soporte

Última revisión de la documentación: 14 de julio de 2026.