Errors
Error format, status codes, and retry guidance for Bitdeer AI APIs.
Non-2xx responses return a JSON body in this shape:
application/json— Request params errorHTTP status codes
| HTTP | Retryable | Meaning |
|---|---|---|
400 | No | Malformed request — check error.msg for details |
401 | No | Missing or invalid API key Authentication failed |
403 | No | Insufficient permissions |
404 | No | Resource does not exist (e.g. instance id not found) |
429 | Yes | Rate limit exceeded (default: 100 RPM) |
500 | No | Internal server error |
503 | Yes | Service temporarily unavailable |
Instance-specific error codes
code is always a 5-digit integer in the 4xxxx range. The HTTP status reflects the broad error category; code gives the precise reason.
Error Code Reference
| Error | Status | Description |
|---|---|---|
40001 | 500 | Internal server error |
40002 | 500 | Database operation failed |
40003 | 400 | Required field is missing |
40004 | 404 | Resource not found |
40005 | 401 | Authentication required |
40006 | 400 | Invalid request parameters |
40007 | 409 | Resource oversold — insufficient inventory |
40008 | 502 | Lotus chain call failed |
40009 | 400 | Incorrect password |
40010 | 401 | Token is invalid or expired |
40011 | 401 | Request signature is invalid |
40012 | 403 | Access denied: insufficient privileges |
40013 | 401 | Certificate is invalid or expired |
40014 | 409 | Device is associated with other devices — remove the association before deleting |
40015 | 400 | File integrity check failed: MD5 mismatch |
40016 | 401 | Incorrect account or password |
40017 | 503 | Service temporarily unavailable — please try again later |
40018 | 429 | Account temporarily locked due to too many failed login attempts |
40019 | 400 | Captcha verification failed |
40020 | 409 | User already exists |
40021 | 400 | Wallet address is invalid |
40022 | 500 | Elasticsearch operation failed |
40023 | 500 | Elasticsearch did not acknowledge the request |
40024 | 400 | Project request is invalid |
40025 | 401 | Project secret is invalid |
40026 | 429 | Project request rate limit exceeded |
40027 | 429 | Too many requests — please slow down |
40028 | 400 | Request validation failed |
40029 | 403 | Requests from this IP address are not allowed |
40030 | 400 | Public key is invalid |
40031 | 400 | Transaction hash is invalid |
40032 | 405 | HTTP method not allowed |
40033 | 400 | Project public key limit reached |
40034 | 400 | Allowed category not found |
40035 | 401 | JWT token is invalid or malformed |
40036 | 400 | Security allowlist rule error |
40037 | 403 | KYC verification level insufficient for this operation |
40038 | 400 | Operation not permitted in the current state |
40039 | 502 | Downstream business service returned an error |
40040 | 502 | Stripe payment service error |
40041 | 400 | Payment method is invalid or unsupported |
40042 | 400 | One or more operations in the batch failed |
40043 | 500 | User center (SSO) error |
40044 | 400 | CAPTCHA verification failed |
40045 | 405 | Request method not allowed |
40046 | 403 | Insufficient account balance |
40047 | 400 | Availability zone does not match |
40048 | 409 | Resource name already exists |
40049 | 402 | Payment processing failed |
40050 | 400 | Country information is invalid |
40051 | 400 | Renewal period is invalid |
40052 | 429 | Resource quota or rate limit exceeded |
40053 | 401 | Keystone TGT token is invalid or expired |
40054 | 400 | Password does not meet strength requirements |
40055 | 401 | Multi-factor authentication verification failed |
40056 | 403 | Insufficient permissions for this operation |
40057 | 400 | User email address is invalid |
40058 | 400 | User network configuration error |
40059 | 400 | Insufficient user network quota |
40060 | 409 | Current instance status does not allow this operation |
40061 | 400 | Resource group configuration error |
40062 | 403 | Read permission denied |
40063 | 400 | Business logic request failed |
40064 | 409 | Change version conflict — resource has been modified by another request |
40065 | 409 | A previous change is still in progress — please wait |
40066 | 409 | EIP is already in use |
40067 | 409 | Resource already has an EIP bound |
40068 | 400 | No EIP is currently bound to this resource |
40069 | 409 | Resource is not yet ready |
40070 | 400 | Resource is not empty and cannot be deleted |
40071 | 401 | STS token is unauthorized or expired |
40072 | 500 | Payment succeeded but resource provisioning failed |
40073 | 400 | Insufficient EIP resources available |
40074 | 409 | Resource already exists |
40075 | 400 | Policy must reference at least one resource |
40076 | 400 | Operation not supported by this service |
40077 | 400 | Unsupported authentication type |
40078 | 403 | Inter-service authentication denied |
40079 | 400 | SKU is unavailable or not enabled |
HTTP Status Summary
| HTTP Status | Meaning | Typical code range |
|---|---|---|
400 | Bad request — invalid parameters, format, or business rule | 40003, 40006, 40009, 40019, 40028, 40038, 40041–40044, 40047, 40050–40051, 40054, 40057–40059, 40061, 40063, 40068, 40070, 40073, 40075–40079 |
401 | Unauthenticated — token, signature, or credential invalid | 40005, 40010–40011, 40013, 40016, 40025, 40035, 40053, 40055, 40071 |
402 | Payment required | 40049 |
403 | Forbidden — permission, balance, KYC, or IP restriction | 40012, 40029, 40037, 40046, 40056, 40062, 40078 |
404 | Not found | 40004 |
405 | Method not allowed | 40032, 40045 |
409 | Conflict — resource state, duplicate, or concurrent modification | 40007, 40014, 40020, 40048, 40060, 40064–40067, 40069, 40074 |
429 | Rate limited or account locked | 40018, 40026–40027, 40052 |
500 | Internal server error | 40001–40002, 40022–40023, 40043, 40072 |
502 | Upstream dependency failed | 40008, 40039–40040 |
503 | Service unavailable — retry later | 40017 |
Error schema
msgstringrequiredHuman-readable description of the failure.
codestring | nullShort code for programmatic handling.
Last updated on