Overview
La Agent-First API de LemonData enriquece las respuestas de error con sugerencias estructuradas que los agentes de IA pueden parsear y actuar de inmediato: sin búsquedas web, sin consultas a la documentación, sin conjeturas. Cada respuesta de error incluye campos opcionales comodid_you_mean, suggestions, hint, retryable y retry_after dentro del objeto estándar error. Estos campos son compatibles hacia atrás: los clientes que no los usan no notan diferencia.
Error Hint Fields
Todos los campos de sugerencia son extensiones opcionales dentro del objetoerror:
| Field | Type | Description |
|---|---|---|
did_you_mean | string | Nombre de modelo coincidente más cercano |
suggestions | array | Modelos recomendados con metadatos |
alternatives | array | Modelos alternativos actualmente disponibles |
hint | string | Orientación legible por humanos/agentes sobre el siguiente paso |
retryable | boolean | Si reintentar la misma petición puede tener éxito |
retry_after | number | Segundos a esperar antes de reintentar |
balance_usd | number | Saldo actual de la cuenta en USD |
estimated_cost_usd | number | Coste estimado de la petición fallida |
Error Code Examples
model_not_found (400)
Cuando un nombre de modelo no coincide con ningún modelo activo:did_you_mean utiliza:
- Mapeo de alias estático (a partir de datos de errores en producción)
- Coincidencia de cadena normalizada (elimina guiones, sin distinción entre mayúsculas/minúsculas)
- Coincidencia por distancia de edición (umbral ≤ 3)
did_you_mean, suggestions y hint, y luego reintente con un modelo público compatible.
insufficient_balance (402)
Cuando el saldo de la cuenta es insuficiente para el coste estimado:suggestions contiene modelos más baratos que el coste estimado a los que el agente puede cambiar.
all_channels_failed (503)
Cuando todos los canales upstream para un modelo no están disponibles:retryable es false cuando la razón es no_channels (no hay canales configurados para este modelo). Es true solo para fallos transitorios como disparos de circuit breaker o agotamiento de cuota.rate_limit_exceeded (429)
retry_after se calcula a partir del tiempo real de reinicio de la ventana del límite de velocidad.
Los endpoints compatibles con OpenAI usan los tipos de error públicos estables de LemonData como
rate_limit_exceeded, upstream_error y all_channels_failed. Los endpoints compatibles con Anthropic y Gemini usan sus propias formas de respuesta nativas.context_length_exceeded (400)
Cuando la entrada excede la ventana de contexto del modelo (error upstream, enriquecido con sugerencias):Native Endpoint Headers
Cuando llamas a/v1/chat/completions con un modelo que tiene un endpoint nativo (Anthropic o Gemini), la respuesta exitosa incluye cabeceras de optimización:
| Model Provider | Suggested Endpoint | Benefit |
|---|---|---|
| Anthropic (Claude) | /v1/messages | Sin conversión de formato, razonamiento extendido, cache de prompts |
| Google (Gemini) | /v1beta/gemini | Sin conversión de formato, grounding, ajustes de seguridad |
| OpenAI | — | Chat completions ya es el formato nativo |
/v1/models Enhancements
/v1/models ahora incluye metadatos de recomendación no chat que los agentes pueden usar antes de llamar a endpoints de imagen, video, música, 3D, TTS, STT, embedding, rerank o traducción.
| Field | Values | Description |
|---|---|---|
category | chat, image, video, audio, tts, stt, 3d, embedding, rerank | Tipo de modelo |
pricing_unit | per_token, per_image, per_second, per_request | Cómo se factura el modelo |
cache_pricing | object or null | Solo se devuelve cuando el modelo tiene precios de prompt cache upstream. El descuento de caché semántica de la plataforma ya no aparece solo en la lista. |
agent_preferences.<scene> | object | Instantánea de recomendación no chat que solo se devuelve con GET /v1/models?recommended_for=<scene> |
recommended_for está presente, agent_preferences se deriva de una instantánea de tasa de éxito en caché de 24 horas:
- Window: 24 hours
- Snapshot cache: stale-while-revalidate
status = "ready"significa que el modelo tiene suficientes muestras recientes para participar en el rankingstatus = "insufficient_samples"significa que el modelo permanece visible pero no se clasifica por delante de los modelos puntuados
Category Filtering
Recommendation Discovery
Para flujos no chat, los agentes deben obtener primero la lista recomendada actual:recommended_for son:
imagevideomusic3dttssttembeddingreranktranslation
category y recommended_for, deben coincidir exactamente.
Flujo recomendado para agentes:
GET /v1/models?recommended_for=<scene>- Elegir el primer modelo con
agent_preferences.<scene>.status == "ready" - Llamar al endpoint explícitamente con
model=<selected> - Sólo en errores transitorios, reintentar con el siguiente modelo
ready
llms.txt
Una visión general de la API legible por máquinas está disponible en:- Plantilla para la primera llamada con un ejemplo funcional
- Nombres de modelos comunes (generados dinámicamente a partir de datos de uso)
- Los 12 endpoints de la API
- Parámetros de filtrado para el descubrimiento de modelos
- Guía para el manejo de errores
llms.txt antes de su primera llamada a la API normalmente pueden tener éxito en el primer intento.
Usage in Agent Code
Python (OpenAI SDK)
JavaScript (OpenAI SDK)
Design Principles
Fallar rápido, fallar informativamente
Los errores devuelven inmediatamente todos los datos que un agente necesita para autocorregirse.
Sin enrutamiento automático
La API nunca sustituye silenciosamente un modelo diferente. El agente decide.
Sugerencias basadas en datos
Todas las recomendaciones provienen de datos de producción, no de listas codificadas.
Compatible hacia atrás
Todos los campos de sugerencia son opcionales. Los clientes existentes no notan diferencia.