# GET /v1/xrpl/account/{address}/lines

One page of an account's trust lines, with an opaque cursor for the next page.

## Purpose

Returns one page of trust lines: peer, canonical currency, balance, limit, peer limit and the `no_ripple`, `freeze` and `authorized` flags of both sides; amounts are decimal strings. `limit` is 10 to 400 lines (default 100), `peer` keeps only lines with that counterparty, and `marker` is an opaque cursor: send it back unchanged to get the next page; it is `null` on the last page and only valid for the address that produced it.

## When to use

To list every trust line of an account (balances, limits, freeze and authorization flags), page by page.

## When not to use

For a quick capped overview with the XRP balance, use `/v1/xrpl/account/{address}/summary`; for issued totals of a token, use the token endpoint.

## Parameters

| Name | In | Required | Description | Constraints | Example |
|---|---|---|---|---|---|
| `address` | path | yes | Classic XRPL account address. | Valid classic XRPL address: starts with `r`, 25 to 35 base58 characters, checksum verified | `rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh` |
| `limit` | query | no | Lines per page. | Integer from 10 to 400; default 100 | `100` |
| `peer` | query | no | Only lines with this counterparty. | Valid classic XRPL address | `rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B` |
| `marker` | query | no | Opaque cursor from the previous page's `marker`. | Exactly as returned for this address; any other value is rejected with 400 | `eyJ2IjoxLCJlIjoibGluZXMiLCJhIjoiciIsIm0iOiIxIn0` |

## Request example

```sh
curl -s "https://api.criptonlabs.com/v1/xrpl/account/rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh/lines?limit=100"
```

## Response example (200)

```json
{
  "address": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
  "limit": 100,
  "peer": null,
  "lines": [
    {
      "peer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
      "currency": "USD",
      "balance": "-10.5",
      "limit": "0",
      "peer_limit": "1000000",
      "no_ripple": true,
      "no_ripple_peer": false,
      "freeze": false,
      "freeze_peer": false,
      "authorized": false,
      "peer_authorized": false
    }
  ],
  "marker": null,
  "meta": {
    "ledger_index": 100234566,
    "as_of": "2026-10-06T12:00:03.000Z",
    "age_seconds": 3,
    "cache": "hit",
    "stale": false
  }
}
```

## Errors

- 400 [invalid-parameters](https://api.criptonlabs.com/errors/invalid-parameters.md)
- 400 [bad-request](https://api.criptonlabs.com/errors/bad-request.md)
- 404 [not-found](https://api.criptonlabs.com/errors/not-found.md)
- 429 [rate-limited](https://api.criptonlabs.com/errors/rate-limited.md)
- 503 [upstream-unavailable](https://api.criptonlabs.com/errors/upstream-unavailable.md)

## Caching

Fresh for 10 seconds; on upstream failure the last good value is served for up to 120 seconds (`meta.stale` is `true`), then the service answers 503. See the [freshness guide](https://api.criptonlabs.com/docs/guides/freshness.md).

## Rate limit

Tier `expensive`. See the [rate-limits guide](https://api.criptonlabs.com/docs/guides/rate-limits.md).

## MCP tool

The MCP tool `xrpl_account_lines` returns the same data. See the [MCP quickstart](https://api.criptonlabs.com/docs/guides/mcp-quickstart.md).
