Venezuelan Bolívar Soberano (VES) Price Today — Mid-market Rate and API Endpoint Notes
You need to display the Venezuelan Bolívar Soberano (VES) mid-market rate today, convert amounts between USD and VES, and wire this into dashboards or alerts. By the end of this article you will query VES with a single Latest API call, parse the exact fields you need (date, timestamp, base, rates), and understand how to extend it with time-series for daily moves.
Goal and scope: get today’s VES mid-market and make it usable
We’ll focus on two endpoints that matter for daily pricing and monitoring:
- Latest endpoint: fetches the current mid-market rate for VES.
- Time-series endpoint: pulls daily historical rates to power charts and day-over-day change calculations.
We will not list every endpoint here; if you need conversions, intraday, or OHLC later, you can find them in the Indices-API Documentation.
Symbols to use and how quotes are expressed
For VES, you will typically rely on:
- VES: interpreted relative to the base currency (by default USD). With base USD, rates.VES means VES per 1 USD.
- USDVES: an explicit USD-per-VES quote, which is the inverse of VES-per-USD.
Because symbols can vary by provider and product, always confirm exact codes on the Indices-API Supported Symbols page before shipping to production.
Fetch today’s VES mid-market rate with one request
The Latest endpoint returns a payload with a single base currency (default USD) and a dictionary of rates. Your API key is passed via the access_key query parameter.
curl request
curl -s 'https://indices-api.com/api/latest?access_key=YOUR_API_KEY'
Official JSON response (VES today)
{"data":{"success":true,"timestamp":1792302060,"date":"2026-10-18","base":"USD","rates":{"VES":878.921529,"USD":1,"USDVES":0.0011377579988713646}}}
What the fields mean (and which ones you’ll actually use)
- data.success: boolean indicating a successful response.
- data.timestamp: Unix time (UTC). Use this to align caches and avoid re-requesting within your freshness window.
- data.date: the calendar date associated with the rates (UTC). Useful when rendering “as of” labels.
- data.base: the quote base, here “USD”. All rates are expressed relative to this base.
- data.rates.VES: with base USD, this is VES per 1 USD (mid-market).
- data.rates.USD: the base itself equals 1.
- data.rates.USDVES: USD per 1 VES (i.e., the inverse of VES per USD).
With the above, you can compute both directions:
- USD → VES: amount_usd × rates.VES
- VES → USD: amount_ves × rates.USDVES
Python example: read base, date, timestamp, and convert both ways
This script hits the same Latest endpoint, checks success, extracts base/date/timestamp, and calculates example conversions in both directions using rates.VES and rates.USDVES.
import requests
from datetime import datetime, timezone
API_URL = "https://indices-api.com/api/latest"
API_KEY = "YOUR_API_KEY"
resp = requests.get(API_URL, params={"access_key": API_KEY}, timeout=10)
resp.raise_for_status()
payload = resp.json()
# The official response nests fields under "data"
data = payload.get("data", {})
if not data.get("success"):
raise RuntimeError(f"Request failed: {payload}")
timestamp = data["timestamp"] # Unix seconds (UTC)
as_of = data["date"] # "YYYY-MM-DD"
base = data["base"] # "USD"
rates = data["rates"] # dict with VES, USD, USDVES
ves_per_usd = rates["VES"] # VES per 1 USD
usd_per_ves = rates["USDVES"] # USD per 1 VES
# Example conversions
usd_amount = 50
ves_amount = 100000
usd_to_ves = usd_amount * ves_per_usd
ves_to_usd = ves_amount * usd_per_ves
print(f"As of {as_of} (timestamp={timestamp}, base={base}):")
print(f" 1 USD = {ves_per_usd} VES")
print(f" 1 VES = {usd_per_ves} USD")
print(f" {usd_amount} USD -> {usd_to_ves} VES")
print(f" {ves_amount} VES -> {ves_to_usd} USD")
Time-series for VES: daily history for charts and deltas
To show last week’s VES series or compute daily changes, use the time-series endpoint. It returns daily snapshots between a start_date and an end_date. Practical constraints to remember:
- end_date cannot be “today” because today’s book may still be updating; use yesterday or the most recent completed trading day.
- Responses are daily aggregates in UTC. If your UI displays local dates, convert accordingly to avoid off-by-one labeling.
- On weekends and public holidays, most FX-like sources will roll forward the last available rate. If you request a period spanning those days, expect flat prints for those dates.
The general behavior and parameters are documented in the Indices-API Documentation. Always confirm the exact symbols you want (VES, USDVES) on the Symbols page before calling time-series in production.
Production details that keep you out of trouble
- Base currency: The Latest response above is base “USD”. That means rates are quoted “per 1 USD.” For VES, rates.VES is VES per one USD. If you need VES as base, perform your own inversion or confirm whether base switching is supported in documentation.
- Mid-market: Latest rates reflect mid-market pricing, not bank cash or card rates. If you need bid/ask spreads or executable pricing, check the docs for the relevant endpoints and plan availability.
- Update frequency: Depending on your subscription tier, the Latest endpoint updates every 60 minutes, every 10 minutes, or at a higher cadence. If your app polls, set your cache TTL to at or slightly above your plan’s update interval and compare timestamps to avoid redundant requests.
- Timestamp and timezone: Use data.timestamp as the source of truth for staleness checks. It is a Unix epoch in UTC and lines up with data.date (UTC).
- Weekends and holidays: Expect flat rates on non-trading days or days with no new fix. If your chart expects continuous moves, consider annotating gaps or flat sections to reduce confusion.
- end_date rules: For historical and time-series, set end_date to a completed day (usually yesterday in UTC). If you pass today, you may receive incomplete/empty data or an error, depending on endpoint.
- Caching and revalidation: Cache by symbol set (e.g., VES, USDVES) plus base. Revalidate by comparing the prior timestamp to the latest API timestamp to decide whether to refresh downstream aggregates.
- Error handling: Check success before using rates. If a symbol is missing, confirm it on Symbols and handle nulls gracefully (display “temporarily unavailable”).
Symbol quick-reference for VES
| Symbol | Meaning (base = USD) | How to use |
|---|---|---|
| VES | VES per 1 USD | Multiply USD amounts to get VES |
| USDVES | USD per 1 VES | Multiply VES amounts to get USD |
If you need additional currency symbols or index codes, consult the live Symbols directory.
Deployment checklist
- Obtain an API key: there’s a 7-day trial; PRO is $49.99/month. Get your key here: Register.
- Verify symbols VES and USDVES in your environment. Do not assume codes; confirm them on Supported Symbols.
- Fetch Latest at your plan’s refresh cadence and cache the response keyed by base and symbol set.
- Always read and display data.date and data.timestamp in your UI to show “as of” context.
- When building charts, request time-series with end_date set to a completed day (yesterday UTC), and gracefully handle non-trading days.
Background: VES in context
The Venezuelan Bolívar Soberano (VES) has undergone redenominations and periods of high inflation. Developers working with VES should expect large numeric values when quoting VES per USD, and pay attention to numeric types and formatting. If your UI supports user-entered amounts, use decimal-safe math and round thoughtfully to avoid misleading results.
For macroeconomic context and policy history, useful references include the IMF country page for Venezuela and announcements from the Banco Central de Venezuela (BCV). While these sources do not replace your market data provider, they help explain structural moves you may observe in time-series data.
Extending beyond “latest”
Once your pricing card is live, common next steps include:
- Daily movers: Use the time-series endpoint to compute day-over-day percentage changes for VES and display green/red arrows next to the headline rate. Remember: end_date should be a completed day (typically yesterday UTC).
- Alerts: Poll Latest at a cadence compatible with your plan and fire notifications when absolute or percentage thresholds are crossed, comparing current data.timestamp to your last processed timestamp to avoid duplicate alerts.
- Backfills: If your chart starts empty on first load, backfill with a bounded time-series window (e.g., last 30 days) and cache the series server-side.
If you later need intraday candles or OHLC, check availability and parameters in the documentation or explore MCP for model control and pipeline configuration.
FAQ
Which symbol should I use for Venezuelan Bolívar Soberano?
Use VES for “VES per USD,” and USDVES for “USD per VES.” Always confirm symbol codes on the live Symbols list.
What does base = USD mean in the response?
It means the API quotes everything relative to one USD. With base USD, rates.VES is the amount of VES per 1 USD. If you need VES as the base, invert the quote or consult the Documentation for base-switching options.
Why can’t I use today as the end_date for time-series?
Because today’s book may still be updating and is not finalized in daily aggregates. Use the latest completed day (usually yesterday in UTC) to avoid partial data.
How often does the Latest rate update, and how should I cache?
Depending on plan, updates occur about every 60 minutes, every 10 minutes, or faster. Cache responses with a TTL aligned to your plan and always compare data.timestamp before refreshing downstream calculations.
What happens on weekends and holidays?
If there’s no new fix, the API will reflect the last available rate; you may see flat values across those dates in time-series. Make sure your chart labels or tooltips explain “last available” where appropriate.
Ready to ship? Start with a free 7-day trial and get your API key in minutes: Register. Explore endpoints, parameters, and examples in the Documentation, verify symbols on Symbols, and configure downstream model control with MCP.