API curs valutar
Cursurile publicate de BNR și de BCE, în format JSON: gratuit, fără cheie, fără înregistrare.
- GET
- JSON
- UTF-8
- CORS
- v1
- gratuit
- fără cheie
Adresa de bază https://b24.ro/api/v1
Reguli
- Adresa de bază este https://b24.ro/api/v1. Toate cererile sunt GET, iar răspunsurile sunt JSON (UTF-8). Cererile din browser sunt permise de pe orice domeniu (CORS).
- Limită per adresă IP: 60 de cereri în rafală, apoi 60 pe minut. Fiecare răspuns poartă antetele RateLimit-Limit și RateLimit-Remaining; la depășire răspunsul este 429, cu antetul Retry-After.
- Cursurile se schimbă o dată pe zi bancară. Păstrează răspunsurile local și respectă antetul Cache-Control, în loc să repeți aceeași cerere.
- Dacă afișezi datele, menționează sursa lor: Banca Națională a României, respectiv Banca Centrală Europeană.
Cursurile unei zile
GET /api/v1/rates
Cursurile în vigoare la o dată: cele publicate în acea zi sau, în weekend și de sărbători, ultimele publicate înainte.
| Parametru | Semnificație |
|---|---|
date | Data (AAAA-LL-ZZ). Implicit: ultima zi publicată. Cel mai devreme 2005-01-03; o dată din viitor este respinsă. |
source | Sursa: bnr (implicit; lei pentru o unitate sau pentru 100 de unități din fiecare monedă) sau ecb (unități din fiecare monedă pentru 1 euro). |
currencies | Doar aceste monede: coduri de trei litere separate prin virgulă, de exemplu EUR,USD. Implicit: toate. |
$ curl "https://b24.ro/api/v1/rates?date=2026-09-18¤cies=EUR,USD,HUF"
{
"source": "BNR",
"quote_currency": "RON",
"date": "2026-09-18",
"requested_date": "2026-09-18",
"rates": {
"EUR": {
"rate": 5.2644,
"multiplier": 1,
"unit_rate": 5.2644
},
"HUF": {
"rate": 1.4472,
"multiplier": 100,
"unit_rate": 0.014472
},
"USD": {
"rate": 4.5839,
"multiplier": 1,
"unit_rate": 4.5839
}
}
}
Conversie
GET /api/v1/convert
Convertește o sumă dintr-o monedă în alta, cu aritmetică exactă. Rezultatul e rotunjit ca pe site: două zecimale de la 1 în sus, patru cifre semnificative sub 1.
| Parametru | Semnificație |
|---|---|
from | Moneda din care se convertește, cod de trei litere (obligatoriu). |
to | Moneda în care se convertește, cod de trei litere (obligatoriu). |
amount | Suma, cu punct zecimal, de exemplu 100 sau 99.50. Implicit 1. |
date | Data (AAAA-LL-ZZ). Implicit: ultima zi publicată. Cel mai devreme 2005-01-03; o dată din viitor este respinsă. |
source | Sursa: bnr (implicit; lei pentru o unitate sau pentru 100 de unități din fiecare monedă) sau ecb (unități din fiecare monedă pentru 1 euro). |
$ curl "https://b24.ro/api/v1/convert?from=EUR&to=RON&amount=100&date=2026-09-18"
{
"source": "BNR",
"date": "2026-09-18",
"requested_date": "2026-09-18",
"from": "EUR",
"to": "RON",
"amount": 100,
"rate": 5.2644,
"result": 526.44,
"basis": "direct"
}
Consolă
Trimite o cerere reală spre API, direct din pagină: mai jos apare răspunsul primit, cu timpul lui. Fără JavaScript, formularul deschide răspunsul JSON.
{
"source": "BNR",
"date": "2026-09-18",
"requested_date": "2026-09-18",
"from": "EUR",
"to": "RON",
"amount": 100,
"rate": 5.2644,
"result": 526.44,
"basis": "direct"
}
Erori
O eroare are codul HTTP potrivit și un corp JSON de forma {"error":{"code":"…","message":"…"}}. Mesajele sunt în engleză; programele se bazează pe câmpul code.
| HTTP | Cod | Când apare |
|---|---|---|
| 400 | invalid_query | Șirul de interogare nu poate fi citit. |
| 400 | invalid_date | Data lipsește de formatul AAAA-LL-ZZ sau apare de două ori. |
| 400 | date_in_future | Data cerută este după ziua de mâine. |
| 404 | no_rates_for_date | Data este înaintea primei zile din istoric. |
| 400 | invalid_source | Sursa nu este bnr sau ecb. |
| 400 | invalid_currency | Un cod de monedă lipsește sau nu are trei litere. |
| 400 | invalid_amount | Suma nu este un număr pozitiv cu punct zecimal sau este prea mare. |
| 404 | currency_not_quoted | Moneda nu are curs la sursa și la data cerute. |
| 429 | rate_limited | Prea multe cereri; vezi antetul Retry-After. |
| 503 | data_incomplete | Istoricul din jurul datei cerute nu este încă importat complet. |
| 503 | no_data | Cursurile nu sunt încă încărcate; încearcă peste un minut. |
| 404 | not_found | Adresa nu este a unui endpoint al API-ului. |