Volver al blog

Primeros pasosGuía

Primera solicitud a la API en VS Code: un archivo .http, clave desde .env

Envía tu primera chat completion a CheapTokens desde VS Code con la extensión REST Client, mantén la clave fuera de git y encuentra la respuesta y el uso de tokens.

Por CheapTokens TeamPublicado el 5 min de lectura

Archivo de solicitud de VS Code con un POST a la API de CheapTokens y la clave leída desde .env
En esta página
  1. Instala la extensión y lleva la clave a .env
  2. Escribe el archivo .http
  3. Envíala y encuentra la respuesta
  4. Cambia el modelo en una línea
  5. Si no funciona

Puedes enviar tu primera solicitud a CheapTokens sin salir de VS Code: instala la extensión REST Client, escribe un archivo .http, guarda la clave en un .env junto a él y pulsa Ctrl+Alt+R. La respuesta se abre en un panel junto al archivo, y el texto y el recuento de tokens son dos campos que puedes ver de un vistazo.

Si ya tienes un editor abierto, eso supera a instalar otra aplicación solo para decir "Hola" a un modelo. Y la solicitud permanece en un archivo de texto plano, así que puedes volver a ejecutarla mañana o confirmarla (sin la clave) para un compañero. Otras formas de enviar la misma solicitud están en Primera solicitud con HTTPie y Tu primera solicitud a la API con CheapTokens.

Instala la extensión y lleva la clave a .env#

REST Client es la extensión humao.rest-client. En VS Code pulsa F1, escribe ext install, busca rest-client e instálala. (Verificado con el README de la extensión el 9 de noviembre de 2026.)

Ahora la clave. El README describe {{$dotenv NAME}}: lee un valor de un archivo .env que está en el mismo directorio que tu archivo .http. Eso es exactamente lo que queremos, porque la clave nunca aparece en el archivo de solicitud. Crea una carpeta para el experimento y pon dos archivos en ella.

.env:

text
CHEAPTOKENS_API_KEY=paste-your-key-here

.gitignore:

text
.env

Crea la clave en tu cuenta de CheapTokens y pégala en lugar del marcador de posición. Por qué importa la línea de ignorar, y qué hacer si una clave acaba alguna vez en un commit, está en Guardar una clave de API de forma segura.

Poner en orden

Pon la configuración en el orden correcto

  1. Instala la extensión REST Client
  2. Añade .env a .gitignore
  3. Pon la clave en .env junto al archivo .http
  4. Pulsa Ctrl+Alt+R sobre la solicitud

Escribe el archivo .http#

Crea first.http en la misma carpeta. La sintaxis es breve: una línea de solicitud (POST URL HTTP/1.1, el método es opcional y por defecto es GET), líneas de cabecera Name: value hasta la primera línea vacía, y luego el cuerpo tras una línea en blanco. Las solicitudes se separan con una línea de tres o más #.

http
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json

{
  "model": "zai-org/GLM-5.3-Flash",
  "messages": [{ "role": "user", "content": "Hello" }]
}

Tres cosas que notar. La dirección es la base de la API de CheapTokens, https://api.cheaptokens.dev/v1, más /chat/completions. El modelo se escribe con su id completo, zai-org/GLM-5.3-Flash: un modelo con contexto de 390K que puede escribir hasta 8.192 tokens por respuesta. Y la clave es solo un marcador de posición {{$dotenv …}}, así que este archivo es seguro para confirmar.

La clave vive en .env; first.http solo contiene una referencia a ella
La clave vive en .env, first.http solo contiene una referencia a ella

Si tu configuración no recoge el archivo .env, el README también describe {{$processEnv NAME}}, que lee una variable del entorno de tu máquina en su lugar.

Envíala y encuentra la respuesta#

Haz clic en "Send Request" encima de la línea de solicitud, o pulsa Ctrl+Alt+R (Cmd+Alt+R en macOS). También puedes hacer clic derecho o usar F1. La respuesta se abre en un panel separado. Si prefieres una pestaña de editor normal en la que puedas buscar y plegar, establece rest-client.previewResponseInUntitledDocument en true en los ajustes.

La respuesta es el JSON estándar de chat-completions. Dos lugares importan el primer día:

  • choices[0].message.content es el texto de la respuesta. Junto a él, finish_reason te dice por qué se detuvo el modelo. length significa que la respuesta se cortó por el límite de tokens.
  • usage contiene los recuentos de tokens de esta solicitud: tokens que enviaste y tokens que escribió el modelo. Esto es lo que pagas, así que míralo cada vez.
De Ctrl+Alt+R al texto de la respuesta y el campo usage
Dónde mirar en el panel de respuesta
Pruébalo tú mismoPruébalo: ¿cómo ves que una respuesta se cortó?Mostrar respuesta

Mira finish_reason en la respuesta. Si dice length, el modelo alcanzó el límite de tokens antes de terminar. Añade una línea "max_tokens" al cuerpo, o auméntalo, y envía de nuevo.

Para hacerte una idea del dinero: digamos que envías esta solicitud 100 veces con unos 1.000 tokens de entrada y 300 de salida (una suposición para el ejemplo, no una medición).

Modelo Por solicitud 100 solicitudes OpenRouter, 100 solicitudes
GLM-5.3-Flash $0.000032 $0.0032 $0.0058
DeepSeek-V4-Flash $0.000045 $0.0045 $0.0112
MiniMax-M2.7 $0.000095 $0.0095 $0.114

1000 tokens de entrada y 300 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.

La tabla muestra el precio en vivo de esa carga de trabajo en cada modelo, con una columna de OpenRouter para comparar. Un pequeño "Hola" cuesta mucho menos.

Cambia el modelo en una línea#

La parte práctica de un archivo de texto plano: cambia una línea y envía de nuevo. Sustituye el id del modelo por deepseek-ai/DeepSeek-V4-Flash-0731 (contexto de 380K, hasta 32.768 tokens por respuesta, un precio a cualquier hora del día, en total más barato que OpenRouter contando entrada y salida juntas) y pulsa Ctrl+Alt+R una vez más. Mismo cuerpo, misma clave, una respuesta diferente y un usage diferente.

¿Quieres conservar ambos? Pega una segunda solicitud debajo de una línea ### con el otro id de modelo. Cada solicitud tiene su propio enlace Send Request, así que puedes ejecutarlas una tras otra y comparar. ¿No estás seguro de un id? Lista los modelos con GET /v1/models muestra las cadenas exactas.

Si no funciona#

Emparejar los pares

Relaciona el síntoma con la causa

  • 401 UnauthorizedLa clave está vacía o es incorrecta, a menudo porque .env no está en la misma carpeta que el archivo .http
  • 404 Not FoundUn error tipográfico en la ruta de la URL o en el id del modelo
  • La respuesta se detiene a mitad de frase, finish_reason es lengthSe alcanzó el límite de tokens, aumenta max_tokens

Para los dos primeros, API 401 o 404: clave, URL base o id de modelo incorrectos recorre las comprobaciones. Los detalles completos de la solicitud están en la documentación de CheapTokens, y los precios actuales están en la página de precios.

Ese es todo el flujo de trabajo: un archivo, una clave en .env, un atajo. A partir de aquí puedes añadir un mensaje de sistema, cambiar max_tokens o convertir el mismo cuerpo en código en cualquier lenguaje.