DEV Community

Cover image for Cómo reducir tu factura de la API de Claude (Opus 4.8 y Fable 5)
Roobia
Roobia

Posted on • Originally published at apidog.com

Cómo reducir tu factura de la API de Claude (Opus 4.8 y Fable 5)

Tu factura de Claude suele estar dominada por tokens de entrada, no por tokens de salida. La API es sin estado: en cada turno reenvías el historial completo de la conversación, incluido el prompt del sistema, las herramientas, documentos pegados y mensajes anteriores. En ciclos largos de agente o sesiones de Claude Code, ese contexto reenviado crece rápido y se factura en cada solicitud.

Prueba Apidog hoy

Las palancas que más reducen coste son las que disminuyen lo que envías, bajan la tarifa por token o evitan reenviar contexto que ya no aporta valor. Esta guía se centra en acciones concretas: caché de prompts, selección de modelo, API por lotes, límites de generación, poda de contexto, pxpipe como proxy experimental y mocks de API durante desarrollo.

Si necesitas primero la base de precios —cómo se mide un token, cómo se factura la caché o cómo funciona el procesamiento por lotes— revisa esta explicación del costo de la API de Claude. Aquí asumimos que ya conoces el modelo de facturación y vamos directo a reducir la factura.

Palanca 1: usa almacenamiento en caché de prompts

El almacenamiento en caché de prompts suele ser el cambio con mayor impacto en cargas de trabajo de agente.

La idea práctica:

  1. Identifica un prefijo estable:
    • prompt del sistema;
    • definiciones de herramientas;
    • documentos de referencia largos;
    • instrucciones que no cambian entre turnos.
  2. Márcalo como cacheable.
  3. Reutiliza exactamente los mismos bytes en solicitudes posteriores.
  4. Verifica que las lecturas de caché aparecen en usage.cache_read_input_tokens.

Las lecturas de caché cuestan aproximadamente 0.1x la tarifa base de entrada, así que puedes ahorrar hasta ~90% en la parte cacheada. Las escrituras cuestan más que una entrada normal:

  • TTL de 5 minutos: 1.25x;
  • TTL de 1 hora: 2x.

Por eso la caché solo compensa si reutilizas el prefijo. Como regla práctica:

  • TTL de 5 minutos: suele compensar desde ~2 solicitudes;
  • TTL de 1 hora: suele compensar desde ~3 solicitudes.

El punto crítico: la caché es una coincidencia de prefijo a nivel de bytes. Si cambia cualquier byte dentro de la región cacheada, se invalida.

Evita meter en el prefijo estable:

  • timestamps;
  • IDs de sesión;
  • contadores;
  • listas de herramientas con orden variable;
  • datos de usuario que cambian por turno.

Comprueba siempre la respuesta:

{
  "usage": {
    "cache_read_input_tokens": 42000
  }
}
Enter fullscreen mode Exit fullscreen mode

Si cache_read_input_tokens permanece en 0 en llamadas repetidas, tu prefijo no es realmente estable. Para más detalle sobre la mecánica, consulta qué es el almacenamiento en caché de prompts y cómo funciona.

Palanca 2: ajusta el tamaño del modelo por tarea

El desperdicio más común es usar un modelo más grande de lo necesario. En vez de enrutar todo al mismo modelo, define una política simple por tipo de tarea.

Precios por 1M de tokens:

Modelo Model ID Entrada Salida Ventana de contexto
Fable 5 claude-fable-5 $10 $50 1M
Opus 4.8 claude-opus-4-8 $5 $25 1M
Sonnet 5 claude-sonnet-5 $3 ($2 intro) $15 ($10 intro) 1M
Haiku 4.5 claude-haiku-4-5 $1 $5 200K

Interpretación práctica:

  • Fable 5 cuesta el doble que Opus 4.8 en entrada y salida.
  • Opus 4.8 mantiene ventana de 1M sin prima adicional por contexto largo.
  • Sonnet 5 tiene precio introductorio de $2/$10 hasta el 31/08/2026 y luego pasa a $3/$15.
  • Haiku 4.5 es el nivel más barato, con ventana de 200K.

