Skip to content
ForgeCastDocs

Exchange rates (ForgeCast FX)

Daily exchange rates for 150+ currencies from any base, conversions rounded the right way, the currency list and rate history. Public, no key.

ForgeCast FX is the exchange-rate service ForgeCast itself uses: for prices on the pricing page and for showing earnings in the desktop app in your own currency. You can use it too.

It reads several independent daily feeds and blends them: where the feeds agree it averages them, and where one has a bad day it keeps the value nearest yesterday's, so a single wrong number can't move a price. Each day is kept, which is where the history comes from.

All of these endpoints:

  • are public: no sign-in or API key;
  • allow 120 requests a minute per address;
  • send an ETag: send it back as If-None-Match and you get 304 Not Modified while the rates haven't changed;
  • are cacheable for an hour (ten minutes while the feeds are down and the answer is stale).

Credit the rates

Every answer has a provider. When provider.attribution is set (for example Rates by Exchange Rate API), show those words, linked to provider.url, wherever the numbers appear.

Latest rates

GET/api/v1/fx/latest

Query parameters

Name

Type

GET /api/v1/fx/latest?base=INR&symbols=USD,EUR,GBP
{
  "base": "INR",
  "rates": { "USD": 0.0104358, "EUR": 0.00932952, "GBP": 0.00789024 },
  "date": "2026-10-12",
  "fetchedAt": "2026-10-13T18:13:53.306Z",
  "stale": false,
  "provider": {
    "name": "ForgeCast FX",
    "sources": ["currency-api", "exchangerate-api"],
    "attribution": "Rates by Exchange Rate API",
    "url": "https://www.exchangerate-api.com"
  }
}

rates[X] is how many X one base buys. date is the day the rates are for; stale is true when the feeds couldn't be read and older rates (or a built-in table) are being served.

Convert an amount

GET/api/v1/fx/convert

Name

Type

GET /api/v1/fx/convert?from=USD&to=INR&amount=5
{ "from": "USD", "to": "INR", "amount": 5, "result": 479.12, "rate": 95.8237, "formatted": "₹479.12", "date": "2026-10-12", "stale": false, "provider": { "name": "ForgeCast FX" } }

result is rounded to the target currency's usual decimals: two for rupees and dollars, none for yen, three for Kuwaiti dinars.

Rate history

GET/api/v1/fx/history

Name

Type

{ "base": "USD", "from": "2026-10-06", "to": "2026-10-12", "days": [{ "date": "2026-10-12", "rates": { "INR": 95.8237 } }] }

Days are oldest first. Only days ForgeCast FX has kept are listed, so a new pair or a day the feeds were down may be missing.

Currencies

GET/api/v1/fx/currencies

Every currency with a rate today, with its name, symbol and usual decimals:

{ "currencies": [{ "code": "INR", "name": "Indian Rupee", "symbol": "₹", "decimals": 2, "popular": true }], "date": "2026-10-12" }

Errors

  • 400 bad_request: a parameter isn't a currency code or a number, or days is out of range.
  • 404 not_found: there is no rate for that currency today.
  • 429 rate_limited: more than 120 requests a minute from one address.

The older GET /api/v1/rates (always US-dollar based) still works for apps that use it, and is served from the same blended rates.

On this page