# HTTP — `GET /v1/rateLimits`

Current usage of the authenticated user's exchange request budget. Requires an
API key. Takes no query parameters or request body. An API key cannot select
another user's budget, and IP limits are not exposed. The limits themselves are
listed in [HTTP — overview](/api/http-public#rate-limits).

```sh
curl "$MOSAIQ_API_BASE_URL/v1/rateLimits" \
  -H "Authorization: Bearer $MOSAIQ_API_KEY"
```

Example HTTP `200` response:

```json
{
  "status": "ok",
  "data": { "limit": 120, "used": 40, "remaining": 80 },
  "server_time_ms": 1790085600000
}
```

The user budget contains integer values:

| Field | Meaning |
| ----- | ------- |
| `limit` | Effective burst capacity and refill budget per minute, including a configured user override for exchange requests. |
| `used` | Capacity currently unavailable, equal to `limit - remaining`. This decreases as capacity refills; it is not a historical request count. |
| `remaining` | Whole requests available at the instant the budget is read. Concurrent requests may spend them before the next call. |

The user budget is shared by REST exchange and write WebSocket requests.
Rotating the API key does not reset it. Reading this endpoint
does not spend user capacity. An exhausted user budget still returns HTTP
`200` with `remaining: 0`. The usual request protections can return HTTP `429`
without disclosing their internal limits.

Read the budget again after reconnecting; do not assume a previous value is
still current. The response does not include venue quotas or WebSocket
connection, message, and in-flight limits.

| HTTP | Code | Meaning |
| ---- | ---- | ------- |
| `401` | `unauthorized` | Missing, invalid, expired, or revoked API key. |
| `403` | `not_registered` | The authenticated wallet has no Mosaiq account. |
| `429` | `rate_limited` | Request rate limit exceeded. |
| `500` | `internal_error` | The gateway could not load the account. |

Example HTTP `429` response:

```json
{
  "status": "error",
  "data": { "code": "rate_limited", "msg": "rate limit exceeded" },
  "server_time_ms": 1790085600000
}
```
