Rate Limits & Headers
Every API response includes rate-limit headers. Honor them proactively and implement 429 backoff before production go-live.
Response headers
| Header | Description | Example |
|---|---|---|
| X-RateLimit-Limit | Maximum requests allowed in the current window for your partner tier. | 10000 |
| X-RateLimit-Remaining | Requests remaining before the window resets. | 9847 |
| X-RateLimit-Reset | Unix epoch seconds when the current window resets. | 1718236800 |
| X-RateLimit-Burst-Limit | Maximum concurrent burst requests per second (Enterprise tiers). | 500 |
| Retry-After | Seconds to wait before retrying after HTTP 429 (only on rate-limited responses). | 12 |
HTTP 429 response body
json
{
-300">"error": -300">"rate_limit_exceeded",
-300">"message": -300">"Partner rate limit exceeded. Retry after the Retry-After interval.",
-300">"retry_after_seconds": 12,
-300">"limit": 10000,
-300">"window": -300">"1m"
}Retry with backoff (TypeScript)
bash
async function fetchWithRateLimit(url: string, options: RequestInit, maxRetries = 5) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const res = await fetch(url, options);
if (res.status !== 429) return res;
const retryAfter = parseInt(res.headers.get('Retry"text-cyan-300">-After') ?? '5', 10);
const jitter = Math.random() * 500;
await new Promise((r) => setTimeout(r, retryAfter * 1000 + jitter));
}
throw new Error('Rate limit retries exhausted');
}Best practices
- Read X-RateLimit-Remaining on every response and throttle proactively below 10%.
- On HTTP 429, honor Retry-After — do not retry immediately in a tight loop.
- Use exponential backoff with jitter for batch jobs and webhook-triggered syncs.
- Bulk FHIR $export and pipeline jobs count against the same partner quota — schedule off-peak.
- Enterprise partners can request dedicated quota pools via your Parker Apex account team.
Per-product SLA tiers
| Product | Tier | Rate limit | Burst | Uptime SLA |
|---|---|---|---|---|
| APEX Nexus Platform | Enterprise | 10,000 req/min | 500 req/sec | 99.95% |
| FHIR Data Lake | Enterprise | 5,000 req/min | 200 req/sec | 99.95% |
| Prime Wearables | Professional | 2,000 events/min | 100 req/sec | 99.9% |
| Horizon Analytics | Professional | 500 queries/min | 50 req/sec | 99.9% |
| Identity & GPID | Enterprise | 1,000 match/min | 50 req/sec | 99.95% |
| Beacon Ingest | Professional | 500 uploads/min | 30 req/sec | 99.9% |
| Velocity RCM | Professional | 1,000 claims/min | 40 req/sec | 99.9% |
| Ledger & FedNow | Enterprise | 200 payments/min | 20 req/sec | 99.95% |
| Pulse Mobile | Standard | 1,000 req/min | 50 req/sec | 99.9% |
| Apex Sightline | Professional | 2,000 FHIR req/min | 80 req/sec | 99.9% |
| Apex Odonto | Professional | 2,000 FHIR req/min | 80 req/sec | 99.9% |
| Catalyst Genomics | Professional | 200 variants/min | 20 req/sec | 99.9% |
| CMS Partners | Standard | 500 req/min | 30 req/sec | 99.9% |
| TEFCA Gateway | Enterprise | 30 XCPD/min · 20 XCA/min | 10 req/sec | 99.95% |
Rate limits apply per partner GPID across all products unless a dedicated quota pool is contracted. See the certification checklist for go-live requirements.