Respuesta rápida
¿Qué errores puede devolver la API de LLMwithCrypto y se cobran?
La API responde a los errores con un estado HTTP y un cuerpo al estilo de OpenAI: {"error": {"message", "type", "param", "code"}}. LLMwithCrypto usa 400 para una petición incorrecta, 401 para una clave errónea, 402 cuando el crédito no puede pagar, 404 para un modelo desconocido, 429 para el rate limit y 500 o 503 por nuestra parte. Una llamada que termina en error no cuesta nada, según la documentación del 23 de octubre de 2026.
¿Qué errores existen?
Ningún error consume crédito. code es el valor estable que debes comprobar en tu código; message es para personas y puede cambiar.
| HTTP | code | Causa | ¿Reintentar? |
|---|---|---|---|
| 400 | invalid_parameter | Falta un campo obligatorio, o un valor está fuera de rango o es de un tipo incorrecto | No: corrige la petición |
| 400 | context_length_exceeded | Los mensajes más max_tokens no caben en la ventana de contexto del modelo | No: acorta la entrada o reduce max_tokens |
| 400 | unsupported_parameter | Un campo que este modelo no admite, como response_format en un modelo sin modo JSON | No: quítalo o cambia de modelo |
| 401 | invalid_api_key | La clave falta, está mal escrita o fue revocada | No: revisa la clave |
| 402 | insufficient_balance | El saldo restante no alcanza para esta llamada | No: compra un pack de créditos |
| 404 | model_not_found | El id model no está en nuestra lista | No: usa un id de GET /api/v1/models |
| 429 | rate_limit_exceeded | Más solicitudes o tokens por minuto de los que permite la cuenta | Sí, tras una pausa |
| 500 | server_error | Algo falló por nuestra parte | Sí, con backoff |
| 503 | model_overloaded | El modelo está al límite de capacidad por un momento | Sí, con backoff, o prueba otro modelo |
{
"error": {
"message": "The model `gpt-4o` does not exist or is not available to your key.",
"type": "invalid_request_error",
"param": "model",
"code": "model_not_found"
}
}
¿Por qué recibo 404 con gpt-4o o claude?
Porque esos modelos no se venden aquí. No vendemos acceso a GPT, Claude, Gemini ni Grok: sus creadores prohíben revender el acceso a la API sin su aprobación, y nosotros no la tenemos. El código escrito para la API de OpenAI suele nombrar un modelo en varios sitios; busca en tu proyecto el nombre antiguo y reemplázalo por un id de la página de modelos, como deepseek-v4-pro o gpt-oss-120b.
¿Cuándo debe reintentar mi código?
Reintenta 429, 500 y 503, y los errores de red como un timeout o una conexión reiniciada. Nunca reintentes 400, 401, 402 ni 404: la misma solicitud fallará de la misma forma.
Espera antes de cada nuevo intento. Cuando la respuesta tenga una cabecera Retry-After, espera esos segundos; si no, duplica la pausa cada vez (1, 2, 4, 8 segundos…) y añade un poco de tiempo aleatorio, para que muchos workers no reintenten a la vez. Abandona tras unos cuantos intentos y registra el error. Los SDK de OpenAI ya reintentan por su cuenta; el ejemplo de abajo lo desactiva para mostrar la lógica completa.
import os
import random
import time
from openai import APIConnectionError, APIStatusError, OpenAI
client = OpenAI(
base_url="https://llmwithcrypto.com/api/v1",
api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
max_retries=0,
)
RETRY = {429, 500, 503}
def chat(messages, model="deepseek-v4-pro", attempts=5):
for attempt in range(attempts):
try:
return client.chat.completions.create(model=model, messages=messages, max_tokens=500)
except APIStatusError as err:
if err.status_code not in RETRY or attempt == attempts - 1:
raise
wait = err.response.headers.get("retry-after")
delay = float(wait) if wait else min(30, 2**attempt) + random.random()
except APIConnectionError:
if attempt == attempts - 1:
raise
delay = min(30, 2**attempt) + random.random()
time.sleep(delay)
¿Qué hago con 402 insufficient_balance?
Recarga. La llamada no se cobró y nada más de la cuenta cambia: tus claves siguen funcionando en cuanto vuelva a haber crédito. En cuanto se confirma tu recarga con criptomonedas y compras un pack de créditos, tu clave API te espera en el panel.
Para evitar sorpresas en producción, lee GET https://llmwithcrypto.com/api/v1/credits de vez en cuando y actívate una alerta por debajo de un umbral que elijas; la página de modelos y créditos muestra la llamada. Los créditos no caducan: lo que no gastes este mes seguirá ahí el año que viene, así que un pack más grande comprado antes no cuesta nada extra.
¿Cómo me mantengo por debajo del 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.
- Limita la concurrencia. Ejecuta un número fijo de solicitudes en paralelo en lugar de lanzar un lote entero de golpe.
- Limita la salida. Los límites de tokens también cuentan lo que escribe el modelo, así que un
max_tokensrazonable deja más solicitudes dentro del límite. - Reparte los lotes. Para trabajos grandes offline, marca el ritmo de las solicitudes a lo largo del minuto en lugar de enviarlas a ráfagas.
Errores: preguntas frecuentes
¿Me cobran por una llamada fallida?
No. 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.
¿Dónde puedo ver si hay una caída?
En la página de estado. Una racha de errores 500 o 503 en varios modelos suele indicar un incidente por nuestra parte; escribe a [email protected] si persiste.
¿Puedo ver la solicitud que falló?
No por nuestra parte. 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. Registra el error code y tu propio id de solicitud en tu app.