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

# Limits

> GET /v1/limits - per-transfer ceilings and settlement times, per currency and rail.

Returns the per-transfer ceiling and the settlement time for every currency and
rail. Limits are set by the rails themselves, so read them at runtime - a
hard-coded ceiling goes stale without warning.

The human-readable tables, grouped by region, are on [Coverage](/coverage).

## Request

<ParamField query="currency" type="string">
  Only limits for this ISO 4217 currency, e.g. `EUR`. Omit for all.
</ParamField>

## Response

<ResponseField name="limits" type="array">
  One entry per currency and rail combination.

  <Expandable title="limits[]">
    <ResponseField name="currency" type="string">
      ISO 4217 code.
    </ResponseField>

    <ResponseField name="rail" type="string">
      The rail the limit applies to, e.g. `sepa_instant`.
    </ResponseField>

    <ResponseField name="direction" type="string">
      `pay_in`, `payout`, or `both`.
    </ResponseField>

    <ResponseField name="max" type="string | null">
      The per-transfer ceiling as a decimal string in the currency's major unit.
      `null` where the rail sets no fixed ceiling.
    </ResponseField>

    <ResponseField name="min" type="string | null">
      The per-transfer minimum, where the rail has one. `null` otherwise.
    </ResponseField>

    <ResponseField name="settlement" type="string">
      How long the rail takes, e.g. `instant`, `t+0`, `t+1`, `t+1..t+3`, or
      `under_2h`.
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  The stablecoin deposit path has no fixed ceiling here - it is bounded by live
  liquidity on the route, which is why a quote can come back `no_route`. That is a
  normal, temporary answer, not an error to retry in a loop.
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl "$RHEON_API/v1/limits?currency=EUR" \
    -H "Authorization: Bearer $RHEON_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "limits": [
      {
        "currency": "EUR",
        "rail": "sepa_instant",
        "direction": "both",
        "max": "100000.00",
        "min": null,
        "settlement": "instant"
      },
      {
        "currency": "EUR",
        "rail": "sepa",
        "direction": "both",
        "max": null,
        "min": null,
        "settlement": "t+0..t+1"
      },
      {
        "currency": "EUR",
        "rail": "swift",
        "direction": "payout",
        "max": null,
        "min": null,
        "settlement": "t+1..t+3"
      }
    ]
  }
  ```
</ResponseExample>

## Errors

| HTTP | `code`            | When                                     |
| ---- | ----------------- | ---------------------------------------- |
| 400  | `invalid_request` | `currency` is not a known ISO 4217 code. |
| 401  | `unauthorized`    | Missing, malformed, or unknown API key.  |
| 429  | `rate_limited`    | Over your key's rate limit.              |
| 500  | `internal`        | Unexpected server error.                 |
