Financiar v1 / Serii
NBR series catalogue
The 5,906 time series in the interactive database, filterable by class, periodicity, freshness state or by text in the name or code. Paginated.
stare comes from the same freshness view used by /meta: curenta, pare_in_urma or incheiata — so a series marked current here is one that is still receiving new data.
GET
https://oneapi.ro/api/financiar/v1/serii
Query parameters
NameTypeDescriptionAccepted values
clasaoptional
string | null
Filter on the class name, partial match, diacritic-insensitive.
max 120 car.
periodicitateoptional
string | null
zilnic, saptamanal, lunar, trimestrial, semestrial, anual.
zilniclunartrimestrialsemestrialanualsaptamanal
stareoptional
string | null
curenta, pare_in_urma, incheiata, fara_valori.
curentapare_in_urmaincheiatafara_valori
qoptional
string | null
Text in the name or a code prefix. At least 2 characters.
max 80 car.
paginaoptional
integer | null
Defaults to 1.
1
per_paginaoptional
integer | null
Defaults to 20, maximum 100.
1
How it behaves
- The catalogue of series from the NBR interactive database, filterable by class, periodicity, freshness state, or text in the name or code. Paginated.
- The catalogue holds TIME series only. The nine register-type classes — credit institutions, government securities issues, eligible assets — have a different structure, with fields of their own per class, and cannot be poured into the same shape.
meta.registre_exclusecounts the 145 field descriptors left out, so the absence is an announced boundary; their records have a route of their own,/financiar/v1/registre. starecomes from the same freshness view used by/meta:curenta(still receiving new data),pare_in_urma(the source has published more recently than we hold),incheiata(the series no longer grows). So the verdict is the same everywhere in the module.- A fourth state,
fara_valori: 521 series that NBR announces in the catalogue and never fills in — SDDS PLUS templates. They do not appear in the freshness view at all, so they used to come out asstare: null, an undeclared state. They now have a name, so they can be both found (?stare=fara_valori) and excluded.numar_valoriis0for all of them. - Search ignores diacritics:
?q=dobanziand?q=dobânzireturn the same result. NBR names carry diacritics, and someone typing without them is not wrong — without this normalisation the filter would return zero and the data would appear to be missing. - The
?q=filter searches the name AND matches as a code prefix, so?q=BBZreturns the family of daily series. paginaandper_paginaare validated; above 100 they are clamped to 100, andmeta.paginarereports the effective value.
What it is for
- Discovering the series available on a topic.
- Finding a series code before requesting its values.
Response structure
FieldTypeDescription
data[].cod
string
The series code in the NBR database — the key for
/serii/{cod} and /serii/{cod}/valori.
data[].nume
string
The series name.
data[].clasa
string
The class it belongs to, as the NBR groups it.
data[].unitate
string
The unit of measure as the source publishes it (
(txt) for textual series).
data[].periodicitate
string
The series step;
necunoscut where the source does not state it.
data[].prima_data
null
The earliest observation.
null for series without values.
data[].ultima_data
null
The latest observation.
null for series without values.
data[].numar_valori
integer
How many observations the series has.
data[].stare
string
cu_valori or fara_valori — the latter means the source publishes the series header with no observation under it.
data[].nota
null
A note specific to the series, where one exists.
null otherwise.
meta.sursa
string
The official source the data comes from, with its licence where one is required.
meta.filtre
array
meta.registre_excluse
integer
meta.registre
string
meta.nota
string
A note on how to read the response — a pitfall, a convention or a limit of the source.
meta.paginare.pagina
integer
Current page, counted from 1.
meta.paginare.per_pagina
integer
How many records a page holds.
meta.paginare.total
integer
Total matching records, beyond the current page.
meta.paginare.pagini
integer
How many pages the list has.
Response examples
GEThttps://oneapi.ro/api/financiar/v1/serii?per_pagina=3
{
"data": [
{
"cod": "AEDZ_DEN",
"nume": "Monedă",
"clasa": "Operaţiuni de piaţă monetară ale BNR - Active eligibile - diferenţe",
"unitate": "(txt)",
"periodicitate": "necunoscut",
"prima_data": null,
"ultima_data": null,
"numar_valori": 0,
"stare": "fara_valori",
"nota": null
}
],
"meta": {
"sursa": "Banca Naţională a României — baza de date interactivă.",
"filtre": [],
"registre_excluse": 145,
"registre": "/financiar/v1/registre",
"nota": "Catalogul conţine doar serii temporale. Clasele de tip registru (instituţii de credit, emisiuni de titluri de stat) au altă structură şi nu sunt expuse aici.",
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 5779,
"pagini": 1927
}
}
}
GEThttps://oneapi.ro/api/financiar/v1/serii?per_pagina=3&pagina=2
{
"data": [
{
"cod": "AEDZ_EDS",
"nume": "Data scadenţei",
"clasa": "Operaţiuni de piaţă monetară ale BNR - Active eligibile - diferenţe",
"unitate": "(zz.ll.aaaa)",
"periodicitate": "necunoscut",
"prima_data": null,
"ultima_data": null,
"numar_valori": 0,
"stare": "fara_valori",
"nota": null
}
],
"meta": {
"sursa": "Banca Naţională a României — baza de date interactivă.",
"filtre": [],
"registre_excluse": 145,
"registre": "/financiar/v1/registre",
"nota": "Catalogul conţine doar serii temporale. Clasele de tip registru (instituţii de credit, emisiuni de titluri de stat) au altă structură şi nu sunt expuse aici.",
"paginare": {
"pagina": 2,
"per_pagina": 3,
"total": 5779,
"pagini": 1927
}
}
}
GEThttps://oneapi.ro/api/financiar/v1/serii?per_pagina=3&q=Cluj
{
"data": [],
"meta": {
"sursa": "Banca Naţională a României — baza de date interactivă.",
"filtre": {
"q": "Cluj"
},
"registre_excluse": 145,
"registre": "/financiar/v1/registre",
"nota": "Catalogul conţine doar serii temporale. Clasele de tip registru (instituţii de credit, emisiuni de titluri de stat) au altă structură şi nu sunt expuse aici.",
"paginare": {
"pagina": 1,
"per_pagina": 3,
"total": 0,
"pagini": 0
}
}
}
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 | Periodicity or state outside the list (curenta, pare_in_urma, incheiata, fara_valori), search shorter than 2 characters. |
| 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": "Periodicity or state outside the list (curenta, pare_in_urma, incheiata, fara_valori), search shorter than 2 characters.",
"detalii": {
"clasa": [
"The value sent does not satisfy the parameter rule."
]
}
}
}