# Banks

sidebar:
  order: 12

## GET /api/quantis/v2/rates/banks/

Returns the most recent buy/sell/average exchange rate entry for each Venezuelan bank, quoted in VES. Results are sorted by date descending — banks that report more frequently appear at the top. `buy` and `sell` can be `null` for banks that only report one side.

| | |
|---|---|
| **Method** | `GET` |
| **URL** | `https://app.vzla.io/api/quantis/v2/rates/banks/` |
| **Authentication** | `Authorization: Bearer vzlaio_...` |
| **Parameters** | None |

### Request

```bash
curl --request GET \
  --url 'https://app.vzla.io/api/quantis/v2/rates/banks/' \
  --header 'Authorization: Bearer vzlaio_YOUR_TOKEN_HERE'
```

---
sidebar:
  order: 12

### Response

#### `data`

An array of bank rate objects, one per bank.

| Field | Type | Description |
|---|---|---|
| `bank_name` | string | Bank name, e.g. `"Banco de Venezuela"` |
| `date` | string (ISO 8601 date) | Date this entry was recorded |
| `buy` | string \| null | Buy rate: VES per 1 USD. `null` if not reported |
| `sell` | string \| null | Sell rate: VES per 1 USD. `null` if not reported |
| `average` | string | Average of buy and sell (or whichever side is available) |
| `indicators` | object | Change indicators for each rate |

**`indicators` object**

| Field | Type | Description |
|---|---|---|
| `buy_pct` | string \| null | Percentage change in buy rate vs. previous entry |
| `buy_amount` | string \| null | Absolute change in buy rate in VES |
| `sell_pct` | string \| null | Percentage change in sell rate vs. previous entry |
| `sell_amount` | string \| null | Absolute change in sell rate in VES |
| `average_pct` | string \| null | Percentage change in average rate vs. previous entry |
| `average_amount` | string \| null | Absolute change in average rate in VES |

Indicator fields are `null` when the corresponding rate is `null` or when there is no previous entry to compare against.

#### `meta`

| Field | Type | Description |
|---|---|---|
| `source` | string | Always `"banks"` |
| `currency_quote` | string | Always `"VES"` |

---
sidebar:
  order: 12

### Response headers

| Header | Description |
|---|---|
| `X-API-Version` | `2.0` |
| `X-Quota-Limit` | Your monthly request limit |
| `X-Quota-Remaining` | Requests remaining this month |
| `X-Quota-Reset` | ISO 8601 timestamp of next quota reset |
| `X-Request-ID` | UUID for this request |

---
sidebar:
  order: 12

### Example response

```json
{
  "data": [
    {
      "bank_name": "Otras Instituciones",
      "date": "2026-05-05",
      "buy": "589.08070000",
      "sell": "591.98960000",
      "average": "590.53515000",
      "indicators": {
        "buy_pct": "5.88998405",
        "buy_amount": "32.76680000",
        "sell_pct": "3.92183677",
        "sell_amount": "22.34070000",
        "average_pct": "4.89425583",
        "average_amount": "27.55375000"
      }
    },
    {
      "bank_name": "BBVA Provincial",
      "date": "2026-05-05",
      "buy": "525.00000000",
      "sell": "594.93830000",
      "average": "559.96915000",
      "indicators": {
        "buy_pct": "0.96153846",
        "buy_amount": "5.00000000",
        "sell_pct": "2.87071925",
        "sell_amount": "16.60240000",
        "average_pct": "1.96683000",
        "average_amount": "10.80120000"
      }
    },
    {
      "bank_name": "Banco de Venezuela",
      "date": "2025-12-16",
      "buy": null,
      "sell": "273.59370000",
      "average": "273.59370000",
      "indicators": {
        "buy_pct": null,
        "buy_amount": null,
        "sell_pct": "7.64891481",
        "sell_amount": "19.44000000",
        "average_pct": "7.64891481",
        "average_amount": "19.44000000"
      }
    }
  ],
  "meta": {
    "source": "banks",
    "currency_quote": "VES"
  }
}
```

---
sidebar:
  order: 12

### HTTP status codes

| Code | Meaning |
|---|---|
| `200 OK` | Success. |
| `401 Unauthorized` | Missing or invalid token. |
| `405 Method Not Allowed` | Only GET is supported. |
| `429 Too Many Requests` | Monthly quota exhausted. |
| `500 Internal Server Error` | Server error. Retry after a short delay. |

#### 401 — no Authorization header

```json
{
  "error": {
    "code": "auth_missing",
    "message": "Authentication credentials were not provided"
  }
}
```

#### 401 — invalid token

```json
{
  "error": {
    "code": "auth_token_unknown",
    "message": "Invalid token format"
  }
}
```

#### 429

```json
{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly quota limit exceeded.",
    "details": {
      "reset_at": "2026-06-01T00:00:00Z"
    }
  }
}
```
**Note:** This endpoint is cached for **30 minutes**. Banks report at different frequencies — some update daily, others less often. The `date` field on each entry tells you when that bank last reported.