List all latest forex prices

Return one row per currency pair with its latest available daily forex rate, walking the whole pair universe in symbol order. Each row carries the same open/high/low/close shape as the single-pair latest price. Use it to snapshot the whole forex market in a few paginated requests instead of calling that endpoint once per pair.

Only prices from the last 10 days qualify. A pair with no quote inside that window still appears, with date and the price fields set to null, so the feed always covers every pair exactly once.

As a batch endpoint, it requires an Individual or higher plan; free API keys receive a 402 error.

GET/v3.0.0/forex-prices/latest

Plan Access

Free

(Your plan)

Individual

$29/mo

Professional

$89/mo

Request
curl "https://api.roic.ai/v3.0.0/forex-prices/latest?apikey=YOUR_API_KEY&limit=500"
Response
200 OK
{
  "data": [
    {
      "symbol": "FX:EURUSD",
      "date": "2026-07-31",
      "open": 1.0921,
      "high": 1.0964,
      "low": 1.0898,
      "close": 1.0937
    },
    {
      "symbol": "FX:GBPUSD",
      "date": "2026-07-31",
      "open": 1.2712,
      "high": 1.2769,
      "low": 1.2688,
      "close": 1.2741
    }
  ],
  "next_page_url": null,
  "previous_page_url": null
}

Parameters

Query parameters

base_currencystringoptional

Return only pairs quoted from this base currency, given as a three-letter ISO 4217 code. Case-insensitive.

Example: EUR
quote_currencystringoptional

Return only pairs quoted into this quote currency, given as a three-letter ISO 4217 code. Case-insensitive.

Example: USD
currencystringoptional

Return every pair in which this currency appears, on either side. Use it instead of base_currency and quote_currency when direction does not matter.

Example: JPY
orderstringoptional

Sort by qualified pair symbol (symbol).

Default: ascValues: ascdesc
limitintegeroptional

Maximum number of resources to return.

Default: 500Min: 1Max: 2000
pagestringoptional

Opaque page token from a previous response. Follow the returned page URL when possible.

Response

Each item in data is one pair's latest quote, identified by its symbol. Follow next_page_url unchanged to continue paging; see Responses for how cursor pagination works. The freshness window is fixed when you request the first page, so a walk that takes a while (even across midnight) stays consistent from the first page to the last.

Response fields

dataarray of objects

Array of latest-price resources, one per currency pair, ordered by symbol.

+ Show child attributes
symbolstring

Qualified pair symbol, e.g. FX:EURUSD. Every pair appears exactly once. Accepted by the single-pair forex price endpoints.

datestring

Quote date of the latest available price, in YYYY-MM-DD format. null when the pair has no price inside the 10-day freshness window.

opennumber

Exchange rate at the start of that day, in quote-currency units per base-currency unit. null when the pair has no recent price.

highnumber

Highest exchange rate quoted during that day. null when the pair has no recent price.

lownumber

Lowest exchange rate quoted during that day. null when the pair has no recent price.

closenumber

Exchange rate at the end of that day, in quote-currency units per base-currency unit. null when the pair has no recent price.

next_page_urlnullable

URL of the next page of results, or null when there are no more pages. Request it unchanged to continue paging.

previous_page_urlnullable

URL of the previous page of results, or null on the first page.

Examples

The latest forex rate for every pair quoted into U.S. dollars:

curl "https://api.roic.ai/v3.0.0/forex-prices/latest?apikey=YOUR_API_KEY&quote_currency=USD&limit=500"

Use cases

Use the batch route when a workflow needs the latest daily forex rate for many currency pairs at once.

  • Refresh a local currency-conversion table without making one request per pair.
  • Snapshot every rate quoted into (or out of) one currency with the quote_currency, base_currency, or currency filters.
  • Preserve a complete pair universe by retaining unpriced rows with null quote fields.

Data timing

Each row is the latest daily record available to the API, not an intraday tick. While the current day is still open, its values can still change. Inspect date rather than assuming the response is a live streaming quote.

Use the single-pair routes when you only need one currency pair.