Skip to documentation
GAME_ALLIGATOR
ProductsGamificationIntegrationDemos
Let’s talk
ProductsGamificationIntegrationDemos
Let’s talk
Integration
OverviewGuidesAPI referenceResources
Integration overview
Integration architectureFundamentalsGetting startedCertification
Products
Aggregation
Part I · Fundamentals
Core flowRequest & signingEnvelope, money and data formatsErrors: one modelIdempotency & retriesRate limits, pagination, networkMoney Path Rules
Part II · Operator API
Getting startedGames APIWallet APIFree rounds APIReports APIFeatures APIEvent stream
Part III · Certification
Run the checks from the Operator PortalThe command-line tool (for your CI)The checklistCertification checklist
Part IV · Changelog and status
ChangelogDocument ControlChangelog & migration guide: Operator API v2
Appendix
Numbers to rememberWhole guide on one page
API reference
Get player balanceAuthenticate player sessionDebit player balance (bet)Credit player balance (win/bonus)Atomic debit and creditRollback transactionClose game roundSettle free-round grantReconcile uncertain transactionNon-financial notificationgetCapabilitieslistGamesupdateGamelaunchGamelaunchDemocloseSessionlistSessionslistRoundsexportRoundsgetAggregatesissueGrantlistGrantscancelGrantsubscribeackgetOperatorCapabilitiesgetGameFeatureslistBonusBuyTypesissueBonusBuycancelBonusBuygetJackpotsgetBetRangesgetRoundReplaygetRoundDetailslistCampaignscancelCampaignqueryProviderTransactionslistTournamentsgetTournamentgetLeaderboard
Gamification
Integration
Quick startWidgets on your siteSigned-in playersLaunching gamesGameplay eventsTransportsOutcomes and your obligationsGame cataloguesRewardsOnboarding and go-liveReasons, numbers, currencies
Poker
Integration
OverviewEmbed the poker clientServer APIEvents and webhooks
llms-full.txt
Start here
Aggregation / Part I · FundamentalsCore flow

Game Alligators (GA) puts game studios' games into your casino. Traffic runs in two directions, each with its own key pair. Don't mix them. Direction Who calls whom What it's for Key you use Chapter You → GA You call https://api.rexplay.sit

Aggregation / Part I · FundamentalsRequest & signing

Every call GA sends to your wallet looks like this: http POST /v2/wallet/debit HTTP/1.1 Host: wallet.operator.example Content Type: application/json X API Key Id: key live 01 X Request Id: 0198a1d0 9a30 7f08 a7dd 713e4fd33db0 Idempotency Ke

Aggregation / Part I · FundamentalsEnvelope, money and data formats

