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
Prices in USD, paid through PayPal · public windows reset on the UTC clock · balances never reset
Learn
The long answers, written down.
Comparisons built from other providers' own published pricing, integration guides whose code runs as printed, and reference pages for the currencies people look up most.
Compare
Against Fixer, OXR, Currencylayer
Free tiers, pricing shape and history, built from each provider's own published numbers.
Guides
JavaScript, Python and React
Working integrations that cover the key, the cache and the failures that actually happen.
Reference
The currencies behind the codes
Where each major circulates, what moves it, and its live rate against the others.
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.























