v1
Errors & Rate Limits
Formato de erro
{
"ok": false,
"error": {
"code": "error_code",
"message": "Human-readable description"
}
}
Códigos de erro
| Código | HTTP | Significado |
|---|---|---|
missing_api_key |
401 | Nenhuma chave API fornecida |
invalid_api_key |
401 | Chave inválida/revogada/inativa |
invalid_api_key_environment |
401 | Ambiente da chave (live/test) não habilitado neste gateway |
forbidden |
403 | Escopo insuficiente para o endpoint |
tier_required |
403 | Recurso da API requer o plano Team |
not_found |
404 | Endpoint ou recurso não encontrado |
validation_error |
400 | Body, parâmetros, geometria ou IDs inválidos |
idempotency_key_conflict |
409 | Mesmo Idempotency-Key usado com payload diferente |
idempotency_in_progress |
409 | Requisição com mesmo Idempotency-Key ainda em processamento |
rate_limit_exceeded |
429 | Limite por minuto (ou cota diária do plano) excedido |
timeout |
504 | Exportação expirou |
usage_service_unavailable |
503 | Serviço de uso/cota indisponível |
tier_check_unavailable |
503 | Serviço de validação de plano indisponível |
internal_error |
500 | Erro inesperado do servidor |
Códigos de status HTTP utilizados
| Status | Significado |
|---|---|
| 200 | Sucesso |
| 201 | Criado |
| 204 | Excluído sem corpo |
| 400 | Erro de validação |
| 401 | Não autorizado |
| 403 | Proibido |
| 404 | Não encontrado |
| 409 | Conflito/em andamento de idempotência |
| 429 | Limite de taxa excedido |
| 500 | Erro interno |
| 503 | Serviço upstream indisponível |
| 504 | Timeout |
Limites de taxa
Limite por minuto por chave
Cada chave tem um limite por minuto (padrão 300 req/min, configurável por chave).
Exemplo de resposta 429:
{
"ok": false,
"error": {
"code": "rate_limit_exceeded",
"message": "Rate limit of 300 requests/minute exceeded. Retry after 27 seconds.",
"retry_after": 27
}
}
Cota diária do plano
Além dos limites por minuto, uma cota diária no nível do plano se aplica. Se atingida, a API retorna 429 com uma indicação de retentativa de 24h.
Comportamento de idempotência
Para rotas de escrita usando POST e PUT:
- Mesmo
Idempotency-Key+ mesmo payload: resposta em cache reproduzida - Mesma chave + payload diferente:
409 idempotency_key_conflict - Mesma chave enquanto a primeira requisição ainda está em processamento:
409 idempotency_in_progress
Respostas reproduzidas incluem:
Idempotency-Replayed: true
Endpoints de administração
GET /v1/organization
curl -H "X-API-Key: mk_live_..." \
"https://<ref>.supabase.co/functions/v1/api-gateway/v1/organization"
GET /v1/webhooks (escopo admin)
curl -H "X-API-Key: mk_live_..." \
"https://<ref>.supabase.co/functions/v1/api-gateway/v1/webhooks"
Painel de operações API (escopo admin)
GET /v1/api/metricsGET /v1/api/reliabilityGET /v1/api/alertsPOST /v1/api/alerts/runPOST /v1/api/alerts/:id/ackGET /v1/api/key-lifecycle-alertsPOST /v1/api/key-lifecycle-alerts/runPOST /v1/api/key-lifecycle-alerts/:id/ack
Precisa de ajuda com a API? Entre em contato com nossa equipa de suporte.