Una política razonable:

  • Fable 5: razonamiento difícil y de largo plazo donde la capacidad extra cambia el resultado.
  • Opus 4.8: trabajo de agente, codificación y bucles con muchas herramientas.
  • Sonnet 5: tráfico de producción de alto volumen con buena calidad y menor coste.
  • Haiku 4.5: clasificación, extracción, enrutamiento y respuestas cortas.

Ejemplo de enrutamiento conceptual:

function selectClaudeModel(task: {
  type: "routing" | "extraction" | "coding" | "hard_reasoning";
  highVolume?: boolean;
}) {
  if (task.type === "routing" || task.type === "extraction") {
    return "claude-haiku-4-5";
  }

  if (task.highVolume) {
    return "claude-sonnet-5";
  }

  if (task.type === "hard_reasoning") {
    return "claude-fable-5";
  }

  return "claude-opus-4-8";
}
Enter fullscreen mode Exit fullscreen mode

Detalle de facturación: en Fable 5, si un clasificador de seguridad rechaza una solicitud, el parámetro beta fallbacks puede redirigir ese turno a Opus 4.8. Ese turno redirigido se factura con tarifas de Opus.

Para comparar los niveles superiores, revisa precios de Opus 4.8, precios de Fable 5 y Fable 5 vs Opus 4.8. También puedes revisar cómo usar Opus 4.8 gratis o llamar a la API de Fable 5.

Palanca 3: usa la API por lotes para trabajo offline

Si una tarea no necesita respuesta en tiempo real, usa la API por lotes.

Endpoint:

/v1/messages/batches
Enter fullscreen mode Exit fullscreen mode

El procesamiento es asíncrono. La mayoría de los lotes terminan en una hora y el límite máximo es de 24 horas. El descuento es del 50% sobre tokens de entrada y salida.

Buenos casos de uso:

  • evaluaciones sobre conjuntos de prueba;
  • clasificación masiva de backlogs;
  • extracción de datos sobre documentos existentes;
  • generación de resúmenes, etiquetas o metadatos;
  • procesamiento nocturno;
  • tareas de CI o análisis que no bloquean al usuario.

Regla práctica:

Si no necesitas la respuesta para renderizar la UI actual, considera enviarlo por lote.

Si la mitad de tu gasto viene de jobs nocturnos ejecutados hoy contra el endpoint síncrono, moverlos a batch recorta directamente un 50% de esa parte sin cambiar el modelo ni la calidad.

Palanca 4: limita effort, max_tokens y usa count_tokens

Tres controles evitan que una solicitud individual se dispare.

1. Ajusta output_config.effort

output_config.effort controla cuánto “piensa” el modelo antes de responder. Los tokens de pensamiento se facturan.

Valores posibles:

low
medium
high
xhigh
max
Enter fullscreen mode Exit fullscreen mode

No uses high o superior por defecto. Prueba una matriz simple:

Tarea Valor inicial recomendado
Clasificación low
Extracción simple low o medium
Resumen medium
Coding medium o high
Razonamiento difícil high, xhigh o max

La implementación recomendada es bajar uno o dos niveles y medir calidad con tus propios tests.

2. Define max_tokens

max_tokens no abarata respuestas que ya iban a ser cortas, pero limita los casos descontrolados.

Ejemplos:

  • si esperas JSON corto, no permitas 4000 tokens;
  • si esperas una etiqueta, limita agresivamente;
  • si esperas una explicación larga, define un techo razonable.

Ejemplo conceptual:

