Pular para o conteúdo

↑↓ navegar ↵ abrir Ctrl↵ nova aba esc fechar

Referência dos códigos HTTP usados por toda a API da Rapid.

CódigoSignificado
200Sucesso com corpo
201Recurso criado
204Sucesso sem corpo (ex: DELETE)
CódigoSignificado
400Corpo que não é JSON válido (INVALID_JSON)
401Credenciais ausentes ou inválidas
403Empresa bloqueada
404Recurso não encontrado
409Conflito (duplicata, recurso imutável)
413Corpo acima do tamanho máximo (PAYLOAD_TOO_LARGE)
422Erro de validação
429Muitas requisições (rate limit)
CódigoSignificado
500Erro interno (INTERNAL_ERROR), retentativa recomendada

Toda resposta de erro tem a estrutura:

{
"error": {
"code": "CODIGO_SEMANTICO",
"message": "Descrição legível do erro"
}
}
CódigoHTTPUso
INVALID_JSON400O corpo não é um JSON válido
UNAUTHORIZED401Credenciais ausentes ou inválidas
COMPANY_BLOCKED403Empresa bloqueada
VALIDATION_ERROR422Um ou mais campos inválidos
NOT_FOUND404O endereço não existe na API (caminho com erro de digitação, barra sobrando no fim)
TRANSACTION_NOT_FOUND404Transação inexistente
TRANSACTION_DUPLICATE409external_source + external_id já cadastrado
TRANSACTION_IMMUTABLE409Transação já utilizada, não pode ser modificada
MERCHANT_NOT_FOUND404Merchant inexistente
ALERT_NOT_FOUND404Alerta inexistente
ALERT_INVALID_STATUS422Status fora do conjunto permitido
PAYLOAD_TOO_LARGE413Corpo acima do limite: 1 MB por requisição, 5 MB no envio em lote
RATE_LIMIT_EXCEEDED429Limite de requisições excedido (ver abaixo)
INTERNAL_ERROR500Erro inesperado no servidor

Todas as rotas compartilham um limite de 100 requisições por minuto por IP, inclusive as que respondem 401 por credencial inválida. A exceção é o envio de evento pelo navegador, que tem teto próprio de 120 por minuto e não conta nos 100.

Ao ultrapassar, a API retorna:

HTTP/1.1 429 Too Many Requests
Retry-After: 15
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 15
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded, retry in 15 seconds"
}
}

Use o Retry-After. Ele diz, em segundos, quanto falta para a janela virar, e a mensagem repete o mesmo número. Esperar exatamente isso é melhor que chutar: espera progressiva cega pode tentar antes da hora (e tomar outro 429) ou esperar mais que o necessário.

Os headers X-RateLimit-* vêm em todas as respostas, não só no 429, então você pode se antecipar: quando X-RateLimit-Remaining chegar perto de zero, segure o envio em vez de esperar o erro. Em envio de volume, prefira o envio em lote, que manda até 1000 transações numa requisição e gasta uma unidade do limite.

Erros 5xx geralmente são transitórios. Retente aumentando o intervalo entre as tentativas. Nunca retente 4xx: eles indicam erro no seu lado e vão falhar de novo.