Rate limits
Understand API limits and retry behavior.
Last updated June 3, 2026
Grometrics rate limits protect ingestion reliability while still allowing normal tracking bursts from launches, campaigns, and mobile offline flushes.
Options / Configuration
| Option | Type | Required | Description |
|---|---|---|---|
| Browser events | limit | ✓ | Accepted in normal traffic bursts; excessive duplicate events may be throttled |
| Server API | limit | ✓ | Use batching for backfills or high-volume imports |
| Mobile offline flush | limit | ✓ | Flush queued events in batches instead of one request per event |
| Retry-After | header | no | Wait this many seconds before retrying a throttled request |
retry.ts
1async function sendWithRetry(event) {2const response = await fetch('https://api.usegrometrics.com/events', {3method: 'POST',4headers: { Authorization: 'Bearer YOUR_API_KEY' },5body: JSON.stringify(event)6})78if (response.status === 429) {9const retryAfter = Number(response.headers.get('Retry-After') ?? 10)10throw new Error(`Retry after ${retryAfter}s`)11}1213return response14}
What happens next
For imports or backfills, batch events and preserve original timestamps so reports stay accurate.
Troubleshooting
Requests are throttled
Batch events, remove duplicates, and respect the Retry-After header before retrying.
Was this page helpful?