oneapi
Sign in
Financiar v1 / Inflatie

The supply and use balance by product

Where each product comes from and where it goes: how much is produced, how much imported, how much enters intermediate consumption, how much final consumption, how much investment, how much is exported — across 88 NACE Rev. 2 divisions, annually since 1995, in two price bases.

⚠️ Only rows with rol: componenta are additive. Those marked detaliu are breakdowns of a component, and taxe_vamale is memorandum: it is already inside impozite. Added separately, it breaks the identity.

⚠️ Comparable prices are the previous year's prices, not those of a base year: two years at comparable prices do not compare with each other. The ratio against the previous year at current prices is, however, the real growth.

GET
https://oneapi.ro/api/financiar/v1/intrari-iesiri/echilibru

Query parameters

NameTypeDescriptionAccepted values
bazaoptional string | null Optional: curente (default) or comparabile. Comparable prices are the previous year's prices. curentecomparabile
laturaoptional string | null Optional: resurse or utilizari. resurseutilizari
de_laoptional integer | null Optional, a year, from 1995 (1996 at comparable prices). 1995 – 2100
pana_laoptional integer | null Optional, a year. 1995 – 2100
produslistoptional text Optional, two-digit NACE divisions comma-separated, plus total, corectie_cif_fob, corectie_teritoriala. Without it, total is returned. e.g. total
categorielistoptional text Optional, category slugs comma-separated. e.g. corectie_cif_fobe.g. total_resurse
rollistoptional text Optional: total, componenta, detaliu, memorandum. Only componenta adds up. totalcomponentadetaliumemorandum

How it behaves

  • The supply and use balance by product from the input-output table (ESA 2010, NACE Rev.2) — 155,610 values from TEMPO matrices CON111A and CON111E. 91 product rows × 30 categories × two price bases: current prices from 1995 to 2023 (29 years) and comparable prices from 1996 (28).
  • It is the only place in the module that shows, product by product, where the goods come from and where they go: how much is produced, how much imported, how much goes into intermediate consumption, into final consumption, into investment, into exports. The accounts at /financiar/v1/conturi-integrate say who receives the money; this route says what happens to the good or service.
  • The rows are 88 NACE Rev.2 divisions — 01 agriculture, 10 food industry, 35 energy, 68 real estate — plus three special rows: corectie_cif_fob, corectie_teritoriala and total. Without produs, the response stops at total.
  • ⚠️ Only rows with rol: componenta add up. Those marked detaliu are breakdowns of a component — VAT and other taxes within impozite, market/non-market/own-final-use output within productie, intra- and extra-EU imports and exports, the kinds of final consumption. And taxe_vamale carries rol: memorandum: it is already inside impozite. Added separately, the resources identity falls from 2,639 to 1,855 closed cells.
  • ⚠️ marja_transport_comert adds up on every product but is zero on total. It is a redistribution between products — the margin paid for transporting and trading a good — which cancels out across the economy. For the food industry in 2023 the margin is 46,513 of the 221,483 million in resources.
  • ⚠️ subventii is published with a NEGATIVE sign and is ADDED in the identity, not subtracted — as everywhere in the national accounts. Exactly one cell of 2,639 carries a positive subsidy.
  • Five identities are checked on every request. total_resurse = total_utilizari, the fundamental balance: 2,639 of 2,639 cells at current prices and 2,548 of 2,548 at comparable prices. The composition of resources (seven components) and of uses (six). productie = market + non-market + own final use: 2,639 of 2,639. And the total row = the sum of the 90 product rows: 870 of 870 — the two corrections belong in the sum, and without them the identity falls to 660.
  • ⚠️ The tolerance is not a chosen constant, it is derived from the year. The source publishes one decimal through 2017 and rounds to whole millions from 2018 (7,547 decimal values before, 780 after). Measured: the composition of resources and of uses close exactly, with ZERO deviation, in all 23 years through 2017; from 2018 the only remaining slack is the source's own rounding — at most 1 on resources and 2 on uses, against the 3.5-4 bound implied by the number of rounded terms. The bound is half a rounding step per term added, plus one for the total.
  • ⚠️ Comparable prices are the previous year's prices, not those of a base year. Two years at comparable prices do NOT compare with each other. The ratio against the same year at current prices is, however, real growth: 2020 comparable / 2019 current = 0.957, that is −4.3% — the pandemic contraction; 2021 gives +7.6%.

