Documentación de TasaVE
La API de las tasas oficiales del BCV. Autentícate con tu API key y consulta las tasas más recientes o el historial. Respuestas en JSON, listas para tu web, tu app o tu backend.
Todas las peticiones parten de la misma base y viajan con tu clave en el encabezado x-api-key. Esta trae las tasas de hoy para las cinco monedas:
curl https://api.tasasbcv.tepuiitech.com/v1/rates/latest \ -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
Toda respuesta —de éxito o de error— comparte el mismo envelope. Los datos del endpoint viven dentro de data:
{ "success": true, "message": "OK", "data": { /* la forma depende del endpoint */ }, "timestamp": "2026-07-20T22:00:00Z" }
El contrato usa punto decimal en inglés (36.582000) y marcas de tiempo ISO-8601 en UTC. Tu interfaz formatea las tasas a es-VE (36,58 Bs) y las fechas a la hora de Venezuela.
Autenticación
Envía tu clave en el encabezado x-api-key en cada petición a la API de tasas. Sin una clave válida recibirás un 401.
x-api-key: tsv_live_a1b2c3d4e5f6g7h8Límites de uso
Plan gratuito: 10 llamadas por día por clave. Al superarlo, la API responde 429 hasta el próximo reinicio. El contador se reinicia a la medianoche, hora de Venezuela (America/Caracas).
X-RateLimit-Limit: 10 X-RateLimit-Remaining: 7 X-RateLimit-Reset: 1784001600 # Unix (s) del próximo reinicio = 00:00 VET = 04:00 UTC
| Encabezado | Significado |
|---|---|
| X-RateLimit-Limit | Tu límite diario de llamadas (10 en el plan gratuito). |
| X-RateLimit-Remaining | Llamadas que te quedan hoy. |
| X-RateLimit-Reset | Marca de tiempo Unix (segundos) del próximo reinicio: las 00:00 en Venezuela. |
{ "success": false, "message": "Daily limit reached", "errors": [ { "field": "general", "issue": "You have used all 10 requests for today" } ], "timestamp": "2026-07-20T22:00:00Z" }
El campo message del contrato viene en inglés. Tu interfaz debe mostrar el equivalente en español —por ejemplo «Alcanzaste el límite diario, vuelve a las 00:00»— y nunca el texto crudo de la API.
Monedas
TasaVE cubre cinco monedas. Todas las tasas se expresan en bolívares (Bs) por 1 unidad de la moneda. USD es la moneda principal en la interfaz.
| Moneda | Código (wire) | Nombre |
|---|---|---|
| USD | "USD" | Dólar estadounidense |
| EUR | "EUR" | Euro |
| CNY | "CNY" | Yuan chino |
| TRY | "TRY" | Lira turca |
| RUB | "RUB" | Rublo ruso |
En el contrato, el parámetro {currency} acepta cualquiera de estos códigos y no distingue mayúsculas de minúsculas (usd = USD).
Endpoints
Todos los endpoints de tasas usan GET y requieren tu API key. Cada llamada cuenta como una petición contra tu límite diario de 10. La vista previa pública es la excepción: no requiere clave ni consume cuota.
Devuelve las tasas más recientes para las cinco monedas, con su fecha efectiva común (rateDate). Es la llamada que usarás casi siempre.
Ninguno.
curl https://api.tasasbcv.tepuiitech.com/v1/rates/latest \ -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
{ "success": true, "message": "OK", "data": { "rateDate": "2026-07-20", "source": "BCV", "rates": [ { "currency": "USD", "rate": 36.582000, "rateDate": "2026-07-20" }, { "currency": "EUR", "rate": 39.914500, "rateDate": "2026-07-20" }, { "currency": "CNY", "rate": 5.041200, "rateDate": "2026-07-20" }, { "currency": "TRY", "rate": 1.086700, "rateDate": "2026-07-20" }, { "currency": "RUB", "rate": 0.412300, "rateDate": "2026-07-20" } ] }, "timestamp": "2026-07-20T13:05:00Z" }
Devuelve la tasa más reciente para una sola moneda. Útil cuando solo te interesa, por ejemplo, el dólar.
| Parámetro | Tipo | Req. | Descripción |
|---|---|---|---|
| currency | string | Sí | En la ruta. Uno de USD · EUR · CNY · TRY · RUB. No distingue mayúsculas. |
curl https://api.tasasbcv.tepuiitech.com/v1/rates/latest/USD \ -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
{ "success": true, "message": "OK", "data": { "currency": "USD", "rate": 36.582000, "rateDate": "2026-07-20" }, "timestamp": "2026-07-20T13:05:00Z" }
Responde 404 si no hay tasa para esa moneda.
Devuelve las tasas de las cinco monedas para una fecha efectiva específica.
| Parámetro | Tipo | Req. | Descripción |
|---|---|---|---|
| date | string | Sí | En la ruta. Fecha efectiva en formato YYYY-MM-DD. |
curl https://api.tasasbcv.tepuiitech.com/v1/rates/2026-07-18 \ -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
{ "success": true, "message": "OK", "data": { "rateDate": "2026-07-20", "source": "BCV", "rates": [ { "currency": "USD", "rate": 36.582000, "rateDate": "2026-07-20" }, { "currency": "EUR", "rate": 39.914500, "rateDate": "2026-07-20" }, { "currency": "CNY", "rate": 5.041200, "rateDate": "2026-07-20" }, { "currency": "TRY", "rate": 1.086700, "rateDate": "2026-07-20" }, { "currency": "RUB", "rate": 0.412300, "rateDate": "2026-07-20" } ] }, "timestamp": "2026-07-20T13:05:00Z" }
Responde 404 si no existen tasas para esa fecha —por ejemplo un fin de semana o feriado sin publicación del BCV.
Devuelve la serie histórica de una moneda dentro de un rango de fechas. Ideal para reportes, gráficos y conciliaciones.
| Parámetro | Tipo | Req. | Descripción |
|---|---|---|---|
| currency | string | Sí | En el query. Una de las cinco monedas. |
| from | string | Sí | En el query. Fecha inicial YYYY-MM-DD. |
| to | string | Sí | En el query. Fecha final YYYY-MM-DD, ≥ from. El rango no puede superar 90 días. |
curl "https://api.tasasbcv.tepuiitech.com/v1/rates/history?currency=USD&from=2026-06-01&to=2026-06-30" \ -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
{ "success": true, "message": "OK", "data": { "currency": "USD", "source": "BCV", "from": "2026-06-01", "to": "2026-06-30", "points": [ { "rateDate": "2026-06-02", "rate": 36.155000 }, { "rateDate": "2026-06-03", "rate": 36.201000 } ] }, "timestamp": "2026-07-20T13:05:00Z" }
Los points vienen en orden ascendente por fecha. El BCV no publica todos los días: los huecos (fines de semana, feriados) simplemente no aparecen —no hay interpolación. Un rango inválido o mayor a 90 días devuelve un error de validación (400).
Vista previa pública que alimenta el widget de tasas de la página de inicio. No requiere API key, está cacheada en el borde (~5–15 min) y no cuenta contra tu cuota.
Ninguno · sin autenticación.
curl https://api.tasasbcv.tepuiitech.com/v1/preview/latest
{ "success": true, "message": "OK", "data": { "rateDate": "2026-07-20", "source": "BCV", "rates": [ { "currency": "USD", "rate": 36.582000 }, { "currency": "EUR", "rate": 39.914500 } ] }, "timestamp": "2026-07-20T13:05:00Z" }
Objetos
Las formas que devuelve la API dentro de data. Los nombres de campo siempre van en inglés/camelCase; las tasas son números con hasta 6 decimales.
Enum de las monedas soportadas —exactamente lo que publica el BCV.
Currency = "USD" | "EUR" | "CNY" | "TRY" | "RUB"
{ "currency": "USD", "rate": 36.582000, "rateDate": "2026-07-20" }
| Campo | Tipo | Descripción |
|---|---|---|
| currency | Currency | Código de la moneda. |
| rate | number | Bolívares por 1 unidad. Hasta 6 decimales (Numeric(18,6)). |
| rateDate | string | Fecha efectiva de la tasa, en YYYY-MM-DD. |
Devuelto por /rates/latest, /rates/{date} y /preview/latest.
{ "rateDate": "2026-07-20", "source": "BCV", "rates": [ /* Rate[] */ ] }
| Campo | Tipo | Descripción |
|---|---|---|
| rateDate | string | Fecha efectiva común a todas las monedas. |
| source | string | Siempre "BCV" en v1. |
| rates | Rate[] | Una entrada por moneda. |
Devuelto por /rates/history.
{ "currency": "USD", "source": "BCV", "from": "2026-06-01", "to": "2026-06-30", "points": [ { "rateDate": "2026-06-02", "rate": 36.155000 } ] }
| Campo | Tipo | Descripción |
|---|---|---|
| currency | Currency | Moneda de la serie. |
| source | string | Siempre "BCV" en v1. |
| from | string | Inicio del rango solicitado. |
| to | string | Fin del rango solicitado. |
| points | { rateDate, rate }[] | Puntos ascendentes por fecha; los días sin publicación se omiten. |
Errores
Cuando algo sale mal, la API responde con un código HTTP y este envelope de error. El campo message viene en inglés (contrato); tu interfaz debe mostrar el equivalente en español.
{ "success": false, "message": "Daily limit reached", "errors": [ { "field": "general", "issue": "You have used all 10 requests for today" } ], "timestamp": "2026-07-20T22:00:00Z" }
| Código | message (contrato) | Cuándo ocurre |
|---|---|---|
| 400 | Invalid date range | Rango de history inválido (to < from o más de 90 días). |
| 401 | Missing or invalid API key | Falta el encabezado x-api-key o la clave no es válida. |
| 404 | No rate found for that date | No hay tasa para esa fecha o moneda. |
| 422 | Enter a valid email address | La petición no pasó la validación del cuerpo. |
| 429 | Daily limit reached | Superaste las 10 llamadas de hoy. Reintenta tras el reinicio (00:00 VET). |
| 500 | Something went wrong | Error inesperado del servidor. Reintenta en unos momentos. |