Rate Limits
A API ApexPy implementa rate limiting por seller para garantir estabilidade e performance para todos os usuários. Os contadores são individuais — o consumo de um seller não afeta outros.
Limites Padrão
| Endpoint | Limite padrão | Janela |
|---|---|---|
POST /v1/charges (criar cobrança) |
5.000 requisições | 1 minuto |
| Todos os demais endpoints | 5.000 requisições | 1 minuto |
Contadores por categoria de endpoint: os contadores agrupam endpoints do mesmo tipo, independentemente de IDs.
Por exemplo,
GET /v1/charges/ci_k7m2p9xr4nqs e GET /v1/charges/ci_b3r8wz6yqvmn compartilham o mesmo contador
(limite único de 1000 req/min para consultas de cobrança).
Limites Customizados (Alto Volume)
Sellers com operações de alto volume podem solicitar limites superiores ao padrão. Quando configurado pela equipe ApexPy, seu limite customizado prevalece sobre o padrão global.
Para solicitar um limite maior, entre em contato pelo email [email protected] informando seu volume esperado de requisições por minuto e o endpoint de maior consumo.
Headers de Rate Limit
Todas as respostas incluem headers informativos sobre o rate limit atual:
X-RateLimit-Limit— Limite total de requisições no períodoX-RateLimit-Remaining— Requisições ainda disponíveis na janela atualX-RateLimit-Reset— Timestamp Unix de quando o contador será reiniciadoRetry-After— Segundos até poder tentar novamente (presente apenas no 429)
Resposta de Rate Limit Excedido
Quando o limite é excedido, você receberá uma resposta 429 Too Many Requests:
{
"success": false,
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please try again later."
}
}
Boas Práticas
- Implemente retry com backoff exponencial — ao receber 429, aguarde progressivamente antes de tentar novamente (ex: 1s, 2s, 4s, 8s...)
- Monitore o header
X-RateLimit-Remaining— quando se aproximar de zero, reduza a taxa de envio proativamente - Use webhooks — para monitorar status de cobranças e saques em vez de fazer polling com
GET /charges/{id} - Cache respostas de consulta — dados de
GET /accounteGET /balanceraramente mudam em segundos; armazene em cache por alguns segundos no seu sistema - Agrupe criações em lote — se precisar criar muitas cobranças, distribua ao longo do tempo em vez de enviar tudo de uma vez