What it is for

  • A product's import dependence: how much of its supply comes from abroad.
  • Where a branch's output goes — intermediate consumption, final consumption, investment or exports.
  • The structure of the trade and transport margin across products.
  • Real growth in a product's supply, from the ratio between comparable prices and the previous year at current prices.

Response structure

FieldTypeDescription
data.baza string
data.descriere_baza string What the reporting base represents, in words.
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.produs array Product from the source code list.
data.ani array Years for which values exist.
data.serii[].produs string Product from the source code list.
data.serii[].denumire_produs string
data.serii[].nivel_produs string
data.serii[].categorie string Category in the source classification.
data.serii[].denumire_categorie string Name of the category, as published by the source.
data.serii[].latura string Side of the account (resources or uses).
data.serii[].rol string total, componenta, detaliu or memorandum. Only the components add up.
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.nota_toleranta string Why the bound depends on the year and on the number of terms.
data.identitati.echilibru.identitate string The identity being checked — which sum must equal which total.
data.identitati.echilibru.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.echilibru.verificari integer How many combinations were checked.
data.identitati.echilibru.inchise integer How many checks closed within tolerance.
data.identitati.resurse.identitate string The identity being checked — which sum must equal which total.
data.identitati.resurse.nota string A note on how to read the data — a pitfall, a convention or a limit of the source.
data.identitati.resurse.verificari integer How many combinations were checked.
data.identitati.resurse.inchise integer How many checks closed within tolerance.
data.identitati.utilizari.identitate string The identity being checked — which sum must equal which total.
data.identitati.utilizari.verificari integer How many combinations were checked.
data.identitati.utilizari.inchise integer How many checks closed within tolerance.
data.identitati.productie.identitate string The identity being checked — which sum must equal which total.
data.identitati.productie.verificari integer How many combinations were checked.
data.identitati.productie.inchise integer How many checks closed within tolerance.
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.total.verificari integer The total identity is computed from the database, not from the response: a response filtered to a few products could not run it.
data.identitati.total.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_rol string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_marja 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_conturi string A note on how to read the response: a caveat, a convention or a limit of the source.
data.serii[].nu_se_aduna Present on taxe_vamale: it is already inside impozite.
data.serii[].semn_negativ Present on subventii, which is ADDED in the identity.
meta.fara_date string data is null and this says why. The projection over the INS data is empty for the requested base. The full nomenclature is at /intrari-iesiri/nomenclator. The span lies entirely outside the requested base; note that the comparable one starts only in 1996. It overlaps but holds no values.
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/intrari-iesiri/echilibru
{
    "data": {
        "baza": "curente",
        "descriere_baza": "Preţuri curente — valorile anului, aşa cum au fost",
        "unitate": "milioane lei",
        "de_la": 1995,
        "pana_la": 2023,
        "filtre": {
            "produs": [
                "total"
            ]
        },
        "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
        ],
        "serii": [
            {
                "produs": "total",
                "denumire_produs": "Total",
                "nivel_produs": "special",
                "categorie": "corectie_cif_fob",
                "denumire_categorie": "Corectie CIF - FOB",
                "latura": "resurse",
                "rol": "componenta",
                "unitate": "milioane lei",
                "ani_publicati": 29,
                "valori": {
                    "1995": "0",
                    "1996": "0",
                    "1997": "0",
                    "1998": "0",
                    "1999": "0",
                    "2000": "0",
                    "2001": "0",
                    "2002": "0",
                    "2003": "0",
                    "2004": "0",
                    "2005": "0",
                    "2006": "0",
                    "2007": "0",
                    "2008": "0",
                    "2009": "0",
                    "2010": "0",
                    "2011": "0",
                    "2012": "0",
                    "2013": "0",
                    "2014": "0",
                    "2015": "0",
                    "2016": "0",
                    "2017": "0",
                    "2018": "0",
                    "2019": "0",
                    "2020": "0",
                    "2021": "0",
                    "2022": "0",
                    "2023": "0"
                }
            }
        ],
        "identitati": {
            "nota_toleranta": "Toleranţa nu e o constantă: sursa publică o zecimală până în 2017 şi rotunjeşte la milionul întreg după, aşa că pragul e o jumătate de pas pentru fiecare termen adunat.",
            "echilibru": {
                "identitate": "`total_resurse` = `total_utilizari`",
                "nota": "Echilibrul fundamental al tabelului: tot ce apare ca resursă a unui produs se regăseşte ca utilizare. Verificat pe toată proiecţia: 2.639 din 2.639 de celule la preţuri curente şi 2.548 din 2.548 la comparabile.",
                "verificari": 29,
                "inchise": 29
            },
            "resurse": {
                "identitate": "`total_resurse` = `productie` + `import` + `impozite` + `subventii` + `marja_transport_comert` + `corectie_cif_fob` + `redistribuire_productie`",
                "nota": "`taxe_vamale` nu intră în sumă: e deja cuprins în `impozite`. Cu el înăuntru, identitatea cade de la 2.639 la 1.855 de celule închise. `subventii` are semn negativ şi se ADUNĂ.",
                "verificari": 29,
                "inchise": 29
            },
            "utilizari": {
                "identitate": "`total_utilizari` = `consum_intermediar` + `consum_final` + `formare_capital_fix` + `variatie_stoc` + `obiecte_de_valoare` + `export`",
                "verificari": 29,
                "inchise": 29
            },
            "productie": {
                "identitate": "`productie` = `productie_piata` + `productie_nepiata` + `productie_consum_propriu`",
                "verificari": 29,
                "inchise": 29
            },
            "total": {
                "identitate": "rândul `total` = suma celor 90 de rânduri de produs",
                "nota": "Cele două corecţii — `corectie_cif_fob` şi `corectie_teritoriala` — intră în sumă. Fără ele, identitatea cade de la 870 la 660 de celule închise. Pragul e mai larg aici fiindcă se adună 90 de termeni rotunjiţi.",
                "verificari": 870,
                "inchise": 870
            }
        }
    },
    "meta": {
        "sursa": "Institutul Naţional de Statistică — tabelul intrări-ieşiri, echilibrul resurse-utilizări pe produse (TEMPO, matricile CON111A şi CON111E).",
        "acoperire": {
            "de_la": 1995,
            "pana_la": 2023
        },
        "serii_returnate": 30,
        "nota_implicit": "Fără `produs`, răspunsul se opreşte la rândul `total`. Cele 88 de diviziuni sunt la /financiar/v1/intrari-iesiri/nomenclator.",
        "nota_rol": "Se adună doar rândurile cu `rol: componenta`; `detaliu` sunt defalcări, iar `taxe_vamale` e memorandum, deja cuprins în `impozite`.",
        "nota_marja": "`marja_transport_comert` se adună la fiecare produs, dar e zero pe `total`: e o redistribuire între produse.",
        "nota_identitate": "Verificat pe acest răspuns: resursele sunt egale cu utilizările în 29 din 29 celule.",
        "nota_conturi": "Pentru aceleaşi agregate pe sectoare instituţionale: /financiar/v1/conturi-integrate."
    }
}

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. Plus a base, product, category, role, 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. Plus a base, product, category, role, side or year outside the expected form.",
        "detalii": {
            "baza": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}