oneapi
Sign in
Financiar v1 / Inflatie

The integrated economic accounts

The complete sequence of national accounts, annually since 1995: production, generation of income, entrepreneurial income, allocation of primary income, secondary distribution, redistribution in kind, use of disposable income and of adjusted disposable income, changes in net worth, acquisitions of non-financial assets and the external account of goods and services.

Against /conturi-sectoare, which is quarterly, here there are 221 operations instead of 81, and non-profit institutions have a column of their own. The source additionally publishes the balancing column bunuri_servicii and a total across everything.

⚠️ The ESA code is not a key. Within the same account there can be two rows with the same code and different meanings; a series' key is (account, code, name). Thirteen rows have no code at all.

⚠️ The source publishes a full rectangle, but most cells are empty: 2,798 of the 4,086 series are zero in all 31 years, because the operation does not exist on that side or in that column. The route leaves them out and says how many, and zerouri=include brings them back.

GET
https://oneapi.ro/api/financiar/v1/conturi-integrate

Query parameters

NameTypeDescriptionAccepted values
de_laoptional integer | null Optional, a year, from 1995. 1995 – 2100
pana_laoptional integer | null Optional, a year. 1995 – 2100
zerourioptional string | null Optional: exclude (default) or include. With include the empty cells of the rectangle come out too. excludeinclude
contlistoptional text Optional, one or more accounts from the sequence, comma-separated. Without it and without cod, the production account is returned. productieexploatarevenit_intreprinderealocare_venituri_primarealocare_alte_venituri_primaredistribuire_secundararedistribuire_in_naturautilizare_venit_disponibilutilizare_venit_disponibil_ajustatvariatii_valoare_netaachizitii_active_nefinanciareexterior_bunuri_servicii
codlistoptional text Optional, ESA codes comma-separated, such as B1g, D1, P2 or D441. e.g. CJ
sectorlistoptional text Optional, one or more of economia_totala (default), societati_nefinanciare, societati_financiare, administratii_publice, gospodarii, ifslsgp, restul_lumii, bunuri_servicii, total. totaleconomia_totalasocietati_nefinanciaresocietati_financiareadministratii_publicegospodariiifslsgprestul_lumiibunuri_servicii
laturalistoptional text Optional: resurse, utilizari or both. resurseutilizari

How it behaves

  • The table of integrated economic accounts (ESA 2010) at current prices — annually from 1995 to 2025, 31 years, 126,666 values from TEMPO matrix CON102D. 221 operations × 9 sector columns × 2 sides, all in millions of lei.
  • It is the whole sequence of national accounts, in the order in which each starts from the balance of the one before it: production, generation of income, entrepreneurial income, allocation of primary income (and of other primary income), secondary distribution, redistribution in kind, use of disposable income and of adjusted disposable income, changes in net worth, acquisition of non-financial assets, and the external account of goods and services.
  • Read it alongside /financiar/v1/conturi-sectoare, which is quarterly. That route carries 81 transactions since 1999; this one carries 221 since 1995, plus three columns the quarterly series does not have: non-profit institutions (ifslsgp) separate from households, the balancing column bunuri_servicii, and a total across all of them.
  • ⚠️ The ESA code is not a key. In 8 of 208 (account, code) pairs the source publishes several rows: D44 appears twice in the same account, once as "Alte venituri din investitii" and once as "Venituri din proprietate atribuite asiguratilor". A series is keyed by (account, code, name). Thirteen rows carry no code at all — the D29 detail lines and the external trade balance.
  • ⚠️ The source publishes a full rectangle, but most of its cells are empty. Of 4,086 series, 2,798 are zero across all 31 years: GDP has no resources side, production has no rest-of-the-world column. The route leaves them out and always says how many it left out; zerouri=include brings them back. For the same reason, 26 of the 221 operations never appear in the catalogue — SIFIM adjustments, imputed contributions, subsidies on imports: rows the source carries but never fills.
  • What is checked on every request, with a tolerance of 0.5 million derived from the published decimal: economia_totala = the sum of the five internal sectors — 13,576 of 13,702 cells across the whole projection; total = the total economy + the rest of the world + the goods and services account — 13,669 of 13,702, and without the goods-and-services column it would fall to 12,979, so that column is not decoration; and B1*g = B1g + D21-D31 in the production account — 31 of 31 years, zero deviation.
  • ⚠️ The 126 misses of the first identity are structural, not errors. B1*g Produsul intern brut on the uses side and D21-D31 Impozite − Subventii pe produse on both sides miss in all 31 years: they are not allocated to sectors, exactly as D2/D3 in the quarterly series. The response names them in identitati.economia_totala.operatiuni_care_nu_se_inchid rather than hiding them.
  • ⚠️ B8g Economia bruta in the changes-in-net-worth account breaks at 2007. Measured year by year: the identity closes exactly, with zero deviation, from 1995 through 2006 — and stops closing from 2007 onward, with gaps of up to 65,019.4 million. It is a methodological break, not noise.
  • ⚠️ D441, D442 and D443 are published three times each, under the same name. We measured what that means: the first occurrence is the total, the second and third are its breakdown — 1 = 2 + 3 closes 1,674 of 1,674. The series carry varianta and rol_varianta (total or componenta) precisely so they are not added together.
  • Without cont and without cod, the response stops at the production account, the first in the sequence, and says so in meta. The ceiling is on cells: at most 20,000 (series × years), counted over everything that is read — the empty cells are read regardless, because the identities need them as zeros.

