Modelos y precios
Cada modelo cuesta la mitad de su precio de lista por token: entrada, salida, lectura y escritura de caché. Cómo se calcula cada cargo y cómo listar modelos.
La regla de precios cabe en una línea: pagas la mitad del precio de lista oficial por cada token, en todos los modelos. Vale para la entrada sin caché, la salida (thinking y razonamiento incluidos), la lectura de caché y la escritura de caché por igual. Los precios se expresan en dólares estadounidenses por millón de tokens. Cada llamada se cobra según los recuentos de tokens que el propio modelo informa en su respuesta, y el importe sale de tu saldo prepago unos segundos después de terminar la llamada.
Mitad de precio, token a token#
Esto es lo que significa en claude-sonnet-5.5, por millón de tokens:
| Tipo de token | Precio de lista | Pagas |
|---|---|---|
| Entrada sin caché | $2.00 | $1.00 |
| Salida | $10.00 | $5.00 |
| Lectura de caché | $0.10 | $0.05 |
| Escritura de caché | $2.50 | $1.25 |
El mismo factor ×0.50 se aplica a todos los modelos Claude, GPT y Gemini, en todos los grupos de canales y en todos los formatos de API. La tabla en vivo al final de esta página muestra los modelos actuales.
La fórmula#
El uso de una llamada se divide en cuatro tipos de token, cada uno con su precio. Dónde encontrarlos en cada API:
| Tipo de token | Uso en Anthropic | Uso en OpenAI | Uso en Gemini |
|---|---|---|---|
| Entrada sin caché | input_tokens | prompt_tokens menos cached_tokens | promptTokenCount menos cachedContentTokenCount |
| Lectura de caché | cache_read_input_tokens | prompt_tokens_details.cached_tokens | cachedContentTokenCount |
| Escritura de caché | cache_creation_input_tokens | no se informa | no se informa |
| Salida | output_tokens (thinking incluido) | completion_tokens (razonamiento incluido) | candidatesTokenCount + thoughtsTokenCount |
Se combinan así:
charge = ( uncached_input × input_price
+ cache_read × cache_read_price
+ cache_write × cache_write_price
+ output × output_price ) ÷ 1,000,000 × multiplierLos precios son los de lista del modelo, y el multiplicador es el del grupo de canales que respondió, indicado en la cabecera de respuesta x-halfoff-group. Los tres grupos facturan a ×0.50, y de ahí sale la mitad de precio. Cada cargo se redondea hacia arriba al siguiente $0.000001.
Los modelos GPT y Gemini no informan escrituras de caché, así que para ellos solo cuentan tres de los cuatro términos.
Un ejemplo con números#
Un turno de una conversación larga de programación en claude-sonnet-5.5, donde casi todo el historial sale de la caché:
| Tipo de token | Tokens | Pagas por 1M | Coste |
|---|---|---|---|
| Entrada sin caché | 3,000 | $1.00 | $0.003000 |
| Lectura de caché | 50,000 | $0.05 | $0.002500 |
| Escritura de caché | 1,500 | $1.25 | $0.001875 |
| Salida | 1,200 | $5.00 | $0.006000 |
| Total | $0.013375 |
Si ninguno de esos 54,500 tokens de entrada hubiera salido de la caché, solo la entrada habría costado $0.054500 en lugar de $0.007375. La caché y la tarifa a mitad de precio se suman; en Caché de prompts verás cómo mantener alta la tasa de aciertos.
Listar modelos y precios#
GET /v1/models devuelve todos los modelos que puedes llamar ahora mismo, con el tamaño de contexto, tus precios (la mitad del precio de lista) y los grupos que los sirven. No necesita clave, y tanto el SDK de OpenAI como el de Anthropic pueden leerlo con client.models.list().
curl https://halfoff.dev/v1/modelsUna respuesta abreviada:
{
"object": "list",
"data": [
{
"id": "gemini-3.1-pro",
"object": "model",
"type": "model",
"display_name": "Gemini 3.1 Pro",
"created": 1700000000,
"created_at": "2025-01-01T00:00:00Z",
"owned_by": "Google",
"context_length": 1048576,
"pricing": {
"input": 1,
"output": 6,
"cache_read": 0.1,
"cache_write": 0.1875,
"unit": "USD per 1M tokens"
},
"groups": ["gemini-value"]
},
{
"id": "claude-sonnet-5.5",
"object": "model",
"type": "model",
"display_name": "Claude Sonnet 5.5",
"created": 1700000000,
"created_at": "2025-01-01T00:00:00Z",
"owned_by": "Anthropic",
"context_length": 1000000,
"pricing": {
"input": 1,
"output": 5,
"cache_read": 0.05,
"cache_write": 1.25,
"unit": "USD per 1M tokens"
},
"groups": ["claude-value"]
}
],
"has_more": false,
"first_id": "claude-fable-5.1",
"last_id": "gpt-5.6-luna"
}| Campo | Significado |
|---|---|
id | El id que debes enviar. Otras grafías también funcionan; consulta Ids de modelo. |
owned_by | Fabricante: Anthropic, OpenAI o Google. |
context_length | Ventana de contexto máxima, en tokens. |
pricing.input | Tu precio por los tokens de entrada sin caché. |
pricing.output | Tu precio por los tokens de salida, thinking y razonamiento incluidos. |
pricing.cache_read | Tu precio por los tokens de entrada leídos de la caché. |
pricing.cache_write | Tu precio por los tokens de entrada escritos en la caché. null significa que las escrituras se cobran como entrada normal. |
pricing.unit | Siempre USD per 1M tokens. |
groups | Grupos de canales que sirven el modelo. |
created, created_at | Valores fijos de relleno, presentes por compatibilidad con los SDK. |
Los campos de pricing ya son tus tarifas: el precio de lista oficial × ×0.50. GET /v1beta/models lista los mismos modelos en el formato de Gemini, sin precios.
Llamadas que no cuestan nada#
- Peticiones rechazadas antes de llegar a un modelo: clave incorrecta, modelo no permitido, sin saldo, límite de frecuencia, JSON mal formado.
- Peticiones que fallan en todos los canales, y cualquier intento fallido que se reintentó en otro canal. Solo se cobra el intento que respondió.
POST /v1/messages/count_tokensy:countTokensde Gemini.- Listar modelos.
Streams cancelados e interrumpidos#
Si cierras un stream antes de tiempo, pagas lo que se produjo hasta ese momento, con las mismas tarifas a mitad de precio. La entrada es el recuento que informó el stream o, si no informó nada, aproximadamente un token por cada cuatro caracteres de tu petición. La salida es el mayor entre el recuento informado hasta entonces y aproximadamente un token por cada cuatro caracteres del texto ya entregado.
Cuando el gateway corta un stream porque el modelo dejó de responder, se factura igual: pagas lo que recibiste. Consulta Streaming.
Dónde ver los cargos#
En Registros aparece cada llamada con sus recuentos de tokens y su cargo. El catálogo muestra el precio de cada modelo por grupo con el multiplicador ya aplicado, además de la disponibilidad en vivo. El saldo y las recargas están en Facturación; los informes de uso, en Uso.
Tabla de precios en vivo#
La tabla de abajo se lee en vivo de GET /v1/models y muestra tus tarifas por millón de tokens: la mitad del precio de lista oficial.
| Modelo | Contexto | Entrada | Salida | Lectura de caché | Escritura de caché |
|---|---|---|---|---|---|
En vivo desde GET /v1/models · USD por 1M de tokens