halfoff.devDocs
Obtén una clave
API de modelos

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 tokenPrecio de listaPagas
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 tokenUso en AnthropicUso en OpenAIUso en Gemini
Entrada sin cachéinput_tokensprompt_tokens menos cached_tokenspromptTokenCount menos cachedContentTokenCount
Lectura de cachécache_read_input_tokensprompt_tokens_details.cached_tokenscachedContentTokenCount
Escritura de cachécache_creation_input_tokensno se informano se informa
Salidaoutput_tokens (thinking incluido)completion_tokens (razonamiento incluido)candidatesTokenCount + thoughtsTokenCount

Se combinan así:

Text
charge = ( uncached_input × input_price
         + cache_read     × cache_read_price
         + cache_write    × cache_write_price
         + output         × output_price ) ÷ 1,000,000 × multiplier

Los 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 tokenTokensPagas por 1MCoste
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
Salida1,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/models

Una respuesta abreviada:

Response
{
  "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"
}
CampoSignificado
idEl id que debes enviar. Otras grafías también funcionan; consulta Ids de modelo.
owned_byFabricante: Anthropic, OpenAI o Google.
context_lengthVentana de contexto máxima, en tokens.
pricing.inputTu precio por los tokens de entrada sin caché.
pricing.outputTu precio por los tokens de salida, thinking y razonamiento incluidos.
pricing.cache_readTu precio por los tokens de entrada leídos de la caché.
pricing.cache_writeTu precio por los tokens de entrada escritos en la caché. null significa que las escrituras se cobran como entrada normal.
pricing.unitSiempre USD per 1M tokens.
groupsGrupos de canales que sirven el modelo.
created, created_atValores 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_tokens y :countTokens de 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.

ModeloContextoEntradaSalidaLectura de cachéEscritura de caché

En vivo desde GET /v1/models · USD por 1M de tokens