Rate limits
The AKIN Travel API rate-limits per partner API key, not per IP. Limits are set generously for normal interactive traffic and usually only matter to back-end scripts that read in tight loops.
Your specific limits depend on your plan and key type (
pk_test_*vspk_live_*). Read them off the response headers below rather than hard-coding a number, and contact your AKIN Travel onboarding contact if you need them raised.
Limits apply to GraphQL requests against *.api.akintravel.com. They do not apply to static asset requests against images.akintravel.com.
Inspecting your usage
Every response includes the standard RateLimit-* headers (RFC 9331 ):
RateLimit-Limit: 1200
RateLimit-Remaining: 1158
RateLimit-Reset: 42Watch RateLimit-Remaining if you batch reads, and back off before it reaches zero. RateLimit-Reset is seconds until the window resets, not an absolute time.
When you exceed the limit
The API returns HTTP 429 with extensions.code = 'RATE_LIMITED' and a Retry-After header:
{
"errors": [
{
"message": "Rate limit exceeded",
"extensions": { "code": "RATE_LIMITED", "retryAfterSeconds": 8 }
}
]
}The React SDK’s Apollo link retries once automatically after Retry-After. If you call the API directly, you own the retry — back off and respect the header.
Bulk operations
Most “give me everything” use cases are better served by scheduled exports than by draining the live API. If you find yourself paginating the whole dataset, ask your AKIN Travel contact about a feed.