Skip to main content
Errors return a consistent bilingual envelope with a machine-readable code, English and Arabic messages, a request id for support, and a docs link:
Always branch on error_code (stable), not the message text.

HTTP statuses

Error codes

The complete code list (including OTP, webhook, session, and Nafath codes) is in the API Reference Error schema.

Request id

Every response carries the request id in the x-request-id response header. An error response also carries it in the body as request_id (the same value). A browser client can read the header (it is exposed through CORS). Use the id to find the request in the portal Request log, and include it when contacting support — it lets us find the exact request in the logs.