Live exchange rates · JSON REST API

The currency exchange rate API, with every timestamp attached.

Fiat Agent is a free currency conversion API: live exchange rates for the whole catalogue, with names, symbols, flags and every reading we have ever stored — one clean endpoint, and a rate desk your team can read without writing a line of code.

5,000-request signup bonus · no card, no expiry, full history

Catalogue sample

  • EUREuro
  • GBPBritish Pound
  • JPYJapanese Yen
  • INRIndian Rupee

Names, symbols & flags included

JSON · CORS enabled

166

currencies available

Full

stored history, every reading

JSON

one GET request

<200 ms

typical response

What you get

Everything a product needs to quote a price abroad.

One contract, one response shape. The catalogue, the current reading and the whole stored record arrive together — and every reading we have ever taken stays reachable, so there is no second service to stitch on.

The whole catalogue

Every code we publish arrives with its official name, symbol and flag metadata — no second lookup, no local mapping table.

Every reading we have ever taken

History is not a paid extra we meter: each refresh is kept, and ?from / ?to reach any stretch of it — a month, a quarter, the whole record — in one call.

Answers in milliseconds

Readings are held in our own store, so a call never waits on an upstream provider. Typical responses land in well under 200 ms.

Keys that can't be replayed

Created from a cryptographically secure source and shown once. Only a one-way digest is kept, and revocation is immediate.

A balance you can see

A 5,000-request signup bonus per account, shared across every key you make. Remaining requests come back on each response — and keyed calls are never rate limited.

JSON over HTTPS, CORS on

No SDK to install, no XML, no auth dance. A bearer header and a GET request, from a server, a worker or a notebook.

In every response

  • base currency
  • currency count
  • reading timestamp
  • symbol & flag
  • requests remaining

Rate desk included with every account

The API

Two endpoints. Zero ceremony.

Call the open endpoint while you evaluate — free, no card, no key. Move to a key when you want the full response, the balance and any date range of stored history. Both speak the same JSON.

Parameters

?base
report every rate against another currency
?from / to
any stored date range · keyed only
?snapshots
1–2000 · trim the history you receive

Example · authenticated

curl -s https://fiatagent.base44.app/api/v1/rates \
  -H "Authorization: Bearer ******…"

{
  "ok": true,
  "meta": {
    "base_currency": "USD",
    "currency_count": 166,
    "snapshot_count": 12,
    "updated_at": "2026-11-01T07:30:04Z",
    "quota": { "limit": 5000, "used": 148, "remaining": 4852 }
  },
  "data": {
    "latest": { "base_currency": "USD", "rates": { "EUR": 0.9142, "GBP": 0.7861 } },
    "currencies": [{ "code": "EUR", "name": "Euro", "symbol": "€", "rate": 0.9142 }],
    "snapshots": [{ "fetched_at": "2026-11-01T07:30:04Z", "rates": { "EUR": 0.9142 } }]
  }
}

fiatagent.base44.app

Coverage

166 currencies, one response.

Each entry carries its ISO code, official name, symbol, flag and rate against the base — ready to render without a join or a lookup table.

  • USD$US Dollar
  • EUR€Euro
  • GBP£British Pound
  • JPY¥Japanese Yen
  • INR₹Indian Rupee
  • CHFFrSwiss Franc
  • AUDA$Australian Dollar
  • CADC$Canadian Dollar
  • CNY¥Chinese Yuan
  • SGDS$Singapore Dollar
  • AEDد.إUAE Dirham
  • HKDHK$Hong Kong Dollar
  • NZDNZ$New Zealand Dollar
  • SEKkrSwedish Krona
  • NOKkrNorwegian Krone
  • DKKkrDanish Krone
  • BRLR$Brazilian Real
  • MXNMex$Mexican Peso
  • ZARRSouth African Rand
  • KRW₩South Korean Won
  • THB฿Thai Baht
  • PLNzłPolish Zloty
  • TRY₺Turkish Lira
  • ILS₪Israeli Shekel

Plus every other code we publish

Pricing

Free to start. Pay only for headroom.

Every new account opens with a 5,000-request signup bonus — yours the moment you sign up, never a monthly allowance, never expiring. If you ever work through it, one pack tops it up and it is yours for good: no subscription, nothing recurring.

Public

Freeno account needed

One open endpoint for evaluation, prototypes and low-volume checks.

  • 5 requests per second
  • 50 requests per hour
  • 50 requests per day
  • Latest rates and full catalogue

Free account

Most used

$0signup bonus

The full response, every stored reading by date, and a signup bonus waiting when you arrive.

  • 5,000-request signup bonus
  • No rate limit on keyed calls
  • Latest rates, catalogue and full history
  • Any date range via ?from and ?to
  • Unlimited keys, one shared balance
  • No card, no commitment, no expiry

Top-ups

From $4one-time

More headroom when the balance runs down: 2,000 requests up to 100,000, bought once.

  • Added to your balance permanently
  • Never expires, never renews
  • Credited the moment payment clears
  • Applies to every key on the account
  • Not included
  • A subscription — packs are bought once and never renew

One-time packs

2,000·$47,500·$1215,000·$2040,000·$4550,000·$65100,000·$87.50All prices

Prices in USD, paid through PayPal · public windows reset on the UTC clock · balances never reset

Questions

The short answers.

Every response is served from our own store, so a call never waits on an upstream provider. Two timestamps come with each one: when we read the rates, and when the source itself last published them. They are shown separately because re-reading an unchanged source makes a newer fetch, not fresher rates — if the source has not republished, the response says so rather than implying a live quote. The status page reports both, plus how old the stored reading is.

The full catalogue we publish — the major pairs, regional currencies and the long tail — with each code's official name, symbol and flag metadata returned alongside its rate.

No — the open endpoint answers anyone, with no account and no card. It is limited to 5 a second, 50 an hour and 50 a day, because it costs us nothing to let you try before you sign up. A key removes every one of those limits.

Yes, and all of it. Every reading we take is kept, and a keyed call can reach any part of that record with ?from= and ?to= dates, or pull the most recent 2,000 readings with ?snapshots=. History is served from our own store, so a wide range answers just as fast as a narrow one. The open endpoint stays current-only — history is the one thing reserved for accounts.

Every new account opens with a signup bonus of 5,000 requests. Nothing is charged, nothing expires, and it is never quietly reduced — every key you make draws from that same balance. If you ever work through it, a one-time pack tops it back up, and the requests are yours for as long as the account exists.

A spent window answers 429 with a machine-readable code, the window that was reached and the number of seconds until it frees. The open endpoint is limited per client to 5 a second, 50 an hour and 50 a day; a key is capped on bursts at 20 a second and 2,000 an hour per key, with no daily cap, and its volume is bounded by your balance. A refused call spends nothing from that balance.

Keys are generated with a cryptographically secure random source and shown to you once. Only a one-way digest is retained, so a copy of the database cannot be used to call the API. Revoke a key at any time and it stops working immediately.

Yes. Responses are plain JSON with permissive CORS headers. Keep your key on a server you control — a key in client-side code is visible to anyone who loads the page.

Start now

Quote any price in any currency.

Create an account and 5,000 requests are waiting for you — plus every reading we have stored. Mint a key, make your first call in a minute, and try the open endpoint right now if you would rather look first.