Skip to main content
When something goes wrong, the Examino API always returns a structured JSON body. Every error — regardless of its HTTP status code — uses the same envelope, so you can build a single error-handling layer in your client code.

Error Envelope

Here is a representative error response:
Error response body
object
required
The top-level error container.
string (UUID)
required
A unique identifier for this specific API call. Present on every response — both successes and errors. Log it alongside every request you make; it is the only reference Examino support can use to trace a call on the server side.
Always key your error-handling logic on error.code, not on error.message. Error messages are for human readers and may be updated without notice. Error codes are stable across API versions.

Error Codes

The details Field

The details field is optional and its shape depends on the error code.
When the request body fails schema validation, details is an array of objects. Each object describes one schema violation:
invalid_request details
  • path is an array of keys and array indices that locates the invalid field in your request body.
  • code is the validation rule that failed (e.g., too_big, invalid_type, required).
  • maximum and similar fields are present when they are relevant to the violated rule.
A single request can fail multiple validation rules; fix all reported paths before retrying.
When a correction launch is rejected because of a business rule, details is an object with a reason field:
unprocessable details
Refer to the Corrections reference for the full list of reason values and how to resolve each one.
For all other error codes, details is absent from the response body. The error.code and error.message fields contain everything you need.

The requestId Field

Every response — success or error — carries a request ID in two places:
  • Response body: the requestId top-level field.
  • Response header: the x-request-id header.
Response headers (excerpt)
Log the requestId (or capture x-request-id) for every API call in your application logs. When you contact Examino support about an unexpected response, sharing the request ID allows the team to pull the exact server-side trace immediately.

Retry Guidance

Not all errors are worth retrying. Use this table to decide:
For internal_error retries on mutating endpoints (POST, PATCH, DELETE), always include an idempotency key in your request so that a successful server-side operation that returned a 500 due to a network hiccup is not executed a second time. Refer to the individual endpoint docs for idempotency key support.