# Rates

sidebar:
  order: 2

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

Returns current Venezuelan Bolivar (VES) exchange rates for all supported currencies.

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

### Request

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

---
sidebar:
  order: 2

### Response

#### Currencies

The response is a flat object where each key is a currency code. BCV-sourced currencies (`USD`, `EUR`, `RUB`, `CNY`, `TRY`) share the same shape. `USDT` differs slightly.

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

| Field | Type | Description |
|---|---|---|
| `market` | string | Always `"BCV"` for official Banco Central de Venezuela rates |
| `rate` | number | Exchange rate: how many VES per 1 unit of this currency |
| `indicator` | number | Percentage change from the previous rate |
| `indicator_amount` | number | Absolute change from the previous rate in VES |
| `valid_date` | string (ISO 8601 date) | Date this rate is valid for, e.g. `"2026-04-30"` |

**USDT**

| Field | Type | Description |
|---|---|---|
| `market` | string | Source exchange, e.g. `"Binance"` |
| `rate` | number | VES per 1 USDT |
| `indicator` | number | Percentage change from the previous rate |
| `indicator_amount` | number | Absolute change in VES |
| `timestamp` | string (ISO 8601 datetime) | When this rate was last fetched |

#### `future_bcv`

When the BCV publishes the next day's rates (typically in the evening), they appear under `future_bcv` before they become the current rates. The structure mirrors the BCV currencies above.

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

`valid_date` inside `future_bcv` is the date these rates will take effect. If the BCV has not yet published tomorrow's rates, `future_bcv` is an empty object `{}`.

#### `quota`

Every response includes your current usage for the billing period.

| Field | Type | Description |
|---|---|---|
| `current_usage` | integer | Requests made this calendar month |
| `monthly_limit` | integer | Your plan's monthly limit |
| `remaining` | integer | Requests remaining before your quota is exhausted |
| `reset_at` | string (ISO 8601 datetime) | When the current period started |
| `next_reset` | string (ISO 8601 datetime) | When your counter resets — always the 1st of next month |
| `subscription_name` | string | Your current plan name, e.g. `"Free Tier"` |

---
sidebar:
  order: 2

### Example response

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

---
sidebar:
  order: 2

### HTTP status codes

| Code | Meaning |
|---|---|
| `200 OK` | Success. Response body contains rates and quota. |
| `401 Unauthorized` | Missing, malformed, or inactive token. |
| `429 Too Many Requests` | Monthly quota exhausted. Check `next_reset` in the error body. |
| `500 Internal Server Error` | Server error. Retry after a short delay. |

#### 401 response body

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

#### 429 response body — quota exceeded

```json
{
  "error": "Monthly quota limit exceeded",
  "quota_remaining": 0,
  "subscription": "Free Tier",
  "quota_limit": 1000,
  "reset_at": "2026-05-01T00:00:00Z"
}
```
**Tip:** To increase your monthly limit, contact [soporte@vzla.io](mailto:soporte@vzla.io).