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.
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:
- Identifica un prefijo estable:
- prompt del sistema;
- definiciones de herramientas;
- documentos de referencia largos;
- instrucciones que no cambian entre turnos.
- Márcalo como cacheable.
- Reutiliza exactamente los mismos bytes en solicitudes posteriores.
- 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
}
}
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/$10hasta 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";
}
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
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
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."
}
]
}
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
El proxy queda en:
127.0.0.1:47821
Luego apunta Claude Code al proxy:
ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude
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=...
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:
- Define el contrato del endpoint de Claude que usas.
- Modela el request esperado.
- Modela una o varias respuestas.
- Apunta tus tests o CI al mock.
- 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
}
}
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:
-
Cachea el prefijo estable
- prompt del sistema;
- herramientas;
- documentos;
- verifica
cache_read_input_tokens.
-
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.
-
Mueve trabajo offline a batch
- usa
/v1/messages/batches; - acepta latencia a cambio de 50% de descuento.
- usa
-
Limita cada solicitud
- baja
effortcuando sea posible; - define
max_tokens; - estima con
count_tokens.
- baja
-
Recorta contexto muerto
- usa edición de contexto;
- usa compactación;
- evita reenviar salidas de herramientas antiguas.
-
Evalúa pxpipe si aplica
- útil para contexto grande, estable y denso;
- compáralo contra prompt caching;
- valida calidad antes de producción.
-
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)