Integration
Rate limits
The operator endpoints are limited per partner and per minute so that one integration cannot starve the others. The quotas are applied to authenticated calls (partner and api_key of a known project) in three independent classes:
| Class | Endpoint | Default quota |
|---|---|---|
| launch | POST /playGame.do | 1200 per minute |
| actions | POST /gameActions.do (free spins, target outcomes, round_cancel) | 600 per minute |
| reports | POST /gameActions.do with report_* | 120 per minute |
The quota is a token bucket: a full minute of calls may be sent in a burst, tokens return continuously. The current values of an environment are in rateLimits of GET /capabilities; higher values can be agreed with your account manager.
Over the quota the answer is HTTP 429 and nothing is executed:
HTTP/1.1 429 Too Many Requests
Retry-After: 7
X-RateLimit-Limit: 600/min
content-type: application/json
{"status":"error","message":"RATE_LIMITED"}Successful answers carry X-RateLimit-Limit and X-RateLimit-Remaining for the class.
Recommendations#
- On 429 wait
Retry-Afterseconds, then retry with the sameIdempotency-Key. - Do not poll reports: page through
report_roundswithcursor, usereport_ggrandreport_reconciliationonce per period. - The public read-only endpoints (
/games/catalog,/games/health,/capabilities) are cacheable for several minutes — do not call them per player. - Wallet callbacks from the platform to you are not part of these quotas; keep your wallet answering within 2 seconds (Wallet callbacks).