API & MCP
Limites e headers
As respostas trazem cabeçalhos de rastreio e de limite de uso. Os X-RateLimit-* aparecem nas respostas autenticadas (do limite por chave), o 401 chave-invalida sai sem eles.
| Header | Significado |
|---|---|
X-Request-Id | Id único da requisição (também vem no corpo como requestId). Cite-o ao pedir suporte. |
X-Api-Version | Versão da API (atualmente 1). |
X-RateLimit-Limit | Máximo de requisições na janela. |
X-RateLimit-Remaining | Quantas ainda restam na janela atual. |
X-RateLimit-Reset | Segundos até a janela reiniciar. |
Retry-After | Presente nos 429 de janela (rate): espere estes segundos antes de repetir. O 429 teto-leads não o envia, esse limite não reseta com o tempo. |
Limites atuais: 60 cotações/min por chave em /v1/quote e 120/min em /v1/coverage. Antes da autenticação há ainda um freio por IP de 300 requisições/min (anti-flood; vale pra REST e MCP). No MCP, o transporte /api/mcp aceita 120 mensagens JSON-RPC/min por chave (initialize, tools/list etc.), mas as ferramentas debitam os mesmos buckets do REST:quote_solar conta nas 60 cotações/min e check_coverage nas 120/min, usar os dois canais não multiplica o limite. Ao estourar no REST, você recebe 429 com Retry-After. No MCP são dois casos: estourar o teto do transporte (ou o freio por IP) devolve HTTP 429 com erro JSON-RPC -32000 e o header Retry-After; estourar o limite de uma ferramenta devolve um resultado de ferramenta com isError e (rate) na mensagem. Há também um teto absoluto de propostas por conta (429 teto-leads), esse vem sem Retry-After, porque não reseta sozinho: fale com o suporte.
requestId ao escrever para suporte@ionluz.com.br.