Visão geral
A Agent-First API da LemonData enriquece respostas de erro com dicas estruturadas que agentes de IA podem analisar e agir imediatamente — sem buscas na web, sem consultas à documentação, sem suposições. Cada resposta de erro inclui campos opcionais comodid_you_mean, suggestions, hint, retryable e retry_after dentro do objeto padrão error. Esses campos são compatíveis retroativamente — clientes que não os utilizam não perceberão diferença.
Campos de dica de erro
Todos os campos de dica são extensões opcionais dentro do objetoerror:
| Field | Type | Description |
|---|---|---|
did_you_mean | string | Closest matching model name |
suggestions | array | Recommended models with metadata |
alternatives | array | Currently available alternative models |
hint | string | Human/agent-readable next-step guidance |
retryable | boolean | Whether retrying the same request may succeed |
retry_after | number | Seconds to wait before retrying |
balance_usd | number | Current account balance in USD |
estimated_cost_usd | number | Estimated cost of the failed request |
Exemplos de código de erro
model_not_found (400)
Quando um nome de modelo não corresponde a nenhum modelo ativo:did_you_mean utiliza:
- Mapeamento de alias estático (a partir de dados de erro em produção)
- Correspondência de string normalizada (remove hífens, sem distinção entre maiúsculas/minúsculas)
- Correspondência por distância de edição (limite ≤ 3)
did_you_mean, suggestions e hint, e então tente novamente com um modelo público suportado.
insufficient_balance (402)
Quando o saldo da conta é insuficiente para o custo estimado:suggestions contém modelos mais baratos que o custo estimado para os quais o agente pode alternar.
all_channels_failed (503)
Quando todos os canais upstream para um modelo estão indisponíveis:retryable é false quando a razão é no_channels (nenhum canal configurado para esse modelo). É true apenas para falhas transitórias como disparos de circuito ou esgotamento de cota.rate_limit_exceeded (429)
retry_after é calculado a partir do tempo real de reset da janela de limite de taxa.
Endpoints compatíveis com OpenAI usam os tipos de erro públicos estáveis da LemonData, como
rate_limit_exceeded, upstream_error e all_channels_failed. Endpoints compatíveis com Anthropic e Gemini usam suas próprias formas de resposta nativas.context_length_exceeded (400)
Quando a entrada excede a janela de contexto do modelo (erro upstream, enriquecido com dicas):Cabeçalhos de endpoint nativo
Quando você chama/v1/chat/completions com um modelo que possui um endpoint nativo (Anthropic ou Gemini), a resposta de sucesso inclui cabeçalhos de otimização:
| Model Provider | Suggested Endpoint | Benefit |
|---|---|---|
| Anthropic (Claude) | /v1/messages | No format conversion, extended thinking, prompt caching |
| Google (Gemini) | /v1beta/gemini | No format conversion, grounding, safety settings |
| OpenAI | — | Chat completions is already the native format |
Melhorias em /v1/models
/v1/models agora carrega metadados de recomendação não-chat que agentes podem usar antes de chamar endpoints de imagem, vídeo, música, 3D, TTS, STT, embedding, rerank ou tradução.
| 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 | Como o modelo é cobrado |
cache_pricing | object or null | Só é retornado quando o modelo tem preços de prompt cache upstream. O desconto de cache semântico da plataforma não aparece mais sozinho na lista. |
agent_preferences.<scene> | object | Snapshot de recomendação não-chat retornado apenas em GET /v1/models?recommended_for=<scene> |
recommended_for está presente, agent_preferences é derivado de um snapshot de taxa de sucesso em cache de 24 horas:
- Janela: 24 horas
- Cache do snapshot: stale-while-revalidate
status = "ready"significa que o modelo tem amostras recentes suficientes para participar do ranqueamentostatus = "insufficient_samples"significa que o modelo permanece visível, mas não é ranqueado à frente de modelos pontuados
Filtragem por categoria
Descoberta de recomendações
Para fluxos não-chat, agentes devem buscar primeiro a lista recomendada atual:recommended_for são:
imagevideomusic3dttssttembeddingreranktranslation
category e recommended_for estiverem presentes, eles devem corresponder exatamente.
Fluxo recomendado para agentes:
GET /v1/models?recommended_for=<scene>- Escolher o primeiro modelo com
agent_preferences.<scene>.status == "ready" - Chamar o endpoint explicitamente com
model=<selected> - Em erros transitórios apenas, tentar novamente com o próximo modelo
ready
llms.txt
Uma visão geral da API em formato legível por máquina está disponível em:- Template para a primeira chamada com um exemplo funcional
- Nomes comuns de modelos (gerados dinamicamente a partir dos dados de uso)
- Todos os 12 endpoints da API
- Parâmetros de filtro para descoberta de modelos
- Orientações de tratamento de erros
llms.txt antes da primeira chamada à API normalmente conseguem ter sucesso na primeira tentativa.
Uso no código do agente
Python (OpenAI SDK)
JavaScript (OpenAI SDK)
Princípios de design
Falhe rápido, falhe de forma informativa
Erros retornam imediatamente com todos os dados que um agente precisa para se auto-corrigir.
Sem roteamento automático
A API nunca substitui silenciosamente um modelo diferente. O agente decide.
Sugestões orientadas por dados
Todas as recomendações vêm de dados de produção, não de listas codificadas.
Compatível com versões anteriores
Todos os campos de dica são opcionais. Clientes existentes não veem diferença.