What it is for

  • Following a flow through the whole sequence: how value added reaches household disposable income.
  • The sector structure of an ESA operation, over a long series since 1995.
  • Separating non-profit institutions from households — impossible on the quarterly series.
  • Checking your own computation against the identities the source actually respects.

Response structure

FieldTypeDescription
data.unitate string The unit of the values. Read it before plotting or adding them up.
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.cont array
data.filtre.sector array Institutional or economic sector.
data.ani array Years for which values exist.
data.serii[].cont string The account in the sequence. Each one starts from the balance of the one before it.
data.serii[].denumire_cont string
data.serii[].cod string The ESA code, where the source publishes one. Not a key: the same code may name two different rows in the same account.
data.serii[].denumire string The name, exactly as the source publishes it.
data.serii[].sector string Institutional or economic sector.
data.serii[].denumire_sector string Name of the sector, as published by the source.
data.serii[].latura string Side of the account (resources or uses).
data.serii[].unitate string Unit of measure of the values. Read it before plotting or summing them.
data.serii[].ani_publicati integer Years the source actually published for this series.
data.serii[].valori object The values of the series, by period.
data.identitati.toleranta string Half a million lei, derived from the decimal the source publishes.
data.identitati.economia_totala.identitate string The identity being checked — which sum must equal which total.
data.identitati.economia_totala.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.total.identitate string The identity being checked — which sum must equal which total.
data.identitati.total.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.productie.identitate string The identity being checked — which sum must equal which total.
data.identitati.productie.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.productie.verificari integer How many combinations were checked.
data.identitati.productie.inchise integer How many checks closed within tolerance.
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_implicit string Which value was used when the parameter was not sent.
meta.nota_cheie string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_sectoare string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_casete_goale string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_trimestrial string A note on how to read the response: a caveat, a convention or a limit of the source.
data.serii[].varianta Present only on codes published more than once: 1 is the total, 2 and 3 are its breakdown.
data.serii[].rol_varianta total or componenta — measured, not assumed.
data.serii[].doar_zero Present only with zerouri=include: the series is zero in every year, an empty cell of the table.
data.identitati.economia_totala.operatiuni_care_nu_se_inchid The operations in this response where the identity does not hold, named.
meta.fara_date string data is null and this says why. The projection over the INS data is empty. The operation is not published; the list is at /conturi-integrate/operatiuni. The filters hit only series that are zero in every year; zerouri=include shows them as they are. As on the other series.
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/conturi-integrate
{
    "data": {
        "unitate": "milioane lei",
        "de_la": 1995,
        "pana_la": 2025,
        "filtre": {
            "cont": [
                "productie"
            ],
            "sector": [
                "economia_totala"
            ]
        },
        "ani": [
            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": [
            {
                "cont": "productie",
                "denumire_cont": "I. Contul de producţie",
                "cod": "B1*g",
                "denumire": "Produsul intern brut",
                "sector": "economia_totala",
                "denumire_sector": "Economia totala",
                "latura": "utilizari",
                "unitate": "milioane lei",
                "ani_publicati": 31,
                "valori": {
                    "1995": "7610.6",
                    "1996": "11387.7",
                    "1997": "25500.1",
                    "1998": "37007.7",
                    "1999": "55126.4",
                    "2000": "80873.1",
                    "2001": "117391.4",
                    "2002": "152271.5",
                    "2003": "191917.6",
                    "2004": "244688.3",
                    "2005": "286861.9",
                    "2006": "342762.6",
                    "2007": "425691.1",
                    "2008": "539831.4",
                    "2009": "530919.6",
                    "2010": "540447.5",
                    "2011": "587235",
                    "2012": "621214.7",
                    "2013": "631634",
                    "2014": "668905",
                    "2015": "712548.6",
                    "2016": "752129.1",
                    "2017": "851620.6",
                    "2018": "953049.2",
                    "2019": "1059822.1",
                    "2020": "1063650.7",
                    "2021": "1186015.4",
                    "2022": "1384597.8",
                    "2023": "1590749.4",
                    "2024": "1759183.3",
                    "2025": "1916404.9"
                }
            }
        ],
        "identitati": {
            "toleranta": "0.5",
            "economia_totala": {
                "identitate": "`economia_totala` = suma celor cinci sectoare interne",
                "nota": "Aici instituţiile fără scop lucrativ (`ifslsgp`) au coloană proprie — în seria trimestrială sunt topite în gospodării. Verificat pe toată proiecţia: se închide în 13.576 din 13.702 de celule."
            },
            "total": {
                "identitate": "`total` = `economia_totala` + `restul_lumii` + `bunuri_servicii`",
                "nota": "Coloana de bunuri şi servicii nu e decor: fără ea identitatea scade de la 13.669 din 13.702 la 12.979."
            },
            "productie": {
                "identitate": "`B1*g` = `B1g` + `D21-D31`, la utilizări",
                "nota": "Produsul intern brut e valoarea adăugată brută plus impozitele minus subvenţiile pe produse. Verificat pe toată proiecţia: 31 din 31 de ani, abatere zero. PIB-ul e publicat doar pe coloanele `economia_totala` şi `total`.",
                "verificari": 31,
                "inchise": 31
            }
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — tabelul conturilor economice integrate (TEMPO, matricea CON102D).",
        "acoperire": {
            "de_la": 1995,
            "pana_la": 2025
        },
        "serii_returnate": 11,
        "nota_implicit": "Fără `cont` şi fără `cod`, răspunsul se opreşte la contul de producţie — primul din secvenţă. Restul conturilor sunt la /financiar/v1/conturi-integrate/operatiuni.",
        "nota_cheie": "Cheia unei serii e (cont, cod, denumire): acelaşi cod poate desemna două rânduri diferite în acelaşi cont.",
        "nota_sectoare": "Instituţiile fără scop lucrativ (`ifslsgp`) au coloană proprie aici; în seria trimestrială de la /financiar/v1/conturi-sectoare sunt topite în gospodării.",
        "nota_casete_goale": "9 serii au rămas afară: sunt zero în toţi anii publicaţi — casetele goale ale dreptunghiului, nu observaţii. Cu `zerouri=include` intră şi ele.",
        "nota_trimestrial": "Pentru aceleaşi conturi pe trimestre, din 1999: /financiar/v1/conturi-sectoare."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatMissing or invalid token.
403feature_indisponibilfinanciar.indici is not in the current plan.
422raspuns_prea_mareThe request would return more than 20,000 cells; the response states how many series and how many years that was. Plus an account, code, sector, side or year outside the expected form.
429cota_depasitaThe 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": "raspuns_prea_mare",
        "mesaj": "The request would return more than 20,000 cells; the response states how many series and how many years that was. Plus an account, code, sector, side or year outside the expected form.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}