# Bancos

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

Devuelve la entrada de tasa de cambio más reciente (compra/venta/promedio) para cada banco venezolano, cotizada en VES. Los resultados se ordenan por fecha descendente — los bancos que reportan con mayor frecuencia aparecen primero. `buy` y `sell` pueden ser `null` para bancos que solo reportan un lado.

| | |
|---|---|
| **Método** | `GET` |
| **URL** | `https://app.vzla.io/api/quantis/v2/rates/banks/` |
| **Autenticación** | `Authorization: Bearer vzlaio_...` |
| **Parámetros** | Ninguno |

### Solicitud

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

---

### Respuesta

#### `data`

Un array de objetos de tasa bancaria, uno por banco.

| Campo | Tipo | Descripción |
|---|---|---|
| `bank_name` | string | Nombre del banco, p. ej. `"Banco de Venezuela"` |
| `date` | string (fecha ISO 8601) | Fecha en que se registró esta entrada |
| `buy` | string \| null | Tasa de compra: VES por 1 USD. `null` si no se reporta |
| `sell` | string \| null | Tasa de venta: VES por 1 USD. `null` si no se reporta |
| `average` | string | Promedio de compra y venta (o el lado disponible) |
| `indicators` | object | Indicadores de cambio para cada tasa |

**Objeto `indicators`**

| Campo | Tipo | Descripción |
|---|---|---|
| `buy_pct` | string \| null | Variación porcentual de la tasa de compra respecto a la entrada anterior |
| `buy_amount` | string \| null | Variación absoluta de la tasa de compra en VES |
| `sell_pct` | string \| null | Variación porcentual de la tasa de venta respecto a la entrada anterior |
| `sell_amount` | string \| null | Variación absoluta de la tasa de venta en VES |
| `average_pct` | string \| null | Variación porcentual del promedio respecto a la entrada anterior |
| `average_amount` | string \| null | Variación absoluta del promedio en VES |

Los campos de indicadores son `null` cuando la tasa correspondiente es `null` o cuando no existe entrada anterior con la que comparar.

#### `meta`

| Campo | Tipo | Descripción |
|---|---|---|
| `source` | string | Siempre `"banks"` |
| `currency_quote` | string | Siempre `"VES"` |

---

### Encabezados de respuesta

| Encabezado | Descripción |
|---|---|
| `X-API-Version` | `2.0` |
| `X-Quota-Limit` | Tu límite mensual de solicitudes |
| `X-Quota-Remaining` | Solicitudes restantes este mes |
| `X-Quota-Reset` | Timestamp ISO 8601 del próximo reinicio de cuota |
| `X-Request-ID` | UUID de esta solicitud |

---

### Ejemplo de respuesta

```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"
  }
}
```

---

### Códigos de estado HTTP

| Código | Significado |
|---|---|
| `200 OK` | Éxito. |
| `401 Unauthorized` | Token ausente o inválido. |
| `405 Method Not Allowed` | Solo se admite GET. |
| `429 Too Many Requests` | Cuota mensual agotada. |
| `500 Internal Server Error` | Error del servidor. Reintenta después de un momento. |

#### 401 — sin encabezado Authorization

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

#### 401 — token inválido

```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:** Este endpoint tiene caché de **30 minutos**. Los bancos reportan con distintas frecuencias — algunos actualizan diariamente, otros con menos regularidad. El campo `date` de cada entrada indica cuándo reportó ese banco por última vez.