SmartRetry applies rate limits to ensure fair usage and protect the platform from abuse. This page explains the limits and how to handle them gracefully.Documentation Index
Fetch the complete documentation index at: https://www.smartretry.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Rate limits
| Endpoint type | Limit | Window |
|---|---|---|
| Payment operations (sale, capture, refund, void) | 100 requests | per second |
| Status queries | 500 requests | per second |
| Recurring operations | 100 requests | per second |
| All endpoints combined | 1,000 requests | per second |
Rate limit headers
Every response includes headers showing your current usage:| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests allowed in the current window |
X-RateLimit-Remaining | Requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
Handling rate limits
When you exceed the rate limit, SmartRetry returns a429 Too Many Requests response:
Retry-After header indicating how long to wait:
Exponential backoff
Implement exponential backoff to handle rate limits and transient errors gracefully. This strategy progressively increases wait times between retries to avoid overwhelming the API.Best practices
Use idempotency keys
Always include an
Idempotency-Key header on POST requests. This ensures retried requests don’t create duplicate transactions.Add jitter
Add random jitter to retry delays to prevent thundering herd problems when multiple clients retry simultaneously.
Monitor remaining quota
Check
X-RateLimit-Remaining headers and throttle proactively before hitting limits.Batch when possible
For high-volume operations, use bulk endpoints (coming soon) instead of individual requests.
Retry decision matrix
| Status code | Retry? | Strategy |
|---|---|---|
200 | No | Success |
400 | No | Fix request and resubmit |
401 | No | Check API key |
404 | No | Check resource ID |
409 | Maybe | Check idempotency; may be success |
429 | Yes | Use Retry-After header |
500 | Yes | Exponential backoff |
502 | Yes | Exponential backoff |
503 | Yes | Use Retry-After if present |
504 | Yes | Exponential backoff |