NuevoConecta cualquier agente a UberLLM: una clave, todos los modelos, a precio de lista o menos.
UberLLM

Errores

UberLLM devuelve envoltorios de error al estilo de OpenAI para que el manejo de errores existente funcione sin cambios:

{
  "error": {
    "code": "insufficient_credits",
    "message": "Your credit balance is too low to serve this request.",
    "type": "insufficient_credits"
  }
}

Superficie de inferencia (/v1/*)

HTTP code Significado Qué hacer
402 insufficient_credits Tu saldo prepago no puede cubrir la reserva de la solicitud. Recarga en Dashboard → Créditos.
402 key_spend_cap_exceeded Esta API key alcanzó su límite de gasto configurado (diario / mensual / de por vida). Aumenta o elimina el límite de la API key, o usa otra API key.
400 invalid_request El cuerpo de la solicitud no pudo ser analizado, o el modelo rechazó la solicitud (el mensaje indica el motivo). Corrige la solicitud; no se reintentará.
413 request_too_large El cuerpo de la solicitud supera los 10 MB (la mayoría de las veces imágenes enviadas como base64). Envía las imágenes como enlaces https://, o acorta la conversación. No se cobró nada.
404 model_not_found El ID model no está disponible. Un prefijo uberllm/ delante está bien: uberllm/deepseek/deepseek-v4.1-flash llega a deepseek/deepseek-v4.1-flash. Verifica GET /v1/models; corrige el ID.
400 context_length_exceeded El prompt es más largo de lo que el modelo admite, sea quien sea el vendedor. En /v1/chat/completions sin una lista models, el modelo más cercano que lo admite responde en su lugar (el model de la respuesta lo nombra); este error ocurre cuando ninguno lo hace, o en /v1/messages. El mensaje proporciona ambos tamaños y nombra los modelos que lo admiten. Envía menos, o elige un modelo de los que nombra el mensaje. No se cobró nada.
400 tools_not_supported La solicitud envía tools y el modelo no puede llamarlos, sea quien sea el vendedor. Se aplica la misma regla de sustitución que arriba. El mensaje nombra los modelos que sí pueden. Envíalo sin tools, o elige un modelo de los que nombra el mensaje. No se cobró nada.
400 max_price_exceeded Nadie vende el modelo dentro de tu provider.max_price ahora mismo (y ningún modelo en models podría admitirlo). Aumenta max_price, inténtalo más tarde, o nombra otros modelos. No se cobró nada.
400 unsupported_routing_option Una opción provider que UberLLM no puede aplicar (el mensaje la nombra). Omítela; consulta Modelos y enrutamiento.
400 invalid_metadata metadata no es un objeto de hasta 16 valores de texto. Corrige las tags; los números van entre comillas.
400 unknown_capability Un alias best-price: / fastest: no nombra ningún job. Usa uno de chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription.
400 wrong_endpoint El modelo (o alias) realiza un job que esta ruta no admite: un modelo de imagen, video, música, voz o transcripción enviado a /v1/chat/completions o /v1/messages, un modelo de chat enviado a una ruta de medios, o voz y transcripción intercambiadas. El mensaje nombra la ruta correcta. Rechazado antes de que se ejecute nada; no se cobra nada, y Actividad lo lista como rechazado. Envíalo a la ruta que nombra el mensaje (también en endpoints en /v1/models/{id}).
503 no_timing_data Se solicitó fastest: antes de que se cronometraran suficientes solicitudes para comparar modelos. Usa best-price: o nombra un modelo.
429 rate_limited Esta API key excedió su límite de solicitudes por minuto, o el marketplace siguió aplicando límites de tasa después de los reintentos automáticos. Espera y reintenta con jitter; aumenta el límite de tasa de la API key.
503 no_available_provider Nadie puede servir ese modelo ahora mismo, incluso después de reintentos automáticos (ningún vendedor, todos los vendedores fallando o demasiado lentos para empezar, o tus opciones provider no dejaron nada a lo que enrutar), o un alias best-price: / fastest: no encontró ningún modelo para el job que esté disponible ahora mismo. El mensaje nombra el modelo o el job. Esto también cubre a un vendedor cuya propia cuenta de proveedor falló: UberLLM intenta con otros vendedores y nunca transmite el error de ese vendedor como si tu API key fuera incorrecta. Reintenta en breve o elige otro modelo. No se cobró nada.
503 service_unavailable Un problema temporal por parte de UberLLM. Reintenta en unos minutos.

Las solicitudes de imagen, video y música añaden algunos códigos propios (image_required, invalid_image_url (un enlace de imagen de origen que no lleva a una imagen), max_cost_too_low, idempotency_key_reused, artifact_expired); consulta Crear un video o una imagen.

Una solicitud de chat rechazada o fallida aparece en Dashboard → Actividad con el mensaje que se te envió. Las respuestas de chat, imagen, video, música, voz y transcripción llevan un header X-Request-Id con el mismo ID que su fila de Actividad, errores incluidos.

Los reintentos ocurren por ti antes de que se devuelva un error: hasta 4 intentos, solo antes del primer byte de contenido. Consulta Modelos y enrutamiento.

Reservas y abortos

UberLLM reserva un costo estimado antes de hacer proxy y lo liquida según el uso real después. Si una solicitud falla, se aborta o te desconectas a mitad de la transmisión, la reserva no utilizada es liberada — solo se te factura por el contenido realmente producido. Las transmisiones abortadas se concilian a partir de una estimación del tokenizer y se marcan en Dashboard → Actividad.

Limitación de tasa

Los límites de tasa por clave se aplican con una ventana fija. En la superficie de inferencia, las comprobaciones de límite de tasa fallan cerradas — si UberLLM no puede verificar tu límite, la solicitud es rechazada en lugar de ser atendida sin medir. Establece (o aumenta) el límite de solicitudes por minuto de una clave en Dashboard → API keys.

Cada respuesta autenticada /v1/* lleva la ventana actual de la clave:

Encabezado Significado
X-RateLimit-Limit Solicitudes que esta clave puede enviar por minuto
X-RateLimit-Remaining Solicitudes restantes en el minuto actual
X-RateLimit-Reset Cuando la ventana se reinicia (segundos Unix)
Retry-After En un 429 de este límite: segundos a esperar antes de reintentar

Reduce la velocidad cuando X-RateLimit-Remaining se acerca a 0. Los encabezados se omiten cuando la ventana no puede ser leída.

API de Vendedor (/api/v1/seller/*)

Estos utilizan códigos REST estándar:

HTTP code Significado
400 invalid_request Validación fallida (ej. endpoint_url no https, precios faltantes para absolute, multiplier fuera de 0 < m ≤ 1.5). El mensaje nombra el campo.
400 model_not_in_catalog model_id no es un modelo de catálogo conocido.
401 unauthorized JWT de panel de control faltante o inválido.
404 seller_not_found No hay vendedor para tu organización — llama a POST /api/v1/seller/register primero.
404 offer_not_found No hay oferta con esa ID bajo tu vendedor.
409 invalid_status_transition Cambio de estado ilegal — ej. reanudar una oferta delisted (deslistada es terminal).

Nota: una sonda de validación fallida no es una respuesta de error. La oferta se crea/actualiza con éxito y se devuelve con status: "paused" y un last_probe_error explicando el motivo — corrige el endpoint y PATCH de nuevo a active para volver a sondear. Ver Vendedores.

Errores de autenticación

HTTP Significado
401 Falta/inválido Authorization header. Inference keys son Bearer ull_...; dashboard endpoints usan tu account JWT.
403 La key es válida pero carece del scope requerido (ej. una key solo para inference llamando a un dashboard endpoint).