> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.ripio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Basic Information

> Welcome to the Ripio Wallet API documentation.

The Ripio Wallet API allows third-party integrations to access wallet data on behalf of users. All requests must be authenticated with the key / secret pair issued by Ripio, and must have the required permissions for each endpoint.

All requests and responses use JSON format (`application/json`).

More endpoints will be made available with time.

### Success

All successful requests return an HTTP `2xx` status with the following body:

```json theme={null}
{
  "error_code": null,
  "message": null,
  "data": {
    "some_data": "ok"
  }
}
```

On success, `error_code` and `message` are always `null`. The response payload is in `data`.

### Error

On error, `error_code` and `message` are populated. `data` is `null` for simple errors, or contains field-level details when there are multiple validation errors.

**Single error:**

```json theme={null}
{
  "error_code": "TXN_0420",
  "message": "Invalid address",
  "data": null
}
```

**Multiple field errors** (e.g. form validation):

```json theme={null}
{
  "error_code": "CURR_0002",
  "message": "The currency is disabled",
  "data": {
    "currency": [{ "code": "CURR_0002", "detail": "The currency is disabled" }],
    "network": [{ "code": "NET_0001", "detail": "Unsupported network" }]
  }
}
```

When `data` is present on an error, it maps each field name to its list of errors — useful for highlighting specific form inputs on the client side.

**Authentication / authorization error:**

```json theme={null}
{
  "error_code": "ERR_0008",
  "message": "Authentication credentials were not provided.",
  "data": null
}
```

### Generic error codes

| Code       | HTTP status | Meaning             |
| ---------- | ----------- | ------------------- |
| `ERR_0001` | 500         | Internal error      |
| `ERR_0003` | 400         | Bad request         |
| `ERR_0004` | 404         | Not found           |
| `ERR_0005` | 409         | Conflict            |
| `ERR_0006` | 503         | Service unavailable |
| `ERR_0008` | 401         | Unauthorized        |
| `ERR_0009` | 403         | Forbidden           |
| `ERR_0010` | 405         | Method not allowed  |
| `ERR_0012` | 429         | Too many requests   |

Upstream-specific codes (e.g. `TXN_0420`, `NET_0001`) are passed through as-is. Generic `ERR_XXXX` codes are only used as fallback when no upstream code is present.
