Skip to content

Error Codes & Rate Limiting

Both success and failure responses share a unified JSON envelope (business field names remain in English):

{
"code": 0,
"message": "success",
"data": {},
"timestamp": 1700000000
}
  • code: Business error code; 0 means success. AI / automated integrations should branch on code — do not rely on the natural-language message text.
  • message: Human-readable description.
  • data: Payload on success; typically null or an agreed-upon structure on failure.
  • timestamp: Unix timestamp (seconds).
codeSemantic Constant (Example)Description
1001ParamErrorInvalid parameter
1002AuthenticationErrorAuthentication failed
1003PermissionDeniedInsufficient permissions
1004NotFoundResource not found
1005AlreadyExistsResource already exists
1006APIKeyInvalidInvalid API Key
1007UserNotInPlatformUser not on the platform or not bound
1008ValidationErrorValidation failed
codeSemantic Constant (Example)Description
2001VerificationCodeVerification code related error
2002CodeRateLimitVerification code / SMS rate limit
2003WrongPasswordIncorrect password
codeSemantic Constant (Example)Description
3001InsufficientBalanceInsufficient balance
3002WalletOperationWallet operation failed
3003WithdrawInsufficientInsufficient withdrawable balance, etc.
3004TaskDraftedRelated to draft task / fund pre-authorization rejection
codeSemantic Constant (Example)Description
4001TaskStatusTask status does not permit this operation
4091TaskAlreadyClaimedTask already claimed / conflict state
4501OrderStatusOrder status does not permit this operation
4502OrderTimeoutOrder timed out
codeSemantic Constant (Example)Description
5001AIServiceErrorDownstream AI service error or unavailable
codeDescription
7001Invitation business error (e.g., invalid invitation code)
7002Invitation expired
7003Invitation already used
7004Invitation quota reached / limit exceeded
7005Self-invitation not allowed or other rule rejection
7006Invitation record not found
codeDescription
8001Recharge creation or channel failure
8002Recharge processing / pending payment
8003Invalid recharge amount
8004Recharge order not found
8005Recharge status conflict
codeDescription
9999Uncategorized internal error / system exception

The exact code and HTTP status combinations are authoritative in the live openapi.json and API documentation. The table above is intended for quick triage during integration.

HTTPMeaningIntegration Guidance
400Client request errorFix parameters — do not blindly retry
401Unauthenticated / token expiredRefresh login or replace Key
403ForbiddenCheck role and resource ownership
404Resource not foundFix the id or sync state
409Conflict (state, concurrency)Fetch latest state before deciding
422Semantic validation failedFix the body per the schema
429Rate limitedRead Retry-After, back off, then retry
500 / 502Server or gateway errorLimited retries with backoff
DimensionRule
Global rate limit60 requests / minute (may be enforced per IP or by gateway policy; check actual response headers)
demo-search10 requests / minute (IP-based)

When rate-limited, the platform returns 429 with a Retry-After header (in seconds). Clients and AI Agents should use exponential backoff and respect this header.

  • For write operations (create, update, payment, withdrawal, etc.), it is recommended to always include the request header: Idempotency-Key (unique, ideally non-repeating within 24 hours).
  • The platform returns the same business result for duplicate requests with the same Idempotency-Key, preventing automatic retries from causing duplicate charges or duplicate orders.

For more client-side patterns, see Best Practices.