Skip to main content
All responses — success and error — share the same envelope:
  • Success: error_code and message are null; data holds the payload.
  • Error: error_code and message are populated; data is null unless there are multiple field-level validation errors (see 400 — Bad request).

Note: field-level context in data

For multi-field validation errors (e.g. a form submission with several invalid inputs), data carries the full error structure so the client can map each error back to the right input field. For all other errors data is null.

Generic error codes

These codes are used as fallbacks when the upstream service does not return a specific error code. Upstream-specific codes (e.g. TXN_0420, CVU_1005) are passed through unchanged and always take precedence.

400 — Bad request

Returned when something is missing or wrong with a request.

Missing or wrong serializer fields

When multiple fields are invalid, error_code and message are taken from the first field error. All field errors are preserved in data.

Single field error

When only one field is invalid, data is null.

Non-serializer error (generic)

Errors not associated with a specific input field (e.g. business-logic validation). data is null.

401 — Unauthorized

Returned when the request cannot be authenticated.

User not found

The token is valid but the user referenced by it does not exist.

403 — Forbidden

Returned when the token is valid but lacks the permissions required by the endpoint. Every endpoint requires at least the general_data_read permission. Additional permissions may be required per endpoint (e.g. balance_read for the balance endpoint).

404 — Not Found

Returned when the requested endpoint does not exist.

405 — Method Not Allowed

Returned when the HTTP method used is not supported by the endpoint.

409 — Conflict

Returned when some internal conflict occurred within a request, for example a duplicate entity or an exceeded limit.

429 — Too Many Requests

Returned when the client exceeds the rate limit for an endpoint.

500 — Internal Error

Returned when an unexpected error occurs on the server. If this error persists, contact Ripio support.

503 — Service Unavailable

Returned when a third-party service fails to respond.