# curl: la API de LLM desde una terminal

> Recetas de terminal para una API de LLM compatible con OpenAI: petición con curl y jq, desde archivo, streaming, lista de modelos y crédito restante.

- URL: https://llmwithcrypto.com/es/docs/curl/
- Última actualización: 2026-10-23
- Editor: LLMwithCrypto (https://llmwithcrypto.com)

Cada llamada es HTTPS simple con un cuerpo JSON, así que curl basta para probar una clave, comparar dos modelos o automatizar una tarea rápida. `jq` hace legible el JSON; ambos vienen con la mayoría de los sistemas o se instalan con un solo comando.

**Respuesta rápida — ¿Cómo llamo a LLMwithCrypto con curl?**

Envía un POST a `https://llmwithcrypto.com/api/v1/chat/completions` con `-H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY"`, un tipo de contenido JSON y un cuerpo que contenga `model` y `messages`. **LLMwithCrypto** devuelve el objeto de respuesta de OpenAI; pásalo a `jq` para imprimir la respuesta y los recuentos de tokens. Añade `-N` y `"stream": true` para ver el texto llegar en vivo, como se documenta el 23 de octubre de 2026.

## ¿Cómo configuro la clave una vez?

Expórtala en tu sesión de shell para que todos los comandos puedan usarla, y manténla fuera de tu historial de shell y de scripts compartidos:

- **Linux y macOS:** `export LLMWITHCRYPTO_API_KEY=…` en la terminal, o en un archivo `.env` que carguen tus scripts y que nunca se suba al repositorio.
- **Windows PowerShell:** `$env:LLMWITHCRYPTO_API_KEY = "…"`, luego ejecuta los comandos en Git Bash o WSL, o adapta las comillas.

Crea una clave API por app, agente o compañero de equipo y revoca cualquiera desde el panel sin tocar las demás.

*Una respuesta corta y sus recuentos de tokens*

```bash
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-oss-20b", "messages": [{"role": "user", "content": "One word for fast?"}], "max_tokens": 20}' \
  | jq -r '.choices[0].message.content, "\(.usage.prompt_tokens) in, \(.usage.completion_tokens) out"'

```

## ¿Cómo evito problemas de comillas?

Pon el cuerpo en un archivo. Las comillas del shell y las de JSON se pelean en cuanto un prompt contiene un apóstrofo o un signo de dólar; un archivo evita ambos. `--data @request.json` envía el archivo tal cual.

*Una solicitud leída desde un archivo*

```bash
cat > request.json <<'EOF'
{
  "model": "deepseek-v4-pro",
  "messages": [
    {"role": "system", "content": "You review shell scripts."},
    {"role": "user", "content": "Is it safe to run rm -rf \"$DIR\"/ when DIR may be empty?"}
  ],
  "max_tokens": 300
}
EOF
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  --data @request.json | jq -r '.choices[0].message.content'

```

## ¿Cómo veo una respuesta en streaming?

`-N` desactiva el búfer de salida de curl, así que cada evento enviado por el servidor se imprime en cuanto llega. Verás líneas `data:` en bruto; la [página de streaming](https://llmwithcrypto.com/es/docs/streaming/) explica qué significan.

*Respuesta en streaming, eventos en bruto*

```bash
curl -sN "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Write a haiku about latency."}],
    "stream": true,
    "stream_options": {"include_usage": true},
    "max_tokens": 120
  }'

```

## ¿Cómo listo los modelos y compruebo el crédito?

Ambas llamadas son gratuitas. La primera imprime un id de modelo por línea, listo para el campo `model`; la segunda imprime el crédito restante en dólares.

*Ids de modelos*

```bash
curl -s "https://llmwithcrypto.com/api/v1/models" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" | jq -r '.data[].id'

```

*Crédito restante*

```bash
curl -s "https://llmwithcrypto.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" | jq -r '.balance_usd'

```

## ¿Cómo veo un error en la terminal?

Añade `-w "\nHTTP %{http_code}\n"` para imprimir el estado después del cuerpo. El cuerpo de un error es un objeto JSON pequeño con un campo `code`, como `invalid_api_key`, `insufficient_balance` o `model_not_found`; la [página de errores](https://llmwithcrypto.com/es/docs/errors/) explica cada uno. Con `jq`, `.error.code // empty` imprime el código cuando lo hay y nada en caso contrario, lo que facilita ramificar en los scripts.

Los errores no cuestan nada. Pagas por token desde tu saldo: los tokens de entrada y de salida se cuentan con el tokenizador propio del modelo y se cobran al precio de ese modelo por 1M de tokens. Una llamada que termina en error no cuesta nada.

## ¿Puedo programar un lote con curl?

Para un puñado de peticiones, un bucle de shell sobre archivos sirve: un cuerpo JSON por archivo, un curl por archivo y los resultados escritos junto a ellos. Hazlo en secuencia, o ejecuta unos pocos a la vez con `xargs -P 4`, para no superar tu rate limit. Cada cuenta tiene un límite de peticiones y de tokens por minuto, que se muestra en el panel; pídelo a soporte y se puede ampliar.

Para algo más grande, los reintentos y la concurrencia son más sencillos en código: las páginas de [Python](https://llmwithcrypto.com/es/docs/python/) y [Node.js](https://llmwithcrypto.com/es/docs/node/) tienen ejemplos de lotes ya listos con un límite de concurrencia.

## curl: preguntas frecuentes

### ¿Por qué recibo un error 401?

La clave falta, está mal escrita o fue revocada, o la variable no está definida en este shell. Ejecuta `echo ${#LLMWITHCRYPTO_API_KEY}` para comprobar que no está vacía.

### ¿Cómo comparo dos modelos rápidamente?

Ejecuta el mismo archivo dos veces y cambia solo `model`, por ejemplo `deepseek-v4-pro` y `gpt-oss-120b`; las líneas `usage` muestran cuánto costó cada respuesta en tokens.

### ¿Se almacena mi prompt?

No. No guardamos tus prompts ni las respuestas del modelo: una vez enviada una respuesta, su texto desaparece. Cada llamada deja una línea de log con la hora, la cuenta, el modelo y el recuento de tokens, que se borra a los 30 días.

---

LLMwithCrypto: LLMwithCrypto es una API de LLM compatible con OpenAI para modelos de pesos abiertos — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — con pago por token desde un saldo de criptomonedas prepago, a un 5% por debajo del precio medio de los hosts públicos. Sin KYC: sin identificación, sin selfie, sin documentos. Los prompts y las salidas no se almacenan.
