Error Codes
All error status codes used in the 155.io API
This page lists all error status codes used across the API.
Security Errors
| Status | Description |
|---|---|
INVALID_SIGNATURE | Request signature validation failed. Check your signing implementation. |
System Errors
| Status | Description |
|---|---|
EXTERNAL_SERVICE_TIMEOUT_ERROR | Request to external service timed out. Retry the request. |
155.io API Errors
Errors returned by our endpoints.
/game/games
| Status | HTTP Code | Description |
|---|---|---|
UNKNOWN_OPERATOR | 404 | No operator exists for the provided operatorId |
/game/free-bets/rewards
| Status | HTTP Code | Description |
|---|---|---|
VALIDATION_ERROR | 400 | Invalid request (missing required fields, invalid format) |
FREEBETS_NOT_ENABLED | 400 | Freebets feature not enabled for your operator. Contact us to enable. |
PLAYER_NOT_FOUND | 404 | Player with the provided clientPlayerId does not exist |
REWARD_ALREADY_EXISTS | 409 | A reward with this clientRewardId already exists |
UNKNOWN_ERROR | 500 | Internal server error |
Operator API Errors
Errors you should return from your endpoints. All operator API responses must use HTTP 200 with the error status in the JSON body.
Always return HTTP 200, even for error responses. Our system checks the HTTP status code and treats any non-200 response as a transport-level failure, which may trigger retries or rollbacks before the response body is parsed.
/balance
| Status | Description |
|---|---|
SESSION_EXPIRED_ERROR | Player session has expired |
PLAYER_NOT_FOUND_ERROR | Player does not exist |
SESSION_NOT_FOUND_ERROR | Session does not exist |
UNKNOWN_ERROR | Any other error |
/bet
| Status | Description |
|---|---|
INSUFFICIENT_BALANCE_ERROR | Player does not have enough balance for this bet |
DUPLICATE_TRANSACTION_ERROR | Transaction ID already exists (idempotency) |
BONUS_ERROR | Bet does not pass bonus rules |
BET_LIMIT_REACHED_ERROR | Player has reached their betting limit |
VALIDATION_ERROR | Missing or invalid mandatory fields |
UNKNOWN_ERROR | Bet could not be registered |
/win
| Status | Description |
|---|---|
DUPLICATE_TRANSACTION_ERROR | Transaction ID already exists (idempotency) |
VALIDATION_ERROR | Missing or invalid mandatory fields |
UNKNOWN_ERROR | Win could not be registered |
/rollback
| Status | Description |
|---|---|
DUPLICATE_TRANSACTION_ERROR | Transaction ID already exists (idempotency) |
VALIDATION_ERROR | Missing or invalid mandatory fields |
UNKNOWN_ERROR | Rollback could not be processed |
Any status not listed above is treated the same as UNKNOWN_ERROR.
Freebet Usage Errors
These internal errors may occur when a player attempts to use a freebet. They are handled by 155.io and the player will see an appropriate message.
| Code | Error | Description |
|---|---|---|
| 16010 | FREEBET_INSUFFICIENT_AMOUNT | Freebet amount is less than the minimum bet requirement |
| 16011 | FREEBET_NOT_APPLICABLE_FOR_GAME | Freebet is restricted to specific games and cannot be used on this game |
| 16012 | FREEBET_CURRENCY_MISMATCH | Freebet currency does not match the game/bet currency |
| 16013 | FREEBETS_NOT_ENABLED | Freebets are not enabled for this operator |
Error Response Format
All error responses should include the status field and echo back the requestId and clientPlayerId:
{
"status": "ERROR_CODE_HERE",
"requestId": "original-request-id",
"clientPlayerId": "player-id"
}All responses must be signed with the X-Marbles-Signature header, including error responses.