# BCV Rates

## GET /api/quantis/v3/rates/bcv/

Returns the current official Banco Central de Venezuela (BCV) exchange rates for five currencies (USD, EUR, CNY, TRY, RUB) quoted in Venezuelan Bolivar (VES). When the BCV has already published the next day's rates, they appear under `next`.

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

### Request

```bash
curl --request GET \
  --url 'https://app.vzla.io/api/quantis/v3/rates/bcv/' \
  --header 'Authorization: Bearer qapi_YOUR_KEY_HERE'
```

---

### Response

#### `data.current`

The currently active BCV rates.

| Field | Type | Description |
|---|---|---|
| `valid_date` | string (ISO 8601 date) | Date these rates are in effect, e.g. `"2026-05-06"` |
| `timestamp` | string (ISO 8601 datetime) | When the BCV published these rates |
| `rates` | object | Map of currency code → rate object |

**Rate object** (keys: `USD`, `EUR`, `CNY`, `TRY`, `RUB`)

| Field | Type | Description |
|---|---|---|
| `rate` | string | VES per 1 unit of this currency |
| `indicator_pct` | string | Percentage change from the previous rate |
| `indicator_amount` | string | Absolute change from the previous rate in VES |

#### `data.next`

The next day's rates published in advance by the BCV. Has the same structure as `data.current`. Returns `null` if the BCV has not yet published tomorrow's rates.

#### `meta`

| Field | Type | Description |
|---|---|---|
| `source` | string | Always `"BCV"` |
| `currency_quote` | string | Always `"VES"` — all rates are quoted in Venezuelan Bolivar |

---

### Example response

```json
{
  "data": {
    "current": {
      "valid_date": "2026-05-06",
      "timestamp": "2026-05-06T09:32:03.108501+00:00",
      "rates": {
        "USD": {
          "rate": "493.37650000",
          "indicator_pct": "0.78066864",
          "indicator_amount": "3.82180000"
        },
        "EUR": {
          "rate": "577.52186207",
          "indicator_pct": "0.57960395",
          "indicator_amount": "3.32804999"
        },
        "CNY": {
          "rate": "72.23667642",
          "indicator_pct": "0.74082854",
          "indicator_amount": "0.53121453"
        },
        "TRY": {
          "rate": "10.91188465",
          "indicator_pct": "0.70889670",
          "indicator_amount": "0.07680949"
        },
        "RUB": {
          "rate": "6.54128604",
          "indicator_pct": "0.10523445",
          "indicator_amount": "0.00687645"
        }
      }
    },
    "next": null
  },
  "meta": {
    "source": "BCV",
    "currency_quote": "VES"
  }
}
```

---

### HTTP status codes

| Code | Meaning |
|---|---|
| `200 OK` | Success. |
| `401 Unauthorized` | Missing, invalid or revoked key. |
| `405 Method Not Allowed` | Only GET is supported. |
| `429 Too Many Requests` | Monthly quota spent (`quota_exceeded`) or rate limit hit (`throttled`). See [Tiers and limits](/quantis/v3/tiers-and-limits/). |
| `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 key

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

#### 429: monthly quota spent

```json
{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly quota exceeded. It resets on the 1st of next month."
  }
}
```

#### 429: rate limit hit

```json
{
  "error": {
    "code": "throttled",
    "message": "Rate limit exceeded",
    "details": {
      "retry_after": 1
    }
  }
}
```
**Note:** BCV rates update once per day on weekdays. This endpoint is cached for **60 minutes**.