Primeros pasosGuía
Primera petición a CheapTokens con HTTPie: clave en env, = y :=
Un comando http legible que envía un chat completion con la clave en una variable de entorno y luego muestra dónde están la respuesta y el uso de tokens.

En esta página
Quieres saber que la clave funciona y que el id del modelo es correcto, y quieres saberlo en una sola línea. El comando http de HTTPie lo consigue con muchas menos comillas que curl: tú escribes los campos y él construye el JSON. Aquí está la petición completa, y el resto del artículo explica cada pieza.
export CHEAPTOKENS_API_KEY="paste-your-key-here"
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]'La API es compatible con OpenAI, así que la URL base es https:/ y las peticiones de chat van a / bajo ella. El id del modelo es el completo, deepseek- (el nombre corto de las tablas de precios no se acepta). Si no has guardado una clave antes, primero guarda una clave de API de forma segura: escribir la línea export deja la clave en el historial de tu shell, así que un archivo de perfil o un gestor de secretos es un mejor hogar para ella.

Qué hacen realmente = y :=#
Esta es la única parte de HTTPie que tienes que aprender. La documentación JSON de HTTPie (versión 3.2.4, del 1 de noviembre de 2024, leída el 9 de noviembre de 2026) dice que = establece un campo de cadena y := establece un valor JSON en bruto: un número, un booleano, un array o un objeto. Los campos dados de esta forma se envían como cuerpo JSON por defecto, así que no añades tú mismo una cabecera Content-Type.
En nuestra petición eso da tres formas distintas:
model=deepseek-es una cadena, así queai/ DeepSeek- V4- Flash- 0731 =.max_tokens:=200es un número, así que:=. Con=enviarías la cadena"200".messages:=[…]es un array de objetos, así que:=de nuevo, y el valor va entre comillas simples para que el shell deje intactas las comillas dobles internas.
La documentación también dice que un cuerpo desde stdin no se puede combinar con campos de la línea de comandos, así que elige un estilo. Para una primera prueba, los campos son más cortos y fáciles de editar.
Verificación rápida
¿Qué envía max_tokens=200 (con un = simple)?
Mostrar respuesta
Respuesta: La cadena "200"
= siempre crea una cadena. Para un número necesitas :=, así que escribe max_tokens:=200.
Dónde está la respuesta#
La respuesta sigue el formato de chat-completions de OpenAI. Buscas tres cosas, y están en lugares distintos:
{
"choices": [
{
"message": { "role": "assistant", "content": "…the answer text…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": …, "completion_tokens": …, "total_tokens": … }
}El texto de la respuesta es choices[0].. finish_reason está a su lado en la misma choice, y usage está en el nivel superior. usage muestra cuántos tokens enviaste (prompt_tokens) y cuántos escribió el modelo (completion_), lo cual es útil para estimar el coste de una petición.

Si solo quieres el texto, pasa el cuerpo por una tubería a jq:
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"In one sentence, what is a token?"}]' \
| jq -r '.choices[0].message.content'Pruébalo tú mismoPruébalo: pon el límite demasiado pequeño y lee finish_reasonMostrar respuesta
Cambia max_tokens:=200 a max_tokens:=5 y ejecútalo de nuevo. La respuesta se corta, y finish_reason muestra length en lugar de stop: el límite detuvo al modelo, no el final del razonamiento. Por qué se corta una respuesta cubre la solución.
Cambia el modelo: modifica un campo#
El modelo es una sola cadena, así que probar otro es una edición de una palabra. Ambos ids de abajo están disponibles en CheapTokens con un solo saldo; DeepSeek-V4-Flash te da un contexto de 380K y hasta 32.768 tokens de salida por respuesta, GLM-5.3-Flash un contexto de 390K y hasta 8.192.
Una petición, dos modelos
DeepSeek-V4-Flash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=deepseek-ai/DeepSeek-V4-Flash-0731 \
max_tokens:=200 \
'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'GLM-5.3-Flash
http --body -A bearer -a "$CHEAPTOKENS_API_KEY" \
POST https://api.cheaptokens.dev/v1/chat/completions \
model=zai-org/GLM-5.3-Flash \
max_tokens:=200 \
'messages:=[{"role":"user","content":"Name three uses of a token limit."}]'¿No sabes qué id usar? Lista los modelos con GET /v1/models y copia la cadena exacta.
Cuánto cuesta una petición de prueba#
Una pregunta corta como esta es barata. Digamos que la pregunta son unos 100 tokens y la respuesta unos 150: esa petición cuesta $0.000017. Mil de ellas se ven así, con entrada y salida contadas juntas:
| Modelo | Entrada $/1M | Salida $/1M | Por solicitud | 1000 solicitudes | OpenRouter, 1000 solicitudes |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000008 | $0.008 | $0.0158 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000017 | $0.0165 | $0.028 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000028 | $0.0275 | $0.33 |
100 tokens de entrada y 150 tokens de salida por solicitud. Los precios por 1M de tokens son actuales y cambian junto con nuestras tarifas; la columna de OpenRouter muestra precios de referencia para la misma carga de trabajo.
En total, con entrada y salida contadas juntas, DeepSeek-V4-Flash sale más barato que OpenRouter, y el precio es una tarifa fija sin horas punta. Las tarifas actuales de cada modelo están en la página de precios.
Si no funciona#
- Escribiste
messages=[…]con un=simple. El array se envía como una cadena, no como una lista de mensajes. Usa:=y comillas simples alrededor de todo el valor. - El JSON dentro de
:=no es válido. Cada clave y cadena necesita comillas dobles, y las comillas externas deben ser simples. Si editas el texto del mensaje, mantén las comillas equilibradas. - La clave está vacía.
echo ${#CHEAPTOKENS_imprime la longitud sin mostrar la clave;API_ KEY} 0significa que la variable no está definida en esta terminal. - El id del modelo es el nombre corto. Usa el
deepseek-completo. Para respuestas 401 y 404, consulta clave, URL base o id de modelo incorrectos.ai/ DeepSeek- V4- Flash- 0731 - Recurriste a
--session. La documentación de autenticación de HTTPie dice que los archivos de sesión guardan las credenciales en texto plano, así que mantén la clave en el entorno y deja--sessionfuera de este comando.
Comprueba tu versión con http --version si algún flag se comporta de forma distinta a lo anterior. ¿Prefieres Python? La misma petición sin SDK está en primera petición en Python con requests. Para la referencia completa de la API, consulta la documentación de CheapTokens.



