# Tasas

## GET /api/quantis/v1/rates/

Devuelve las tasas de cambio actuales del Bolívar venezolano (VES) para todas las monedas disponibles.

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

### Solicitud

```bash
curl --request GET \
  --url 'https://app.vzla.io/api/quantis/v1/rates/' \
  --header 'Authorization: Bearer gtbe_TU_TOKEN_AQUI' \
  --header 'Content-Type: application/json'
```

---

### Respuesta

#### Monedas

La respuesta es un objeto donde cada clave es un código de moneda. Las monedas del BCV (`USD`, `EUR`, `RUB`, `CNY`, `TRY`) comparten la misma estructura. `USDT` difiere levemente.

**Monedas BCV — `USD`, `EUR`, `RUB`, `CNY`, `TRY`**

| Campo | Tipo | Descripción |
|---|---|---|
| `market` | string | Siempre `"BCV"` para tasas oficiales del Banco Central de Venezuela |
| `rate` | number | Tasa de cambio: cuántos VES equivalen a 1 unidad de esta moneda |
| `indicator` | number | Variación porcentual respecto a la tasa anterior |
| `indicator_amount` | number | Variación absoluta respecto a la tasa anterior en VES |
| `valid_date` | string (fecha ISO 8601) | Fecha de vigencia de esta tasa, p. ej. `"2026-05-01"` |

**USDT**

| Campo | Tipo | Descripción |
|---|---|---|
| `market` | string | Exchange de origen, p. ej. `"Binance"` |
| `rate` | number | VES por 1 USDT |
| `indicator` | number | Variación porcentual respecto a la tasa anterior |
| `indicator_amount` | number | Variación absoluta en VES |
| `timestamp` | string (datetime ISO 8601) | Cuándo se obtuvo esta tasa por última vez |

#### `future_bcv`

Cuando el BCV publica las tasas del día siguiente (generalmente en la tarde), estas aparecen en `future_bcv` antes de convertirse en las tasas vigentes. La estructura es idéntica a las monedas BCV.

```json
"future_bcv": {
  "USD": {
    "rate": 92.50,
    "indicator": 0.16,
    "indicator_amount": 0.15,
    "timestamp": "2026-05-01T19:52:14.992318Z",
    "valid_date": "2026-05-02"
  }
}
```

`valid_date` dentro de `future_bcv` indica la fecha en que estas tasas entrarán en vigencia. Si el BCV aún no ha publicado las tasas del día siguiente, `future_bcv` es un objeto vacío `{}`.

#### `quota`

Cada respuesta incluye tu uso actual del período de facturación.

| Campo | Tipo | Descripción |
|---|---|---|
| `current_usage` | integer | Solicitudes realizadas este mes calendario |
| `monthly_limit` | integer | Límite mensual de tu plan |
| `remaining` | integer | Solicitudes restantes antes de agotar tu cuota |
| `reset_at` | string (datetime ISO 8601) | Cuándo comenzó el período actual |
| `next_reset` | string (datetime ISO 8601) | Cuándo se reinicia tu contador — siempre el 1 del próximo mes |
| `subscription_name` | string | Nombre de tu plan actual, p. ej. `"Free Tier"` |

---

### Ejemplo de respuesta

```json
{
  "USD": {
    "market": "BCV",
    "rate": 92.35,
    "indicator": 1.25,
    "indicator_amount": 1.14,
    "valid_date": "2026-05-01"
  },
  "EUR": {
    "market": "BCV",
    "rate": 105.80,
    "indicator": 0.93,
    "indicator_amount": 0.98,
    "valid_date": "2026-05-01"
  },
  "RUB": {
    "market": "BCV",
    "rate": 1.07,
    "indicator": -0.15,
    "indicator_amount": -0.002,
    "valid_date": "2026-05-01"
  },
  "CNY": {
    "market": "BCV",
    "rate": 12.65,
    "indicator": 0.42,
    "indicator_amount": 0.05,
    "valid_date": "2026-05-01"
  },
  "TRY": {
    "market": "BCV",
    "rate": 2.55,
    "indicator": -0.08,
    "indicator_amount": -0.002,
    "valid_date": "2026-05-01"
  },
  "USDT": {
    "market": "Binance",
    "rate": 95.10,
    "indicator": -0.01,
    "indicator_amount": -0.03,
    "timestamp": "2026-05-01T08:40:01.059569Z"
  },
  "future_bcv": {
    "USD": {
      "rate": 92.50,
      "indicator": 0.16,
      "indicator_amount": 0.15,
      "timestamp": "2026-05-01T19:52:14.992318Z",
      "valid_date": "2026-05-02"
    }
  },
  "quota": {
    "current_usage": 42,
    "monthly_limit": 1000,
    "remaining": 958,
    "reset_at": "2026-05-01T00:00:00Z",
    "next_reset": "2026-06-01T00:00:00Z",
    "subscription_name": "Free Tier"
  }
}
```

---

### Códigos de estado HTTP

| Código | Significado |
|---|---|
| `200 OK` | Éxito. El cuerpo de la respuesta contiene las tasas y la cuota. |
| `401 Unauthorized` | Token ausente, malformado o inactivo. |
| `429 Too Many Requests` | Cuota mensual agotada. Revisa `reset_at` en el cuerpo del error. |
| `500 Internal Server Error` | Error del servidor. Reintenta después de un momento. |

#### Cuerpo del error 401

```json
{
  "error": "Invalid authentication token"
}
```

#### Cuerpo del error 429 — cuota agotada

```json
{
  "error": "Monthly quota limit exceeded",
  "quota_remaining": 0,
  "subscription": "Free Tier",
  "quota_limit": 1000,
  "reset_at": "2026-06-01T00:00:00Z"
}
```
**Tip:** Para aumentar tu límite mensual, contacta a [soporte@vzla.io](mailto:soporte@vzla.io).