General
Errors
Standard error envelope and error codes.
Error envelope
JSON
{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "The API key is invalid.",
"request_id": "req_..."
}
}
Every response includes a request_id (also returned as
X-Request-Id) for support. Domain validation failures may include
error.details with extra fields such as code.
Error codes
| Code | Typical status | Meaning | What to do |
|---|---|---|---|
INVALID_API_KEY |
401 | Missing, malformed, or unknown API key | Send Authorization: Bearer pk_live_... |
API_ACCESS_DISABLED |
403 | Account API access is disabled | Contact support or check account status |
API_KEY_REVOKED |
401 | Key was revoked | Create a new key in the dashboard |
API_KEY_EXPIRED |
401 | Key expiration date passed | Create a new key |
SERVICE_ACCESS_DENIED |
403 | Key lacks write_post or smm permission | Enable the required service on the key |
PLAN_ACCESS_DENIED |
403 | Reserved plan-gate code | Plan limits today usually surface as VALIDATION_ERROR with HTTP 403 and details.code = plan_limit |
RATE_LIMIT_EXCEEDED |
429 | Too many requests for this key | Respect Retry-After and rate-limit headers |
INVALID_REQUEST |
400 / 401 | Malformed JSON, or API key passed in the query string | Use JSON body + Authorization header only |
VALIDATION_ERROR |
400+ | Payload or domain validation failed | Read message / details; may map to 402/403/409/502 |
RESOURCE_NOT_FOUND |
404 | Post, service, or order not found (or not owned) | Verify IDs belong to your account |
ACCOUNT_SUSPENDED |
403 | Account is suspended | Contact support |
INTERNAL_ERROR |
500+ | Unexpected server error | Retry with the request_id for support |
Domain details
When a domain exception includes extra data, the error may look like:
JSON
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Insufficient balance.",
"request_id": "req_...",
"details": {
"code": "insufficient_balance"
}
}
}
Common details.code values: insufficient_balance, price_changed, plan_limit.