Financiar v1 / Inflatie
Employment and hours worked in the national accounts
Employment and hours worked as the national accounts measure them — annually and quarterly, since 1995, across 11 branches and three professional statuses.
⚠️ The annual and the quarterly series sit in the same matrices, on the same first-quarter date. The route requires periodicitate and never mixes them: mixed, both identities appear broken precisely in the first quarter.
⚠️ A methodological break at 2004: ESA 95 covers 1995–2003, ESA 2010 covers 2004 → present. The sistem field separates them; they are never spliced.
GET
https://oneapi.ro/api/financiar/v1/ocupare-conturi
Query parameters
NameTypeDescriptionAccepted values
clasificareoptional
string | null
Optional:
rev2 (default) or rev1. Rev.1 is annual only, 1999-2008.
rev1rev2
periodicitateoptional
string | null
Optional:
anual (default) or trimestrial.
anualtrimestrial
sistemoptional
string | null
Optional:
sec95 (1995-2003) or sec2010 (from 2004). Without it both come out, flagged.
sec95sec2010
de_laoptional
integer | null
Optional, a year, from 1995.
1995 – 2100
pana_laoptional
integer | null
Optional, a year.
1995 – 2100
caen_versiuneoptional
string | null
Optional: the revision of the
caen code — 1, 2 or 3 — when its form is ambiguous (4932 means different things in Rev.2 and Rev.3). Without it, the code is looked up in the series revision first.
123
indicatorlistoptional
text
Optional:
ocupare, ore_lucrate.
ocupareore_lucrate
caenlistoptional
text
Optional, codes separated by commas: any CAEN code — section (
C), division (62), group, class (6201) — from any revision. It is brought to in rev2 the A10 branch that contains it (C → industrie); in rev1 the published section, subsection or division; what was used is in meta.caen.
e.g. 2410,62
gruparelistoptional
text
Optional, separated by commas: the source aggregates that are not CAEN codes —
total, celelalte (Rev.1) or the A10 sum branches requested directly (industrie, comert_transport_horeca…). Not sent together with caen.
e.g. administratie_educatie_sanatatee.g. comert_transport_horecae.g. industrie
statutlistoptional
text
Optional:
total, salariati, cont_propriu.
totalsalariaticont_propriu
How it behaves
- Employed population and hours worked as measured by the national accounts — 12,174 values, from TEMPO matrices
CON108A/B/CandCON109A/B/C. Two indicators × 11 branches × three professional statuses, annually and quarterly, from 1995-Q1 to 2026-Q1. - This is not the same as
/financiar/v1/populatie-ocupata, which comes from the labour force survey. Here it is the national accounts concept, the one that ties directly to value added — and the denominator of the productivity at/financiar/v1/productivitate. - ⚠️ The annual and the quarterly series live in the same matrices, on the same first-quarter date; they differ only in the source granularity. The route requires
periodicitateand never mixes them. Mixed, both identities appear broken exactly there:total = salariati + cont_propriuyields 187 of 253 in Q1 and 242 of 242 in Q2, Q3 and Q4, whiletotal = the sum of the ten branchesmisses in exactly the 22 first quarters, by an amount nearly equal to the total. Kept apart, both close 100%. - ✅
total=salariati+cont_propriu: 979/979 and 396/396 quarterly, 242/242 and 99/99 annually, likewise on hours worked. - ✅ The
totalactivity = the sum of the ten branches: 267/267 and 108/108 quarterly, 66/66 and 27/27 annually. The sum is computed from the database, so it can be verified even when the response does not carry every branch. - ⚠️ A methodological break at 2004.
sec95covers 1995-2003,sec2010covers 2004 onward. The series do not join across the break; thesistemfield separates them, and when a response spans both,metasays so. - ⚠️ NACE Rev.1 mixes levels in plain sight — its 32 activities are sections (
a,c,d), subsections (ca,da…dn), scattered divisions (05,25,55,80,85), plus "other activities" and the total. The total identity is not run there — measured, it would yield 0 of 30 — andnivel_activitatesays what each row is. Rev.1 is published annually only, for 1999-2008. - The ten Rev.2 branches use the same slugs as
/financiar/v1/pib/judeteand/financiar/v1/conturi-regionale, so a branch's employment sits directly beside its GDP and its wages. - Activity is requested the same way across the platform.
caentakes any CAEN code, at any level and from any revision, and the route brings it to what the series publishes — climbing to a parent or translating it through the official INS correspondence;meta.caenstates the requested code, the one used and whether it was climbed or converted.grupareis for the source aggregates that are not CAEN codes.
What it is for
- Hours worked in a branch, quarter by quarter.
- The share of own-account workers in a branch — highest in agriculture.
- The denominator for productivity and for unit labour cost.
- Comparing the national accounts concept with the labour force survey one.
Response structure
FieldTypeDescription
data.clasificare
string
The classification the values are broken down by.
data.periodicitate
string
data.de_la
integer
Start of the interval the response covers.
data.pana_la
integer
End of the interval the response covers, inclusive.
data.filtre
array
The filters actually applied, as the route understood them — useful when a value was normalised.
data.perioade
array
Years at annual periodicity,
YYYY-Tn at quarterly.
data.serii[].indicator
string
The statistical indicator the value refers to.
data.serii[].unitate
string
Unit of measure of the values. Read it before plotting or summing them.
data.serii[].clasificare
string
The classification the values are broken down by.
data.serii[].sistem
string
sec95 or sec2010 — they do not join across 2004.
data.serii[].statut
string
The state the item is in at the source.
data.serii[].activitate
string
The economic activity the value refers to.
data.serii[].denumire_activitate
string
data.serii[].nivel_activitate
string
In Rev.1:
sectiune, subsectiune, diviziune, rest. They do not add together.
data.serii[].perioade_publicate
integer
How many periods the source actually published.
data.serii[].valori
object
The values of the series, by period.
data.identitati.toleranta
string
How much deviation is accepted before the identity counts as unclosed — the source rounding, not an error.
data.identitati.statut.identitate
string
The identity being checked — which sum must equal which total.
data.identitati.statut.nota
string
A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.statut.verificari
integer
How many combinations were checked.
data.identitati.statut.inchise
integer
How many checks closed within tolerance.
data.identitati.ramuri.identitate
string
The identity being checked — which sum must equal which total.
data.identitati.ramuri.nota
string
A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.ramuri.verificari
integer
How many combinations were checked.
data.identitati.ramuri.inchise
integer
How many checks closed within tolerance.
data.identitati.nota_periodicitate
string
Why the route never mixes the annual with the quarterly series.
meta.sursa
string
The official source the data comes from, with its licence where one is required.
meta.acoperire.de_la
integer
The first period we have data for.
meta.acoperire.pana_la
integer
The last period we have data for.
meta.serii_returnate
integer
How many series were actually returned, after filters and the cell ceiling.
meta.nota_periodicitate
string
A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_sisteme
string
A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_identitate
string
How the identity above is checked and what it means when it does not close.
meta.nota_productivitate
string
A note on how to read the response: a caveat, a convention or a limit of the source.
meta.fara_date
data is null and this says why. The projection over the INS data is empty for the requested combination. The list is at /ocupare-conturi/activitati. As on the other series.
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.
meta.caen[]
object[]
How the
caen parameter was understood: the requested code, the revision it was read in and the code the route used. For a list of codes, one object per code.
meta.caen[].cerut
string
The CAEN code sent, normalised (upper case, no dots).
meta.caen[].versiune_cerut
string
The revision the code sent was read in: the one in
caen_versiune, otherwise the first it exists in.
meta.caen[].folosit
string
The code the series used: the requested one, its first published parent or the source aggregate that contains it (
02-03).
meta.caen[].cod
string
The CAEN code the key used stands for, when the series names its activities differently (
agricultura = 01) or the key is an aggregate (62-63).
meta.caen[].nivel
string
The level of the code used — on company routes, of the requested code:
sectiune, subsectiune, diviziune, grupa, clasa or agregat.
meta.caen[].denumire
string
The name of the code, from the CAEN nomenclature.
meta.caen[].versiune_serie
string
The CAEN revision the series is published in.
meta.caen[].conversie
boolean
true when the code was translated from one revision to another through the official INS correspondence.
meta.caen[].urcat
boolean
true when the series does not publish the requested code and a higher level was used.
Response examples
GEThttps://oneapi.ro/api/financiar/v1/ocupare-conturi?per_pagina=3
{
"data": {
"clasificare": "rev2",
"periodicitate": "anual",
"de_la": 1995,
"pana_la": 2025,
"filtre": [],
"perioade": [
1995,
1996,
1997,
1998,
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008,
2009,
2010,
2011,
2012,
2013,
2014,
2015,
2016,
2017,
2018,
2019,
2020,
2021,
2022,
2023,
2024,
2025
],
"serii": [
{
"indicator": "ocupare",
"unitate": "mii persoane",
"clasificare": "rev2",
"sistem": "sec95",
"statut": "cont_propriu",
"activitate": "administratie_educatie_sanatate",
"denumire_activitate": "ADMINISTRATIE PUBLICA SI APARARE; ASIGURARI SOCIALE DIN SISTEMUL PUBLIC; INVATAMANT; SANATATE SI ASISTENTA SOCIALA",
"nivel_activitate": "ramura",
"perioade_publicate": 9,
"valori": {
"1995": "10.9",
"1996": "10.1",
"1997": "10.6",
"1998": "10.9",
"1999": "11",
"2000": "11",
"2001": "10.8",
"2002": "8.5",
"2003": "9.1",
"2004": null,
"2005": null,
"2006": null,
"2007": null,
"2008": null,
"2009": null,
"2010": null,
"2011": null,
"2012": null,
"2013": null,
"2014": null,
"2015": null,
"2016": null,
"2017": null,
"2018": null,
"2019": null,
"2020": null,
"2021": null,
"2022": null,
"2023": null,
"2024": null,
"2025": null
}
}
],
"identitati": {
"toleranta": "0.5",
"statut": {
"identitate": "`total` = `salariati` + `cont_propriu`",
"nota": "Verificat pe toată proiecţia, cu seriile despărţite pe periodicitate: 979/979 şi 396/396 trimestrial, 242/242 şi 99/99 anual, la fel pe orele lucrate. Amestecate, ar ieşi 187 din 253 în trimestrul I.",
"verificari": 682,
"inchise": 682
},
"ramuri": {
"identitate": "activitatea `total` = suma celor zece ramuri",
"nota": "Verificat pe toată proiecţia: 267/267 şi 108/108 trimestrial, 66/66 şi 27/27 anual. Suma se calculează din bază. Amestecate cu seria anuală, ar rata exact în cele 22 de trimestre I.",
"verificari": 186,
"inchise": 186
},
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — populaţia ocupată şi orele lucrate din conturile naţionale (TEMPO, matricile CON108A/B/C şi CON109A/B/C).",
"acoperire": {
"de_la": 1995,
"pana_la": 2025
},
"serii_returnate": 132,
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I.",
"nota_sisteme": "Răspunsul acoperă ambele sisteme (sec95, sec2010): SEC 95 până în 2003 şi SEC 2010 din 2004. Seriile NU se lipesc peste ruptură.",
"nota_identitate": "Verificat pe acest răspuns: totalul e suma celor două statute în 682 din 682 celule.",
"nota_productivitate": "Aceleaşi ramuri, cu productivitatea muncii: /financiar/v1/productivitate."
}
}
GEThttps://oneapi.ro/api/financiar/v1/ocupare-conturi?per_pagina=3&clasificare=rev1
{
"data": {
"clasificare": "rev1",
"periodicitate": "anual",
"de_la": 1999,
"pana_la": 2008,
"filtre": [],
"perioade": [
1999,
2000,
2001,
2002,
2003,
2004,
2005,
2006,
2007,
2008
],
"serii": [
{
"indicator": "ocupare",
"unitate": "mii persoane",
"clasificare": "rev1",
"statut": "cont_propriu",
"activitate": "05",
"denumire_activitate": "05 Pescuitul, piscicultura si serviciile anexe",
"nivel_activitate": "diviziune",
"perioade_publicate": 10,
"valori": {
"1999": "0.1",
"2000": "1.5",
"2001": "1.3",
"2002": "0.2",
"2003": "5",
"2004": "0.6",
"2005": "1.1",
"2006": "0.8",
"2007": "1.8",
"2008": "1"
}
}
],
"identitati": {
"toleranta": "0.5",
"statut": {
"identitate": "`total` = `salariati` + `cont_propriu`",
"nota": "Verificat pe toată proiecţia, cu seriile despărţite pe periodicitate: 979/979 şi 396/396 trimestrial, 242/242 şi 99/99 anual, la fel pe orele lucrate. Amestecate, ar ieşi 187 din 253 în trimestrul I.",
"verificari": 598,
"inchise": 598
},
"nota_rev1": "Identitatea totalului nu se rulează pe CAEN Rev.1: cele 32 de activităţi amestecă secţiuni, subsecţiuni şi diviziuni răzleţe, iar adunarea lor ar număra aceleaşi persoane de mai multe ori. Măsurat, ar ieşi 0 din 30.",
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — populaţia ocupată şi orele lucrate din conturile naţionale (TEMPO, matricile CON108A/B/C şi CON109A/B/C).",
"acoperire": {
"de_la": 1999,
"pana_la": 2008
},
"serii_returnate": 192,
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I.",
"nota_rev1": "Identitatea totalului nu se rulează pe CAEN Rev.1: cele 32 de activităţi amestecă secţiuni, subsecţiuni şi diviziuni răzleţe, iar adunarea lor ar număra aceleaşi persoane de mai multe ori. Măsurat, ar ieşi 0 din 30.",
"nota_identitate": "Verificat pe acest răspuns: totalul e suma celor două statute în 598 din 598 celule.",
"nota_productivitate": "Aceleaşi ramuri, cu productivitatea muncii: /financiar/v1/productivitate."
}
}
GEThttps://oneapi.ro/api/financiar/v1/ocupare-conturi?caen=2410,62&de_la=2020
{
"data": {
"clasificare": "rev2",
"periodicitate": "anual",
"de_la": 2020,
"pana_la": 2025,
"filtre": {
"activitate": [
"industrie",
"it_comunicatii"
]
},
"perioade": [
2020,
2021,
2022,
2023,
2024,
2025
],
"serii": [
{
"indicator": "ocupare",
"unitate": "mii persoane",
"clasificare": "rev2",
"sistem": "sec2010",
"statut": "cont_propriu",
"activitate": "industrie",
"denumire_activitate": "INDUSTRIA EXTRACTIVA; INDUSTRIA PRELUCRATOARE; PRODUCTIA SI FURNIZAREA DE ENERGIE ELECTRICA SI TERMICA, GAZE, APA CALDA SI AER CONDITIONAT; DETEURILOR, ACTIVITATI DE DECONTAMINARE",
"nivel_activitate": "ramura",
"perioade_publicate": 6,
"valori": {
"2020": "39.3",
"2021": "32.1",
"2022": "30.6",
"2023": "23.1",
"2024": "27",
"2025": "26.2"
}
}
],
"identitati": {
"toleranta": "0.5",
"statut": {
"identitate": "`total` = `salariati` + `cont_propriu`",
"nota": "Verificat pe toată proiecţia, cu seriile despărţite pe periodicitate: 979/979 şi 396/396 trimestrial, 242/242 şi 99/99 anual, la fel pe orele lucrate. Amestecate, ar ieşi 187 din 253 în trimestrul I.",
"verificari": 24,
"inchise": 24
},
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — populaţia ocupată şi orele lucrate din conturile naţionale (TEMPO, matricile CON108A/B/C şi CON109A/B/C).",
"acoperire": {
"de_la": 1995,
"pana_la": 2025
},
"serii_returnate": 12,
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I.",
"nota_identitate": "Verificat pe acest răspuns: totalul e suma celor două statute în 24 din 24 celule.",
"nota_productivitate": "Aceleaşi ramuri, cu productivitatea muncii: /financiar/v1/productivitate.",
"caen": [
{
"cerut": "2410",
"versiune_cerut": "Rev.2",
"folosit": "industrie",
"cod": "C",
"nivel": "agregat",
"denumire": "INDUSTRIA PRELUCRĂTOARE",
"versiune_serie": "Rev.2",
"conversie": false,
"urcat": true
}
]
}
}
GEThttps://oneapi.ro/api/financiar/v1/ocupare-conturi?de_la=2024-06-15
{
"data": {
"clasificare": "rev2",
"periodicitate": "anual",
"de_la": 2024,
"pana_la": 2025,
"filtre": [],
"perioade": [
2024,
2025
],
"serii": [
{
"indicator": "ocupare",
"unitate": "mii persoane",
"clasificare": "rev2",
"sistem": "sec2010",
"statut": "cont_propriu",
"activitate": "administratie_educatie_sanatate",
"denumire_activitate": "ADMINISTRATIE PUBLICA SI APARARE; ASIGURARI SOCIALE DIN SISTEMUL PUBLIC; INVATAMANT; SANATATE SI ASISTENTA SOCIALA",
"nivel_activitate": "ramura",
"perioade_publicate": 2,
"valori": {
"2024": "24.8",
"2025": "17.4"
}
}
],
"identitati": {
"toleranta": "0.5",
"statut": {
"identitate": "`total` = `salariati` + `cont_propriu`",
"nota": "Verificat pe toată proiecţia, cu seriile despărţite pe periodicitate: 979/979 şi 396/396 trimestrial, 242/242 şi 99/99 anual, la fel pe orele lucrate. Amestecate, ar ieşi 187 din 253 în trimestrul I.",
"verificari": 44,
"inchise": 44
},
"ramuri": {
"identitate": "activitatea `total` = suma celor zece ramuri",
"nota": "Verificat pe toată proiecţia: 267/267 şi 108/108 trimestrial, 66/66 şi 27/27 anual. Suma se calculează din bază. Amestecate cu seria anuală, ar rata exact în cele 22 de trimestre I.",
"verificari": 12,
"inchise": 12
},
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I."
}
},
"meta": {
"sursa": "Institutul Naţional de Statistică — populaţia ocupată şi orele lucrate din conturile naţionale (TEMPO, matricile CON108A/B/C şi CON109A/B/C).",
"acoperire": {
"de_la": 1995,
"pana_la": 2025
},
"serii_returnate": 66,
"nota_periodicitate": "Seria anuală şi cea trimestrială stau în aceleaşi matrici, pe aceeaşi dată de trimestrul I. Ruta nu le amestecă niciodată — amestecate, ambele identităţi par stricate exact în trimestrul I.",
"nota_identitate": "Verificat pe acest răspuns: totalul e suma celor două statute în 44 din 44 celule.",
"nota_productivitate": "Aceleaşi ramuri, cu productivitatea muncii: /financiar/v1/productivitate."
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Missing or invalid token. |
| 403 | feature_indisponibil | financiar.indici is not in the current plan. |
| 404 | caen_nepublicat | Neither the code nor its parents are published in the series; detalii.disponibile lists the keys. grupare_nepublicata — the grouping is not in the series; the response lists them. |
| 422 | caen_inexistent | The code in caen exists in no CAEN revision; it is a bad FILTER value, hence 422, not 404. raspuns_prea_mare — more than 20,000 cells. Plus a classification, periodicity, system, indicator, activity, status or year outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. combinatie_nepublicata — Rev.1 is not published quarterly. |
| 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": "caen_inexistent",
"mesaj": "The code in caen exists in no CAEN revision; it is a bad FILTER value, hence 422, not 404. raspuns_prea_mare — more than 20,000 cells. Plus a classification, periodicity, system, indicator, activity, status or year outside the expected form. caen and grupare sent together, caen_versiune without caen, or a code that is not CAEN-shaped. combinatie_nepublicata — Rev.1 is not published quarterly.",
"detalii": {
"clasificare": [
"The value sent does not satisfy the parameter rule."
]
}
}
}