Error Codes
All errors follow this format:Trading Errors
These codes are returned when deposit or withdrawal requests fail.| Code | Key | HTTP | Description |
|---|---|---|---|
| 1 | EXTERNAL_ID_EXISTS | 409 | External ID already exists for this merchant |
| 2 | MISSING_ITEMS | 400 | No items were provided in the request |
| 3 | INVENTORY_FETCH_FAILED | 500 | Couldn’t load the user’s Steam inventory |
| 4 | NO_OFFER_FOUND | 400 | No valid offer exists for this item |
| 5 | TRADE_OFFER_FAILED | 500 | Failed to send the Steam trade offer |
| 6 | TOO_MANY_ACTIVE_TRADES | 429 | User has too many pending trades |
| 7 | USER_NOT_TRADEABLE | 400 | User’s Steam account can’t trade |
| 8 | TOO_MANY_ITEMS | 400 | Too many items in a single request |
| 9 | ITEMS_UNAVAILABLE | 400 | Selected items not found or no longer available |
| 10 | ITEMS_NOT_ACCEPTED | 400 | Items are not accepted for deposit |
| 11 | PRICE_CHANGED | 409 | Price has changed since you last fetched it |
| 12 | MERCHANT_BALANCE_LOW | 400 | Merchant balance is too low for this withdrawal |
| 14 | INVALID_TRADEURL | 400 | Invalid or inaccessible trade URL |
| 15 | LISTING_NOT_FOUND | 404 | Marketplace listing not found |
| 16 | LISTING_PRICE_INVALID | 400 | Listing has an invalid or missing price |
| 17 | INVALID_LISTING_ID | 400 | Invalid listing ID format |
| 18 | DATABASE_ERROR | 500 | Database error occurred |
| 19 | INSUFFICIENT_ITEM_AMOUNT | 400 | Requested amount exceeds available quantity |
| 20 | EXCEEDS_MAX_AMOUNT | 400 | Requested amount exceeds the maximum allowed |
| 21 | DEPOSIT_IN_PROGRESS | 429 | A deposit is already processing for this user |
General Errors
| Code | Key | HTTP | Description |
|---|---|---|---|
| 1000 | SERVER_ERROR | 500 | Internal server error |
| 1001 | VALIDATION_FAILED | 400 | Request body or query params failed validation |
| 1002 | UNAUTHORIZED | 401 | Authentication required |
| 1003 | FORBIDDEN | 403 | Permission denied |
| 1004 | NOT_FOUND | 404 | Resource not found |
| 1005 | CONFLICT | 409 | State conflict |
| 1006 | UNPROCESSABLE | 422 | Request cannot be processed |
| 1007 | RATE_LIMITED | 429 | Too many requests |
| 1008 | SERVICE_UNAVAILABLE | 503 | Service temporarily unavailable |
| 1009 | SYSTEM_MAINTENANCE | 503 | System is in maintenance mode |
Authentication Errors
| Code | Key | HTTP | Description |
|---|---|---|---|
| 1220 | MISSING_BEARER | 401 | No authorization token provided |
| 1222 | INVALID_TOKEN | 401 | Token is invalid or expired |
API Key Errors
| Code | Key | HTTP | Description |
|---|---|---|---|
| 1400 | MISSING_API_KEY | 401 | No api-key header provided |
| 1401 | INVALID_API_KEY | 401 | API key not found or invalid |
| 1402 | API_KEY_REVOKED | 403 | API key has been revoked |
| 1403 | API_KEY_SCOPE_DENIED | 403 | API key doesn’t have the required scope |
| 1404 | API_KEY_IP_DENIED | 403 | Request IP is not in the key’s whitelist |
Handling Errors
Checksuccess first, then handle based on the error code or key:
requestId from the response. It helps us trace the exact request in our logs.