Skip to main content
Failures always use the shared envelope: HTTP status gives you the class, error.code the specific condition, error.message a human-readable explanation, and error.details structured context where it exists:
Match on error.code, not message; messages are for humans and may be reworded. The two flat Sandbox probes are the only endpoints that don’t use this envelope.

400 Bad request

401 Unauthenticated

403 Forbidden

404 Not found

409 Conflict

415 Unsupported media type

429 Too many requests

500 Internal error

502 Upstream / on-chain failure

For 502s, the money-movement call also records a transaction row with status: "FAILED" and the revert context in error; check GET /transactions for the audit trail. Symptom-level fixes live in Troubleshooting.

503 Configuration

A 503 naming an environment variable means the deployment is missing required configuration. Platform-side; report the message text to your admin.