Response Codes & Error Codes
Response Headers
Custom HTTP response header fields are used to report errors or information that is not specific to a request payload.
| Custom header field | Description |
| X-H-ERROR-ID | Error ID that caused the call to fail, see here for a list of possible values. If that field is present and HTTP Code is 200 the call will be evaluated as failed as if an HTTP Code 400 would have been received. |
| X-H-ERROR-MSG | Textual representation of the error that caused the call to fail. |
| The following headers are only used internally | |
| X-H-OPERATOR-ERROR_ID | informational, an error that could be passed by a third party operator / game provider |
| X-H-REPEATCOUNT | Internal informational, how often a call was put into retry queue |
| X-H-DELAYNEXTRETRY | Internal informational, TS in UTC when call should be retried again |
| X-H-DONOTDELAY | Internal information ,if set to "yes" do not put that transaction into delayed payment queue for processing |
Error Reporting / Handling
Every request will be answered with a HTTP return code which represents the overall success or failure of a call. Additional information might be given by custom header fields and/or the response payload of the request. Check below when calls can / should be retried.
NOTE: In general when receiving a HTTP return code of 200 it is assumed the call was successful and any possible error information given in the response payload should be ignored. In the case that a X-H-ERROR-ID response header field is present and HTTP Code is 200 the call will be evaluated as failed as if an HTTP Code 400 would have been received.
HTTP return codes
| Return code | Description | retry y/n |
| Success codes, response will be in JSON format | ||
| 200 | Request was received and authenticated correctly and operation succeeded without errors. NOTE: receiving an HTTP code 200 means that the call was successful, any error reported in an errorCode object will be ignored unless a X-H-ERROR-ID is received. | can be repeated (all calls should be idempotent) |
| Error codes which mean the request was received but an error occurred during processing: check optional X-H-ERROR-ID and X-H-ERROR-MSG response header fields for optional details, request might also contain more information in response | ||
| 400 | The request could not be processed due to an error processing the request payload. | do not retry |
| 401 | Signature of request was wrong and no other authorisation could be performed. | do not retry |
| 403 | Call was authenticated but no permission to use the endpoint is found. | do not retry |
| 404 | Endpoint was not found. | do not retry |
| 405 | Method (GET/POST) is wrong or not allowed. | do not retry |
| 429 | Rate limit exceeded, if you get that error repeatedly please contact customer support | retry after waiting some time |
| 451 | Content not available due to legal reasions | do not retry |
| 4xx | Some other not specific errors occurred. | do not retry |
| Error codes that indicate a internal problem which should be treated as temporary | ||
| 5xx | An unexpected error occurred. | call should be retried unless a X-H-DONOTRETRY header is received |
| 501 | API call not implemented | do not retry |
Error codes sent via X-H-ERROR-ID field or used in errorCode object
The following error codes could be sent in the custom response header field. In most cases you will also get a textual description of the error. These values (column Return code) are also used to identify known errors when an errorCode object is sent or received.
| Errorcode | Return code | Description |
| SUCCESS | 0 | Call was successful. |
| PLAYERNOTFOUND | 1 | Player not found. |
| PLAYERBLOCKED | 2 | Player is blocked. |
| BALANCETOOLOW | 10 | Balance not sufficient to make a debit |
| BETLIMITREACHED | 11 | Bet limit reached. The user bet limit is reached and therefore the bet cannot be accepted. |
| GAMEROUNDALREADYSTARTED | 12 | gameround is already started (i.e. an initial bet was already received). This error should be sent in case a second initial bet with a different transaction hash is received |
| GAMEROUNDNOTACTIVE | 13 | gameround not active, this should be sent in case the game round hash is known but the game round has already been closed |
| GAMEROUNDNOTFOUND | 14 | gameround hash not found. this should be sent whenever a transaction is received and the game round hash is unknown (unless an initial debit with isFirstDebit is true is received, as this indicates the start of a new gameround |
| GAMEROUNDNOTSTARTED | 15 | gameround not started. This error should be sent in the case a debit with isFirstDebit is false or a credit call is received and the gameround hash is known but for unknown reasons the initial debit was not received. This should normally never happen and indicates an implementation problem. |
| TRANSACTIONCOUNTWRONG | 16 | transactionCount and count of transaction passed are not the same in a doTransaction call. This should normally never happen and indicates an implementation problem. |
| GAMEROUNDPLAYERMISMATCH | 17 | gameround / user id mismatch. The gameround hash passed does not belong to the passed playerid |
| CURRENCYINVALID | 18 | the currency passed is not valid or not available for that player or game |
| INVALIDPARAMETER | 19 | An invalid value for a parameter was received |
| TRANSACTIONAFTEREND | 20 | Inside a gameTransaction package list a debit / credit was received after a end transaction |
| GAMEROUNDISLOCKED | 21 | The gameround is locked or a credit call is being retried. The player is not able to start new games until the gameround is unlocked. After 24 hours the gameround will be marked as stranded and manual reconciliation should be done. Player can start new games after that time |
| GAMEROUNDISCLOSING | 22 | The gameround is in the process of being closed but the operator didn't accept the end game round call so far. Player can start new games. |
| SPINNOTAVAILABLE | 23 | Requested spin type (free or bonus) is not available (this should be handled the same way as a low balance error) |
| DEBITSHOULDBECANCELLED | 24 | A debit failed, should be cancelled (only for internal EveryMatrix usage) |
| COOLOFFPERIODACTIVE | 25 | Player is in a cool off period |
| TRANSACTIONSARERETRYING | 26 | New transactions are received but there are pending ones (internal error) |
| ENDTRANSACTIONALREADYRECEIVED | 27 | New transactions are received but end transaction was already processed before and is being retried (internal error) |
| REGIONISBLOCKED | 28 | Request was blocked for legal reasons |
| NOTLOGGEDON | 29 | Player is not logged in the casino |
| RESPONSIBLEGAMINGLIMITREACHED | 30 | Bet limit reached |
| RESPONSIBLESGAMINGSESSIONEXPIRED | 31 | Session limit reached, expired |
| PLAYERNOAUTHENTICATED | 32 | Player is not known in the casino |
| DISCOUNTNOTELIGIBLE | 33 | Discount submitted in doTransactions is not eligible |
| GENERICBETERROR | 34 | Some unexpected error occurred on a debit transaction |
| GENERICWINERROR | 35 | Some unexpected error occurred on a credit transaction |
| OPERATIONBEINGPROCESSED | 36 | Another transaction is processing |
| TRANSACTIONALREADYEXISTS | 37 | Transaction was already processed |
| REALITYCHECK | 38 | Reality check triggered by the operator |
| SIGNATUREWRONG | 1001 | Signature is incorrect |
| PAYLOADNOTJSON | 1002 | Payload received is not a valid json |
| WRONGHEADERS | 1003 | headers fields missing or wrong |
| PARAMETERMISSING | 1004 | a mandatory parameter was missing in the request |
| INVALIDGAMEMODE | 1005 | an invalid game mode was passed |
| GAMECODENOTFOUND | 1006 | game code not found or not available |
| GAMECONFIGNOTSUPPORTED | 1007 | requested game config is not supported |
| SESSIONINVALID | 1008 | the session is expired or invalid, game should be reloaded by requesting a new launch url via getGameURL call |
| RNGFAILURE | 1009 | The RNG failed |
| NETWORKERROR | 1010 | A general network error occurred |
| DATASTRUCTUREWRONG | 1200 | Payload sent is wrong |
| RATELIMITEXCEEDED | 1300 | A rate limit was exceeded (usually also reported with a HTTP status code of 429) |
| UNEXPECTED | -1 | An unexpected error occurred which could not be specified in detail. |