GET /v1/fx/rates
Devuelve un snapshot con todas las tasas disponibles de bolívar venezolano frente a la moneda base.
Es el endpoint principal y el más usado. Una sola llamada te da todo lo que necesitas.
Request
GET /v1/fx/rates HTTP/1.1
Host: api.cotizave.com
X-API-Key: nd-tu-api-key-aqui
Accept: application/jsonParámetros de query
| Parámetro | Tipo | Requerido | Default | Descripción |
|---|---|---|---|---|
base | string | No | USD | Moneda base. Valores aceptados: USD, EUR |
markets | string | No | todos | Lista separada por comas de markets específicos. Ej: reference,parallel,binance |
Ejemplos de request
Tasas contra USD (default):
curl https://api.cotizave.com/v1/fx/rates \
-H "X-API-Key: nd-tu-api-key-aqui"Tasas contra EUR:
curl "https://api.cotizave.com/v1/fx/rates?base=EUR" \
-H "X-API-Key: nd-tu-api-key-aqui"Solo BCV y paralela:
curl "https://api.cotizave.com/v1/fx/rates?markets=reference,parallel" \
-H "X-API-Key: nd-tu-api-key-aqui"Solo exchanges P2P principales:
curl "https://api.cotizave.com/v1/fx/rates?markets=binance,bybit,okx" \
-H "X-API-Key: nd-tu-api-key-aqui"Response
200 OK
{
"country": "VE",
"currency": "VES",
"base": "USD",
"rates": [
{
"market": "reference",
"type": "reference",
"mid": 475.0083,
"updated_at": "2026-04-08T14:00:00Z"
},
{
"market": "parallel",
"type": "parallel",
"ask": 640.12,
"bid": 637.63,
"mid": 638.87,
"updated_at": "2026-04-08T17:25:00Z"
},
{
"market": "binance",
"type": "p2p",
"ask": 639.24,
"bid": 636.50,
"mid": 637.87,
"updated_at": "2026-04-08T17:29:00Z"
},
{
"market": "bybit",
"type": "p2p",
"ask": 639.88,
"bid": 637.12,
"mid": 638.50,
"updated_at": "2026-04-08T17:29:00Z"
},
{
"market": "okx",
"type": "p2p",
"ask": 635.80,
"bid": 632.70,
"mid": 634.25,
"updated_at": "2026-04-08T17:29:00Z"
},
{
"market": "bitget",
"type": "p2p",
"ask": 636.10,
"bid": 632.86,
"mid": 634.48,
"updated_at": "2026-04-08T17:29:00Z"
},
{
"market": "mexc",
"type": "p2p",
"ask": 650.50,
"bid": 647.54,
"mid": 649.02,
"updated_at": "2026-04-08T17:28:00Z"
}
],
"fetched_at": "2026-04-08T17:29:15Z"
}Schema de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
country | string | Siempre "VE" (ISO 3166-1 alpha-2 de Venezuela) |
currency | string | Siempre "VES" (ISO 4217 del bolívar soberano) |
base | string | Moneda base usada en las tasas (USD o EUR) |
rates | array | Lista de cotizaciones |
rates[].market | string | Identificador del mercado (ver tabla abajo) |
rates[].type | string | Tipo de tasa: reference, parallel o p2p |
rates[].ask | number | null | Precio de venta. Presente solo en parallel y p2p. |
rates[].bid | number | null | Precio de compra. Presente solo en parallel y p2p. |
rates[].mid | number | Precio promedio. Siempre presente. |
rates[].updated_at | string (ISO 8601) | Cuándo se actualizó esta cotización específica |
fetched_at | string (ISO 8601) | Cuándo Cotizave ensambló esta respuesta |
Markets disponibles
| Market | Tipo | Fuente | Frecuencia |
|---|---|---|---|
reference | reference | Banco Central de Venezuela | Cuando BCV publica (típicamente 1/día) |
parallel | parallel | Promedio de mercado | Cada 5 minutos |
binance | p2p | Binance P2P USDT/VES | Cada 1 minuto |
bybit | p2p | Bybit P2P USDT/VES | Cada 1 minuto |
okx | p2p | OKX P2P USDT/VES | Cada 1 minuto |
bitget | p2p | Bitget P2P USDT/VES | Cada 1 minuto |
mexc | p2p | MEXC P2P USDT/VES | Cada 1 minuto |
kucoin | p2p | KuCoin P2P USDT/VES | Cada 1 minuto |
bingx | p2p | BingX P2P USDT/VES | Cada 1 minuto |
coinex | p2p | CoinEx P2P USDT/VES | Cada 1 minuto |
saldo | p2p | Saldo P2P USDT/VES | Cada 1 minuto |
Tasas reference vs parallel vs p2p
reference (BCV): la tasa oficial publicada por el Banco Central. Úsala para:
- Facturación electrónica (SENIAT la reconoce)
- Declaraciones fiscales
- Reportes contables formales
- Cumplimiento normativo
parallel (paralela): el promedio de mercado del paralelo. Úsala para:
- Mostrar “la tasa real” en apps consumer
- Remesas informales
- Conversiones rápidas en la vida diaria
- Comparación contra la oficial
p2p (exchanges): cotizaciones reales de USDT/VES en cada exchange. Úsalas para:
- Apps de trading o wallet crypto
- Comparación de precios entre exchanges
- Análisis de spreads
- Estrategias de arbitraje
Errores posibles
| Código | error.code | Causa |
|---|---|---|
400 | invalid_base | El parámetro base no es USD ni EUR |
400 | invalid_markets | Uno de los markets solicitados no existe |
401 | unauthorized | API Key inválida o faltante |
429 | rate_limit_exceeded | Cuota mensual agotada |
502 | upstream_error | Todas las fuentes upstream están caídas (muy raro) |
Notas importantes
Fuentes temporalmente caídas
En casos excepcionales, una fuente upstream puede estar temporalmente caída. En ese caso:
- El campo
updated_atrefleja la edad real del dato (puede ser más viejo de lo habitual) - Si una fuente está caída por más de 10 minutos, la excluimos de la respuesta en lugar de devolver datos peligrosamente desactualizados
Recomendación: siempre revisa updated_at antes de confiar en un dato para operaciones críticas.
Orden de los rates
El orden del array rates no está garantizado. No dependas de que reference siempre esté primero. Usa el campo market para identificar cada cotización:
const bcv = data.rates.find(r => r.market === 'reference')
const paralela = data.rates.find(r => r.market === 'parallel')Precisión numérica
Los valores son números JSON estándar (double-precision floating point). Para operaciones financieras críticas, considera:
- Redondear a 2-4 decimales antes de mostrar al usuario
- Usar bibliotecas de aritmética decimal (
decimal.js,BigDecimalen Java,Decimalen Python) si haces cálculos complejos - No comparar montos exactos con
===(usar tolerancia)