Financiar v1 / Bce
ECB exchange rate
The European Central Bank's reference rates, at the most recent published day.
The direction is the OPPOSITE of the NBR's: units of currency per 1 EUR, not lei per unit of currency. RON appears like any other currency — 5.24 means 5.24 lei to a euro.
GET
https://oneapi.ro/api/financiar/v1/bce/curs
Query parameters
NameTypeDescriptionAccepted values
valutalistoptional
text
Optional filter:
?valuta=USD,GBP.
e.g. EURe.g. USDe.g. GBP
How it behaves
- The European Central Bank reference rates, on the most recent published day. 44 currencies, series from 1999.
- The direction is the INVERSE of NBR. Here a quote is "units of currency per 1 EUR"; on
/cursit is "lei per one unit of currency".RONappears like any other currency: 5.24 means 5.24 lei to the euro. Confusing the two directions inverts the result, which is whydata.sensandmeta.sensstate it explicitly on every request. - The ECB rate allows parities between two foreign currencies without passing through the leu — where
/conversie/incrucisatagives a computed rate rather than a published one. - NBR and ECB quotes for EUR/RON differ by about 0.003 lei on average, across the more than 5,400 shared days: they are two independent fixings, not an error.
What it is for
- Parities between foreign currencies, from a published source.
- Comparison with the NBR fixing.
Response structure
FieldTypeDescription
data.data
string
data.moneda_baza
string
Always
EUR on this route.
data.sens
string
Always
valuta_per_1_eur.
data.cotatii[].valuta
string
ISO 4217 currency code.
data.cotatii[].valoare
string
The value published by the source for the combination above.
meta.sursa
string
The official source the data comes from, with its licence where one is required.
meta.cotatii
integer
How many quotations the response covers.
meta.sens
string
Direction of the operation.
meta.nota
string
A note on how to read the response — a pitfall, a convention or a limit of the source.
data.motiv_fara_valori
Present only when the source publishes the whole class empty: it says the artifact carries the header and the
Data row with no observation beneath. A stare: fara_valori without this field means only the series is empty, not the class.
meta.fara_date
string
data is null and this says why. No ECB quotes in the database.
meta.fara_date_cod
string
The short, STABLE word for the reason, for clients that branch on it in code:
fara_date is prose and may be rephrased, this is not.
Response examples
GEThttps://oneapi.ro/api/financiar/v1/bce/curs
{
"data": {
"data": "2026-10-05",
"moneda_baza": "EUR",
"sens": "valuta_per_1_eur",
"cotatii": [
{
"valuta": "AUD",
"valoare": "1.6097"
}
]
},
"meta": {
"sursa": "Banca Centrală Europeană — cursul de referinţă (flux SDMX EXR).",
"cotatii": 29,
"sens": "Valorile sunt unităţi de valută pentru 1 EUR. La BNR, pe /financiar/v1/curs, sensul e opus: lei pentru o unitate de valută. Confundarea lor inversează rezultatul.",
"nota": "Cursul BCE permite parităţi între valute străine fără trecere prin leu — utile acolo unde /conversie/incrucisata ar da un curs calculat, nu publicat."
}
}
GEThttps://oneapi.ro/api/financiar/v1/bce/curs?valuta=EUR
{
"data": null,
"meta": {
"valute_cerute": [
"EUR"
],
"data": "2026-10-05",
"fara_date": "Niciuna dintre valutele cerute nu are cotaţie la 2026-10-05.",
"fara_date_cod": "fara_valoare_la_data"
}
}
GEThttps://oneapi.ro/api/financiar/v1/bce/curs?valuta=USD
{
"data": {
"data": "2026-10-05",
"moneda_baza": "EUR",
"sens": "valuta_per_1_eur",
"cotatii": [
{
"valuta": "USD",
"valoare": "1.1204"
}
]
},
"meta": {
"sursa": "Banca Centrală Europeană — cursul de referinţă (flux SDMX EXR).",
"cotatii": 1,
"sens": "Valorile sunt unităţi de valută pentru 1 EUR. La BNR, pe /financiar/v1/curs, sensul e opus: lei pentru o unitate de valută. Confundarea lor inversează rezultatul.",
"nota": "Cursul BCE permite parităţi între valute străine fără trecere prin leu — utile acolo unde /conversie/incrucisata ar da un curs calculat, nu publicat."
}
}
GEThttps://oneapi.ro/api/financiar/v1/bce/curs?valuta=GBP
{
"data": {
"data": "2026-10-05",
"moneda_baza": "EUR",
"sens": "valuta_per_1_eur",
"cotatii": [
{
"valuta": "GBP",
"valoare": "0.8472"
}
]
},
"meta": {
"sursa": "Banca Centrală Europeană — cursul de referinţă (flux SDMX EXR).",
"cotatii": 1,
"sens": "Valorile sunt unităţi de valută pentru 1 EUR. La BNR, pe /financiar/v1/curs, sensul e opus: lei pentru o unitate de valută. Confundarea lor inversează rezultatul.",
"nota": "Cursul BCE permite parităţi între valute străine fără trecere prin leu — utile acolo unde /conversie/incrucisata ar da un curs calculat, nu publicat."
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 404 | negasit | None of the requested currencies has a quote on that day. |
| 422 | validare | A parameter failed validation (valuta); detalii says which and why. |
| 429 | cota_depasita | The plan's monthly quota has been exceeded (see Retry-After). |
All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.
{
"eroare": {
"cod": "validare",
"mesaj": "A parameter failed validation (valuta); detalii says which and why.",
"detalii": {
"valuta": [
"The value sent does not satisfy the parameter rule."
]
}
}
}