oneapi
Autentificare
Financiar v1 / Bce

Cursul de schimb BCE

Cotaţiile de referinţă ale Băncii Centrale Europene, la cea mai recentă zi publicată.

Sensul e INVERS faţă de BNR: unităţi de valută per 1 EUR, nu lei per unitate de valută. RON
apare ca orice altă valută — 5,24 înseamnă 5,24 lei pentru un euro.

GET
https://oneapi.ro/api/financiar/v1/bce/curs

Parametri de interogare

NumeTipDescriereValori acceptate
valutalistăopțional text Filtru opţional: ?valuta=USD,GBP. ex. EURex. USDex. GBP

Cum se comportă

  • Cotaţiile de referinţă ale Băncii Centrale Europene, la cea mai recentă zi publicată. 44 de valute, serie din 1999.
  • Sensul e INVERS faţă de BNR. Aici o cotaţie e „unităţi de valută pentru 1 EUR"; pe /curs e „lei pentru o unitate de valută". RON apare ca orice altă valută: 5,24 înseamnă 5,24 lei pentru un euro. Confundarea celor două sensuri inversează rezultatul, de aceea data.sens şi meta.sens o spun explicit la fiecare cerere.
  • Cursul BCE permite parităţi între două valute străine fără trecere prin leu — acolo unde /conversie/incrucisata dă un curs calculat, nu publicat.
  • Cotaţiile BNR şi BCE pentru EUR/RON diferă cu circa 0,003 lei în medie, pe cele peste 5.400 de zile comune: sunt două fixinguri independente, nu o eroare.

La ce folosește

  • Parităţi între valute străine, din sursă publicată.
  • Comparaţia cu fixingul BNR.

Structura răspunsului

CâmpTipDescriere
data.data string Ziua cerută, exact cum ai trimis-o.
data.moneda_baza string Mereu EUR pe această rută.
data.sens string Mereu valuta_per_1_eur.
data.cotatii[].valuta string Codul ISO 4217 al valutei.
data.cotatii[].valoare string Valoarea publicată de sursă pentru combinaţia de mai sus.
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.cotatii integer Câte cotaţii intră în răspuns.
meta.sens string Sensul operaţiunii.
meta.nota string Precizare despre cum se citesc datele din răspuns — o capcană, o convenţie sau o limită a sursei.
data.motiv_fara_valori Prezent doar când sursa publică întreaga clasă goală: spune că artefactul conţine antetul şi rândul Data, fără nicio observaţie. Un stare: fara_valori fără câmpul ăsta înseamnă că doar seria e goală, nu clasa.
meta.fara_date string data e null, iar aici stă motivul. Nu există cotaţii BCE în bază.
meta.fara_date_cod string Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

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."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404negasitNiciuna dintre valutele cerute nu are cotaţie în ziua respectivă.
422validareUn parametru nu a trecut validarea (valuta); detalii spune care şi de ce.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "Un parametru nu a trecut validarea (valuta); detalii spune care şi de ce.",
        "detalii": {
            "valuta": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}