EMpulse Street FX Index API
Daily street exchange rates of emerging-market currencies, quoted as fiat per 1 USDT (USDT is treated as 1 USD): the rate people actually pay, not the official one. Every series carries a confidence class. The full method is in the methodology.
Fields of an index row
| Field | Meaning | When it is null | Plan |
|---|---|---|---|
buy | The day's weighted average rate at which a client buys USDT for fiat. | The buy side has too few data points for the day. | All plans |
sell | The same for the side where the client sells USDT. | The sell side has too few data points for the day. | All plans |
mid | (buy + sell) / 2 when both sides exist; when only one side exists, that side's rate. | Neither side has enough data points. | All plans |
side | Which sides the mid is built from: both, buy or sell. A mid from one side is shifted by roughly half a spread against a two-sided one. | There is no mid. | All plans |
spread_pct | (buy − sell) / mid × 100. | The side is not both. | All plans |
confidence | high, medium or limited: the class of the currency from its coverage; a day with fewer data points than usual is one class lower. limited means fewer sources or data points — more noise, possible gaps. | Never. | All plans |
flag | outlier for a day with few data points whose mid deviates from the median mid of the surrounding ±15 days by more than 10%. Such a day keeps its values but is left out of mid_7d and the chg_* fields. | The day is not an outlier. | All plans |
in_progress | true for the latest day of a currency while the day is still being collected and its data points are clearly below the norm of the previous 7 days. | Never. | All plans |
mid_7d | Mean of the valid mids over the last 7 calendar days, inclusive. | There is no valid mid in the window. | All plans |
chg_1d_pct | Change of the mid versus exactly 1 calendar day earlier, in percent. | Either day has no valid mid. | All plans |
chg_7d_pct | Change of the mid versus exactly 7 calendar days earlier, in percent. | Either day has no valid mid. | All plans |
chg_30d_pct | Change of the mid versus exactly 30 calendar days earlier, in percent. | Either day has no valid mid. | All plans |
exchange_spread_pct | How far apart the exchanges quoting the currency sit on the day: (highest − lowest exchange mid) / median × 100. A widening spread is one of the inputs of FX Stress Signals. | Fewer than two exchanges quote the currency, or the key is a free one. | Pro, Enterprise |
Dates are UTC calendar days. The latest day is incomplete until it closes and may be revised; the flags of the last 15 days can change as new data arrives.
Hourly rates (Pro and Enterprise). GET /v1/rates/CUR/hourly?from=&to= returns the index per UTC hour (at most 31 days per request), /v1/rates/CUR/hourly/latest the most recent 24 hours of a series, /v1/rates/hourly/latest the last complete hour of every currency. Hour rows carry the same buy, sell, mid, side, spread_pct, confidence and in_progress; per-currency responses add a summary per day. Free keys get 403 tier_not_in_plan.
Multi-source street index. /v1/street-index/* — street rates aggregated from many independent public market sources with a confidence score, for every currency the sources cover (same key).
Send your key in the X-API-Key header. Free: RUB, UAH, EGP only, 100 requests a day, up to the last complete day. Pro: all currencies, 10,000 requests a day, includes the current (in-progress) day. Enterprise: per contract. Limits reset at 00:00 UTC.
JSON by default; send Accept: text/csv or add ?format=csv for CSV. Errors are JSON with an error object that holds a code and a message, with status 400 (bad parameters), 401 (missing or invalid key), 403 (period, currency or product not in the plan: tier_delay, currency_not_in_plan, tier_not_in_plan, key_frozen), 404 (unknown currency or route), 429 (rate_limit_exceeded, history_quota_exceeded) or 503.
Rows older than 90 days count against a daily per-key quota (free 1,000, pro 3,000 rows per UTC day); full exports are available under an Enterprise agreement. Keys are personal; automated bulk download freezes the key. See the terms.
Street rates are not official or interbank rates; series with confidence limited can be noisy and have gaps. The data is not investment advice.