TasaVE
TasaVE · API v1

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.

Base URL
https://api.tasasbcv.tepuiitech.com/v1
Autenticación
Header · x-api-key
Formato
JSON · camelCase
Plan gratuito
10 req / día / clave
Tu primera llamada

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"
Envelope de respuesta

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_a1b2c3d4e5f6g7h8
Obtener API key¿Aún no tienes una? Es gratis: solo necesitas tu correo.

Lí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).

Encabezados en cada respuesta
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1784001600   # Unix (s) del próximo reinicio = 00:00 VET = 04:00 UTC
EncabezadoSignificado
X-RateLimit-LimitTu límite diario de llamadas (10 en el plan gratuito).
X-RateLimit-RemainingLlamadas que te quedan hoy.
X-RateLimit-ResetMarca de tiempo Unix (segundos) del próximo reinicio: las 00:00 en Venezuela.
Cuando alcanzas el límite · 429
{
  "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.

MonedaCó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.

GET/v1/rates/latest
Requiere API keyRateSet

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.

Parámetros

Ninguno.

Petición
curl https://api.tasasbcv.tepuiitech.com/v1/rates/latest \
  -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
Respuesta · 200 · RateSet
{
  "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"
}
GET/v1/rates/latest/{currency}
Requiere API keyRate

Devuelve la tasa más reciente para una sola moneda. Útil cuando solo te interesa, por ejemplo, el dólar.

Parámetros
ParámetroTipoReq.Descripción
currencystringEn la ruta. Uno de USD · EUR · CNY · TRY · RUB. No distingue mayúsculas.
Petición
curl https://api.tasasbcv.tepuiitech.com/v1/rates/latest/USD \
  -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
Respuesta · 200 · Rate
{
  "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.

GET/v1/rates/{date}
Requiere API keyRateSet

Devuelve las tasas de las cinco monedas para una fecha efectiva específica.

Parámetros
ParámetroTipoReq.Descripción
datestringEn la ruta. Fecha efectiva en formato YYYY-MM-DD.
Petición
curl https://api.tasasbcv.tepuiitech.com/v1/rates/2026-07-18 \
  -H "x-api-key: tsv_live_a1b2c3d4e5f6g7h8"
Respuesta · 200 · RateSet
{
  "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.

GET/v1/rates/history
Requiere API keyRateHistory

Devuelve la serie histórica de una moneda dentro de un rango de fechas. Ideal para reportes, gráficos y conciliaciones.

Parámetros
ParámetroTipoReq.Descripción
currencystringEn el query. Una de las cinco monedas.
fromstringEn el query. Fecha inicial YYYY-MM-DD.
tostringEn el query. Fecha final YYYY-MM-DD, ≥ from. El rango no puede superar 90 días.
Petición
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"
Respuesta · 200 · RateHistory
{
  "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).

GET/v1/preview/latest
PúblicoRateSet

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.

Parámetros

Ninguno · sin autenticación.

Petición
curl https://api.tasasbcv.tepuiitech.com/v1/preview/latest
Respuesta · 200 · RateSet
{
  "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.

Currency

Enum de las monedas soportadas —exactamente lo que publica el BCV.

Currency = "USD" | "EUR" | "CNY" | "TRY" | "RUB"
Rate
{ "currency": "USD", "rate": 36.582000, "rateDate": "2026-07-20" }
CampoTipoDescripción
currencyCurrencyCódigo de la moneda.
ratenumberBolívares por 1 unidad. Hasta 6 decimales (Numeric(18,6)).
rateDatestringFecha efectiva de la tasa, en YYYY-MM-DD.
RateSet

Devuelto por /rates/latest, /rates/{date} y /preview/latest.

{
  "rateDate": "2026-07-20",
  "source": "BCV",
  "rates": [ /* Rate[] */ ]
}
CampoTipoDescripción
rateDatestringFecha efectiva común a todas las monedas.
sourcestringSiempre "BCV" en v1.
ratesRate[]Una entrada por moneda.
RateHistory

Devuelto por /rates/history.

{
  "currency": "USD",
  "source": "BCV",
  "from": "2026-06-01",
  "to": "2026-06-30",
  "points": [ { "rateDate": "2026-06-02", "rate": 36.155000 } ]
}
CampoTipoDescripción
currencyCurrencyMoneda de la serie.
sourcestringSiempre "BCV" en v1.
fromstringInicio del rango solicitado.
tostringFin 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.

Envelope de error
{
  "success": false,
  "message": "Daily limit reached",
  "errors": [
    { "field": "general", "issue": "You have used all 10 requests for today" }
  ],
  "timestamp": "2026-07-20T22:00:00Z"
}
Catálogo
Códigomessage (contrato)Cuándo ocurre
400Invalid date rangeRango de history inválido (to < from o más de 90 días).
401Missing or invalid API keyFalta el encabezado x-api-key o la clave no es válida.
404No rate found for that dateNo hay tasa para esa fecha o moneda.
422Enter a valid email addressLa petición no pasó la validación del cuerpo.
429Daily limit reachedSuperaste las 10 llamadas de hoy. Reintenta tras el reinicio (00:00 VET).
500Something went wrongError inesperado del servidor. Reintenta en unos momentos.