Financiar v1 / CursVamal
Monthly customs rate series
The customs rate of one to five currencies, over an interval of months, grouped by currency.
GET
https://oneapi.ro/api/financiar/v1/curs-vamal/interval
Query parameters
NameTypeDescriptionAccepted values
de_larequired
string
Required,
YYYY-MM.
e.g. 2024-01e.g. 2024-06-15
pana_laoptional
string | null
Optional, defaults to the last published month.
e.g. 2024-12e.g. 2024-06-30
valutalistoptional
text
Required, 1–5:
?valuta=EUR,USD.
e.g. EUR,USDe.g. EUR
How it behaves
- The customs rate for one to five currencies, over an interval of months, grouped by currency.
- The interval is given in MONTHS (
YYYY-MM), not days: the customs rate is monthly, and asking for days would suggest a precision the data does not have. - The ceiling is 120 months — ten years, which is the entire available coverage.
meta.fara_valorilists requested currencies with no month at all in the interval, so a partial response does not pass unnoticed.
What it is for
- Recomputing a year of imports, month by month, in a single call.
- A chart of the customs rate for the currencies you work with.
- Reconciling accounting records with the period's official rates.
Response structure
FieldTypeDescription
data.de_la
string
Start of the interval the response covers.
data.pana_la
string
End of the interval the response covers, inclusive.
data.moneda_baza
string
The currency the rates are quoted against.
data.serii[].valuta
string
ISO 4217 currency code.
data.serii[].multiplicator
integer
Factor the value is multiplied by to reach the base unit.
data.serii[].valori[].luna
string
The month the value refers to.
data.serii[].valori[].valoare
string
The value published by the source for the combination above.
data.serii[].valori[].valoare_unitara
string
The value per single unit.
data.serii[].valori[].cotatie_din
string
meta.sursa
string
The official source the data comes from, with its licence where one is required.
meta.valute
integer
Currencies covered by the response.
meta.valori
integer
The values of the series, by period.
meta.luni_interval
integer
meta.baza_legala
string
meta.fara_date
data is null and this says why. The quote exists at the source, but our import is behind; the response says how far our data goes.
meta.fara_date_cod
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/curs-vamal/interval?de_la=2024-01&pana_la=2024-12&valuta=EUR,USD
{
"data": {
"de_la": "2024-01",
"pana_la": "2024-12",
"moneda_baza": "RON",
"serii": [
{
"valuta": "EUR",
"multiplicator": 1,
"valori": [
{
"luna": "2024-01",
"valoare": "4.9702",
"valoare_unitara": "4.9702",
"cotatie_din": "2023-12-20"
}
]
}
]
},
"meta": {
"sursa": "derivat din cursul de referinţă BNR.",
"valute": 2,
"valori": 24,
"luni_interval": 12,
"baza_legala": "art. 146 din Regulamentul de punere în aplicare (UE) 2015/2447."
}
}
GEThttps://oneapi.ro/api/financiar/v1/curs-vamal/interval?de_la=2024-06-15&valuta=EUR
{
"data": {
"de_la": "2024-06",
"pana_la": "2026-09",
"moneda_baza": "RON",
"serii": [
{
"valuta": "EUR",
"multiplicator": 1,
"valori": [
{
"luna": "2024-06",
"valoare": "4.9745",
"valoare_unitara": "4.9745",
"cotatie_din": "2024-05-22"
}
]
}
]
},
"meta": {
"sursa": "derivat din cursul de referinţă BNR.",
"valute": 1,
"valori": 28,
"luni_interval": 28,
"baza_legala": "art. 146 din Regulamentul de punere în aplicare (UE) 2015/2447."
}
}
GEThttps://oneapi.ro/api/financiar/v1/curs-vamal/interval?de_la=2024-06-15&valuta=EUR&pana_la=2024-06-30
{
"data": {
"de_la": "2024-06",
"pana_la": "2024-06",
"moneda_baza": "RON",
"serii": [
{
"valuta": "EUR",
"multiplicator": 1,
"valori": [
{
"luna": "2024-06",
"valoare": "4.9745",
"valoare_unitara": "4.9745",
"cotatie_din": "2024-05-22"
}
]
}
]
},
"meta": {
"sursa": "derivat din cursul de referinţă BNR.",
"valute": 1,
"valori": 1,
"luni_interval": 1,
"baza_legala": "art. 146 din Regulamentul de punere în aplicare (UE) 2015/2447."
}
}
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. |
| 422 | validare | interval_prea_lung (over 120 months), interval_gol, malformed currency or month. |
| 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": "interval_prea_lung (over 120 months), interval_gol, malformed currency or month.",
"detalii": {
"de_la": [
"The value sent does not satisfy the parameter rule."
]
}
}
}