Lo que cuesta una respuesta
El chat usa Claude Haiku 5.5, el modelo más barato de la lista de precios actual de Anthropic. Cada respuesta se guarda con lo que cobró el proveedor, así que el costo no es una estimación: es la suma de cobros reales. Leímos esos cobros el 27 de octubre de 2026, para todas las respuestas desde que el chat se encendió, el 11 de octubre.
- costo mediano de una respuesta
- USD 0.0041
- lo máximo que ha costado una respuesta
- USD 0.0054
- el tope mensual del chat
- USD 50
En centavos: una respuesta típica cuesta 0.41, la más cara hasta ahora 0.54 y la más barata 0.04. A la mediana, el tope de USD 50 paga unas 12,000 respuestas al mes; a la más cara, unas 9,000.
A dónde va el dinero
Un modelo cobra por lo que lee (tokens de entrada) y por lo que escribe (tokens de salida). La lista de precios de Anthropic (en inglés) para Claude Haiku 5.5, leída el 27 de octubre de 2026, para prompts de hasta 100,000 tokens:
| Entrada | Escritura en caché (5 min) | Lectura de caché | Salida |
|---|---|---|---|
| 0.10 | 0.125 | 0.01 | 0.50 |
La salida cuesta cinco veces más por token, así que parece la parte cara. Para nosotros no lo es. Cada respuesta tiene un tope de 4,000 tokens de salida, que a USD 0.50 por millón son USD 0.002 como máximo. Una respuesta mediana cuesta unos USD 0.0041, así que más de la mitad es entrada: el prompt que el modelo lee antes de escribir una palabra.
| Respuesta más barata | 0.4 milésimas de USD |
|---|---|
| Lo máximo que cuesta la salida | 2 milésimas de USD |
| Respuesta mediana | 4.1 milésimas de USD |
Ese prompt lleva lo que el chat puede decir: nuestros servicios, precios y forma de trabajo, las instrucciones, el formato que debe seguir la respuesta y la conversación hasta ese momento. Es largo a propósito, porque el chat solo responde con lo que está en el sitio. Recortarlo ahorraría dinero y costaría precisión, así que lo dejamos y vigilamos el precio.

Cómo sabemos el cobro real
El chat llama primero a Anthropic y a OpenRouter cuando Anthropic falla o no tiene clave. Hasta ahora todas las respuestas llegaron por OpenRouter, que agrega un objeto usage a cada respuesta. Su documentación de contabilidad de uso (en inglés) dice que el campo cost es el total cobrado a la cuenta. Guardamos ese número con la respuesta, en millonésimas de dólar, como entero.
Cuando una respuesta viene directo de Anthropic, la respuesta no trae el cobro, así que lo estimamos con los tokens que informa y la misma lista de precios, incluidas las escrituras y lecturas de caché. En los dos casos el número es por respuesta, que es lo que necesita un tope.
Por qué no basta con la factura
Una factura mensual dice cuánto gastaste cuando el mes ya terminó. Un tope necesita saber cuánto lleva gastado el chat ahora, mientras funciona, así que el costo se tiene que registrar con cada respuesta.
Un tope que aguanta llamadas a la vez
Revisar "¿llevamos menos de USD 50?" antes de cada llamada no alcanza. Diez visitantes pueden preguntar al mismo tiempo, todas las revisiones pasan y el mes termina pasado. Por eso, antes de cada llamada, el chat aparta lo máximo que puede costar: cada token de entrada al precio de escritura en caché de 5 minutos, que es mayor que el de entrada normal, más los 4,000 tokens de salida. Cuando llega la respuesta, lo apartado se cambia por el cobro real. Si no hay respuesta, se suelta.
async def reserve(db, micros, *, budget, now):
"""Set `micros` aside for a call, or None if what's spent, what's held
and this would pass `budget`."""
month = month_key(now)
hold = Hold(month, ObjectId())
async def work(session):
doc = await db[SPEND].find_one({"_id": month}, session=session)
holds = live_holds(doc, now) # las reservas de más de 15 min se descartan
spent = int(doc["micros"]) if doc else 0
if spent + sum(int(h["micros"]) for h in holds) + micros > budget:
return None
await db[SPEND].update_one(
{"_id": month},
{"$set": {"holds": [*holds, {"_id": hold.id, "micros": micros, "at": now}]},
"$setOnInsert": {"micros": 0, "answers": 0}},
upsert=True, session=session,
)
return hold
return await in_transaction(db, work) # dos llamadas no pasan con el mismo totalCuando se acaba el presupuesto del mes, el sitio deja de mostrar el chat hasta el mes siguiente, y el formulario de contacto sigue funcionando. Dos límites más chicos evitan que un solo visitante lo gaste: 20 mensajes por conversación y 40 por hora desde la misma conexión.
Si vas a poner un chat en tu sitio
La mayor parte de lo que cuesta una respuesta es el prompt que el modelo lee antes de escribir una palabra.
- Registra lo que costó cada respuesta, con el número del proveedor cuando lo da. No puedes topar lo que solo ves en la factura.
- Aparta el peor caso antes de cada llamada, no después. Las llamadas en curso son por donde se escapa un tope.
- Topa la salida. Le pone un techo conocido a la parte que más cuesta por token.
- Mira el prompt antes que el modelo. El nuestro es más de la mitad del costo de una respuesta típica, y también es lo que hace que las respuestas sean correctas.
- Decide qué ve el visitante cuando se acaba el dinero. Los nuestros ven el formulario de contacto, que no cuesta nada.
Si quieres un agente de IA en tu sitio o en WhatsApp con sus costos topados desde el primer día, nuestro servicio de agentes de IA lo cubre, o mira qué te sirve primero.