{
  "model": "claude-haiku-4-5",
  "max_tokens": 300,
  "messages": [
    {
      "role": "user",
      "content": "Extrae los campos principales y devuelve JSON."
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

3. Usa count_tokens antes de enviar

El endpoint count_tokens te permite estimar los tokens de entrada con el tokenizador real de Claude.

No uses tiktoken para presupuestar Claude. tiktoken es el tokenizador de OpenAI y puede subestimar a Claude aproximadamente entre 15% y 20%.

Usa count_tokens cuando:

  • aplicas presupuestos por solicitud;
  • aceptas documentos subidos por usuarios;
  • envías historiales largos;
  • quieres decidir si compactar, truncar o batchificar antes de llamar al modelo.

Palanca 5: recorta el contexto reenviado

Como la API es sin estado, los ciclos largos reenvían historial completo en cada turno. En el turno 30, gran parte de ese historial ya no es útil:

  • resultados de herramientas ya consumidos;
  • exploraciones descartadas;
  • archivos leídos una sola vez;
  • mensajes intermedios que ya no afectan la decisión.

Dos funciones del lado del servidor ayudan a podarlo:

  • Edición de contexto: clear_tool_uses_20250919

    • elimina resultados de herramientas obsoletos del contexto reenviado;
    • evita pagar por salidas antiguas en cada turno posterior.
  • Compactación: compact_20260112

    • resume historial anterior en una representación más corta;
    • evita arrastrar toda la transcripción original.

Esto es especialmente relevante en sesiones largas de Claude Code. Si te acercas a límites de contexto a mitad de tarea, probablemente también estás pagando por reenviar material muerto. Esta guía sobre la ventana de tokens de Claude Code y los reinicios explica cómo aparece ese problema en el editor.

Yendo más allá: renderiza contexto como imágenes con pxpipe

Las palancas anteriores reducen o reutilizan tokens de texto. pxpipe aborda el coste desde otro ángulo: convierte partes densas del contexto en imágenes para que se tokenicen más barato.

Qué es

pxpipe es un proxy local con licencia MIT, escrito en TypeScript. Se sitúa entre tu cliente y la API de Anthropic.

En vez de llamar directamente a Anthropic, apuntas ANTHROPIC_BASE_URL al proxy. pxpipe inspecciona cada solicitud antes de enviarla.

Cómo reduce coste

pxpipe puede reescribir partes voluminosas y estables de una solicitud como imágenes PNG compactas:

  • prompt del sistema;
  • documentación de herramientas;
  • historial antiguo;
  • bloques densos de texto.

El proyecto informa que el contenido denso logra aproximadamente:

  • ~3.1 caracteres por token de imagen;
  • ~1 carácter por token de texto.

Según el propio proyecto, un prompt con documentos de herramientas de ~48k caracteres puede pasar de ~25k tokens como texto a ~2.7k tokens de imagen.

Importante: pxpipe aplica puertas de rentabilidad. Solo convierte a imagen cuando la matemática de tokens parece favorable. La prosa dispersa se mantiene como texto.

Instalar y ejecutar

Inicia el proxy:

npx pxpipe-proxy
Enter fullscreen mode Exit fullscreen mode

El proxy queda en:

127.0.0.1:47821
Enter fullscreen mode Exit fullscreen mode

Luego apunta Claude Code al proxy:

ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude
Enter fullscreen mode Exit fullscreen mode

Soporte de modelos

Por defecto, pxpipe renderiza imágenes para solicitudes de:

  • claude-fable-5;
  • GPT 5.6.

Opus 4.7/4.8 y GPT 5.5 son opcionales, porque el proyecto informa que leen peor el contexto en imágenes. Puedes habilitarlos con:

PXPIPE_MODELS=...
Enter fullscreen mode Exit fullscreen mode

También puedes configurarlo desde el panel de control en la URL del proxy. El resto del tráfico pasa sin cambios.

Ahorros reportados

Estos números son reportados por el propio proyecto, no verificados de forma independiente aquí:

  • 59% de ahorro en una instantánea de producción;
  • una factura de $100 reducida a ~$41 en 13,709 solicitudes;
  • piloto de SWE-bench Lite con 65% de reducción en tamaño de solicitudes.

Úsalos como referencia inicial, no como garantía. Mide con tu propio tráfico.

Contrapartidas

pxpipe no es dinero gratis.

Primero, interactúa con el almacenamiento en caché. La caché de prompts depende de bytes idénticos. Si pxpipe cambia la representación del prefijo, puede romper o alterar tu región cacheada. Caché e imágenes atacan el mismo coste de entrada, así que no asumas que se acumulan.

Segundo, el modelo lee imágenes mediante visión. El propio proyecto advierte que cadenas densas —IDs hexadecimales largos, tokens exactos, identificadores— pueden leerse mal. Esos errores pueden ser silenciosos.

Tercero, es un proxy de terceros en tu ruta de solicitud. Aunque corre localmente, debes evaluarlo contra tus requisitos de seguridad antes de usarlo con tráfico de producción.

Prueba pxpipe si tu contexto es grande, estable y denso. Si tu carga ya se beneficia mucho de prompt caching, mide ambos enfoques antes de decidir.

Reduce tokens desperdiciados durante desarrollo y pruebas

Nada de lo anterior evita que quemes tokens reales mientras construyes la integración.

Apidog no reduce tu factura de producción de Claude. Su valor está en el ciclo de desarrollo y prueba.

Durante desarrollo, muchas llamadas no necesitan un modelo real:

  • validar la forma del request;
  • probar parsing de la respuesta;
  • verificar manejo de errores;
  • ejecutar CI en cada push;
  • comprobar timeouts, retries y estados HTTP.

Si ejecutas todo eso contra la API viva de Anthropic, cada intento fallido cuesta tokens.

Una alternativa es simular la respuesta de Anthropic en Apidog:

  1. Define el contrato del endpoint de Claude que usas.
  2. Modela el request esperado.
  3. Modela una o varias respuestas.
  4. Apunta tus tests o CI al mock.
  5. Ejecuta validaciones sin consumir tokens reales.

Ejemplo de contrato de respuesta mockeada:

{
  "id": "msg_mock_123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "{\"status\":\"ok\",\"summary\":\"Resultado simulado\"}"
    }
  ],
  "usage": {
    "input_tokens": 100,
    "output_tokens": 20
  }
}
Enter fullscreen mode Exit fullscreen mode

Esto no reduce la factura de producción. Reduce el gasto de desarrollo y pruebas mientras iteras en integración, parsing y manejo de errores.

Apila las palancas

No son opciones excluyentes. La reducción real viene de combinarlas.

Checklist práctico:

  1. Cachea el prefijo estable

    • prompt del sistema;
    • herramientas;
    • documentos;
    • verifica cache_read_input_tokens.
  2. Enruta por tarea

    • Fable 5 solo cuando cambie el resultado;
    • Opus 4.8 como valor por defecto para agente/coding;
    • Sonnet 5 para volumen;
    • Haiku 4.5 para tareas simples.
  3. Mueve trabajo offline a batch

    • usa /v1/messages/batches;
    • acepta latencia a cambio de 50% de descuento.
  4. Limita cada solicitud

    • baja effort cuando sea posible;
    • define max_tokens;
    • estima con count_tokens.
  5. Recorta contexto muerto

    • usa edición de contexto;
    • usa compactación;
    • evita reenviar salidas de herramientas antiguas.
  6. Evalúa pxpipe si aplica

    • útil para contexto grande, estable y denso;
    • compáralo contra prompt caching;
    • valida calidad antes de producción.
  7. Mockea durante desarrollo

    • evita gastar tokens en CI, parsing y pruebas de integración;
    • usa mocks deterministas hasta que necesites validar calidad real del modelo.

Empieza por caché de prompts y enrutamiento de modelos. Suelen ser los cambios con mejor relación esfuerzo/impacto. Después mide cada optimización por separado: el único número que importa es tu factura real.

Preguntas frecuentes

¿Qué pesa más en la factura: tokens de entrada o de salida?

Por token, la salida cuesta más. Pero en flujos de agente y codificación, la entrada suele dominar porque reenvías historial completo en cada turno. Por eso las optimizaciones principales se enfocan en reducir tokens de entrada.

¿Qué ahorra más: prompt caching o batch API?

Depende. Prompt caching puede ahorrar hasta ~90% del prefijo repetido en tráfico interactivo. Batch API reduce 50% de todos los tokens, pero solo en trabajo asíncrono. Lo común es usar ambos: caché para la ruta interactiva y batch para procesos offline.

¿Debería usar Fable 5 por defecto?

No. Fable 5 cuesta el doble que Opus 4.8. Úsalo solo donde el razonamiento adicional cambie el resultado. Para la mayoría de trabajo de agente y coding, Opus 4.8 es el valor por defecto más razonable.

¿pxpipe se acumula con prompt caching?

No necesariamente. pxpipe cambia la representación del contexto y la caché depende de coincidencia exacta de bytes. Ambos atacan el coste de entrada, así que pueden interferir. Mide ambos con tu prefijo real.

¿Apidog reduce mis costes de producción de Claude?

No. Apidog te permite simular la API de Anthropic durante desarrollo, pruebas y CI. Eso evita quemar tokens mientras validas integración, pero no reduce el coste de tus llamadas reales en producción.

Top comments (0)