Status Codes
200 OK— Request successful201 Created— New object created202 Accepted— Request accepted, processing ongoing204 No Content— Request successful, no body returned302 Found— Redirect to a short-lived download URL (Download Testimony)400 Bad Request— Invalid input (password reset with a wrong or expired token)401 Unauthorized— Missing or invalid authentication403 Forbidden— Authenticated but not allowed: wrong role, not the owner, email not verified, or a guest-only endpoint called with a token404 Not Found— Resource does not exist405 Method Not Allowed— Unsupported HTTP method409 Conflict— Conflict with the current state: invalid state transition, duplicate offer, concurrent modification422 Unprocessable Content— Validation errors and business-rule violations429 Too Many Requests— Rate limit exceeded, see theRetry-Afterheader500 Internal Server Error— Unexpected server error502 Bad Gateway— Stripe could not be reached (Accept Offer)
All error responses return a JSON object with a message field. See Error Responses for details.