Every wallet request has the same outer shape. payload is the action specific part and the per call ids live in payload.meta . json { "request id": "0198a1d0 9a30 7f08 a7dd 713e4fd33db0", "ts": "2026 09 13T12:00:00Z", "operator id": "0197aa

Aggregation / Part I · FundamentalsErrors: one model

Your wallet's codes are Appendix A.1. What GA returns to you is Appendix A.2. Every error from /v2/aggregator/ and /v2/features/ has a non 200 HTTP status and one JSON body, Content Type: application/json : json { "code": "ERROR CODE MAINTE

Aggregation / Part I · FundamentalsIdempotency & retries

Certification tests these hardest. Build them in from day one. The full normative text is in Money Path Rules. Keep every op id with its stored answer for at least 4 months . GA resends for 72 hours, and the margin covers reconciliation dis

Aggregation / Part I · FundamentalsRate limits, pagination, network

Your wallet must answer within 5 seconds per call (§2.7). Aim for well under 1 second. GA doesn't filter your source IP on the Operator API. If you restrict inbound traffic to your wallet, allow GA's outbound addresses: 49.13.169.177 and 46

Aggregation / Part I · FundamentalsMoney Path Rules

The rules below govern the v2 wallet contract when a call goes wrong. The cases are a timeout, a duplicate, a rollback of an operation you never saw, and a win that arrives after the session closed. They're additive: GA removes or renames n

Aggregation / Part II · Operator APIGetting started

1. Get sandbox credentials. Email [integration@gamealligator.com](mailto:integration@gamealligator.com). You receive an operator profile with operator id , the Operator API key pair, and a login to https://operator.rexplay.site . There you

↑ ↓ navigate↵ openesc close
  1. Home
  2. /Integration
  3. /Aggregation
  4. /Errors: one model
Aggregation

Errors: one model

MarkdownSource

Errors on GA’s side, in one place

Your wallet’s codes are Appendix A.1. What GA returns to you is Appendix A.2. Every error from /v2/aggregator/* and /v2/features/* has a non-200 HTTP status and one JSON body, Content-Type: application/json:

{
  "code": "ERROR_CODE_MAINTENANCE",
  "message": "provider_unavailable",
  "retryable": true
}

code is one of the 15 ERROR_CODE_* values of Appendix A.1. message is for your logs and GA support. It starts with a stable token (signature_invalid, game_unavailable, provider_timeout, …). GA omits retryable when false. This holds for signature and key problems (401, 403) and for a read-only key on a write call (403) too.

Retry only 429, 503, and 504 (retryable: true in the body), with backoff. Every other status, 502 included, is final for that request.

Codes your wallet returns to GA

Always HTTP 200 with {"status":"error","error":{"code":…}} (§2.5). 15 codes. The list is closed.

CodeGA retries?When to return it
ERROR_CODE_INSUFFICIENT_FUNDSnoThe balance can’t cover the stake, or a credit rollback under DEBIT_MODE_REJECT
ERROR_CODE_PLAYER_NOT_FOUNDnoNo such player
ERROR_CODE_PLAYER_BLOCKEDnoPlayer blocked, self-excluded, or disabled. New bets only. Still accept wins and rollbacks
ERROR_CODE_CURRENCY_MISMATCHnoCurrency or exponent doesn’t match the player’s account
ERROR_CODE_BUSINESS_REJECTEDnoYour own business rule refused it. Also a new bet into a closed or voided round
ERROR_CODE_UNKNOWN_ORIGINALnoA credit names an original you don’t have. Never for a rollback or a reconcile
ERROR_CODE_ALREADY_ROLLED_BACKnoYou already rolled back the op_id (Rule 4), or the round is voided
ERROR_CODE_UNSUPPORTED_ACTIONnoYou don’t implement this optional action (HTTP 200 or 404, with the envelope)
ERROR_CODE_RATE_LIMITEDyesYou are rate-limiting GA (HTTP 200 or 429, with the envelope)
ERROR_CODE_MAINTENANCEyesYour wallet is down for maintenance
ERROR_CODE_INVALID_REQUESTnoMalformed request: missing field, zero or negative amount, overflow, unknown enum value, missing token on a session call
ERROR_CODE_SESSION_EXPIREDnoLaunch token or session expired. New bets only
ERROR_CODE_LIMIT_EXCEEDEDnoDeposit or loss limit reached. New bets only
ERROR_CODE_INTERNALyesUnexpected error on your side (HTTP 200 or 500, with the envelope)
ERROR_CODE_IDEMPOTENCY_CONFLICTnoSame op_id, different content (Rule 1)

Bare statuses without the envelope (401, 403, 404, 429, 5xx) are all “no answer”: GA retries, and a bet ends in a rollback.

What GA returns to you

Every /v2/aggregator/* and /v2/features/* error is the body of §2.8. message starts with the token in the table.

HTTPcodeRetry?message starts withMeaning
400ERROR_CODE_INVALID_REQUESTnoinvalid json body, invalid request, invalid_request, invalid_provider_ref, capability_not_supported, bonus_buy_not_cancellableMalformed JSON, missing or invalid field, GA can’t read the body, or the game provider doesn’t offer the capability
401ERROR_CODE_INVALID_REQUESTnounauthorized, signature_missing, signature_invalid, signature_staleWrong or missing key id, signature, or a timestamp outside 300 s
403ERROR_CODE_BUSINESS_REJECTEDnoforbiddenThe operator is suspended, or the key isn’t allowed to do this (for example a read-only key on launch_game)
403ERROR_CODE_BUSINESS_REJECTED or ERROR_CODE_INVALID_REQUESTnooperator_suspended, operator forbidden, restricted, game_unavailable, PLAYER_SELF_EXCLUDED, PLAYER_COOL_OFFNot allowed for this operator, game, or player
404ERROR_CODE_INVALID_REQUESTnoprovider not found, provider_not_found, game not found, player_not_found, bonus_buy_not_foundProvider, game, player, grant, or bonus not found
409ERROR_CODE_IDEMPOTENCY_CONFLICTnosession_token_conflictYou reused the token of launch_game with another player, game, or currency, or after its session closed or expired, or the idempotency_key of issue_grant with a different body (§4.1, §4.4)
412ERROR_CODE_INVALID_REQUESTnoDEMO_NOT_SUPPORTEDlaunch_demo on a game with demo_supported: false
422ERROR_CODE_INVALID_REQUESTnounsupported actionAction not supported for this game or provider
429ERROR_CODE_RATE_LIMITEDyesRate limit
500ERROR_CODE_INTERNALnointernal errorGA-side failure. GA gets an alert. Contact support if it repeats
501ERROR_CODE_UNSUPPORTED_ACTIONnoCall not implemented on this binding (settlement_mode PER_ROUND)
502ERROR_CODE_INTERNALno (retryable not set)provider_errorThe game provider returned an error. Repeating the same call returns the same error
503ERROR_CODE_MAINTENANCEyesprovider_unavailableThe game provider is unavailable
503ERROR_CODE_INTERNALyeslaunch_in_progressThe first launch_game with this token is still running. Retry with the same token (§4.1)
504ERROR_CODE_INTERNALyesprovider_timeoutThe game provider timed out

Retry only 429, 503, and 504, with backoff.

PreviousEnvelope, money and data formatsNextIdempotency & retries
Integration support: integration@gamealligator.comIntegration center
On this page
Errors on GA’s side, in one placeCodes your wallet returns to GAWhat GA returns to you
↑ Back to top