Skip to content

2.6 Common Integration Errors

Business errors always return HTTP status 200; judge by code, do not rely on the HTTP status code.

HTTPcodemessageCause
2000success (but response fields are all empty strings)Client parsed using camelCase; responses are always snake_case, adjust the JSON tags
20010000authentication failedSignature / X-Body-Hash mismatch. GET must use sha256("{}"); POST must use the JCS hash of the body
20010000missing body-hash in metadataX-Body-Hash header not sent
20010020ticket_id is required / invalid ticket_id formatMissing ticket_id or not in UUID format
20010020Time must be RFC3339 UTC (e.g. 2026-05-19T00:00:00Z), not a millisecond timestamp
20010030... not foundQueried object does not exist, or does not belong to this agent
20010060rate limit exceededExceeded the per-minute rate limit for this endpoint
20010080internal server errorInternal server error
20020160insufficient balancePlayer balance is insufficient to complete the withdrawal
4xxHTML error page, request did not pass the gateway (IP not whitelisted, incorrect Content-Type, GET sent with a body, etc.)

Most signature problems stem from body canonicalization or X-Body-Hash handling in the HMAC Verification Flow; when you hit 10000, check these two first.

BFX EXCHANGE · BE THE GAME CHANGER