oneapi
Sign in
Financiar v1 / Inflatie

HICP rate of change

The price change derived correctly from levels — the ratio of the values, not their difference — and in all three definitions in circulation.

The HICP is a LEVEL, not a change, and anyone subtracting two levels and reading the result as a percentage is wrong. The error is not even consistent: in December 2022 the ratio gives +14.14%, but the subtraction gives 16.79 — an overstatement of 2.65 points; in December 2008 the ratio gives +6.38% while the subtraction gives 4.81 — an understatement. It is not a deviation with a constant sign that someone could correct for out of habit.

The three definitions differ substantially. For December 2022, the annual change gives 14.14%, while the average of the last twelve months against the average of the previous twelve gives 12.02% — two points on the same data. The second is the definition from Protocol No 13, the one used by /convergenta/criteriu-dobanda. The route returns all three, with names saying what they are: silently choosing one would be a decision taken on your behalf.

Nothing assumes a positive sign: the Romanian series has 17 months with a negative annual change (2015–2016, the VAT cut), with a minimum of −2.96% in May 2016. And nothing assumes small values: June 1997 gives +177.70%, correctly.

The first months of the window do not always have anything to derive a change from — the annual one needs twelve months of history, the twelve-month average needs twenty-four. The series is read with the necessary history behind it, and where that still does not reach, the field is null, not 0: a zero would say „prices did not move".

GET
https://oneapi.ro/api/financiar/v1/hicp/variatie

Query parameters

NameTypeDescriptionAccepted values
taraoptional string | null Optional, defaults to RO. Code as the source writes it: RO, EL, EA, EU27_2020. max 16 car.
categorieoptional string | null Optional, defaults to TOTAL (the total index; CP00 is accepted as a synonym). Other categories exist for only fourteen entities. max 32 car.
de_larequired string Required, YYYY-MM. e.g. 2024-06e.g. 2024e.g. 2024-06-15
pana_laoptional string | null Optional, YYYY-MM. Defaults to the last published month. At most 360 months. e.g. 2024-06-30

How it behaves

  • The change in prices derived correctly from levels — the ratio of the values, not their difference — and in all three definitions in circulation.
  • HICP is a LEVEL, not a rate of change, and subtracting two levels then reading the result as a percentage is wrong. The error is not even consistent: in December 2022 the ratio gives +14.14%, while the subtraction gives 16.79 — overstating by 2.65 points; in December 2008 the ratio gives +6.38% and the subtraction 4.81 — understating. It is not a bias with a fixed sign that anyone could correct out of habit.
  • The three definitions differ substantially. For December 2022: the annual rate gives 14.14%, while the average of the last twelve months against the average of the twelve before gives 12.02% — two points apart on the same data. The second is the Protocol No 13 definition, the one used by /convergenta/criteriu-dobanda. This route returns all three, named for what they are: silently picking one would be a decision made on your behalf.
  • Nothing assumes a positive sign. The Romanian series has 17 months of negative annual change — 2015–2016, the VAT cut — bottoming at −2.96% in May 2016, and 41 months of negative monthly change. rezumat.*.luni_negative counts them within the requested window.
  • And nothing assumes small values: June 1997 gives +177.70% year on year. The series spans the hyperinflation years, and the figure is correct, not a computation error.
  • The first months of a window cannot always have a rate: the annual one needs twelve months of history, the twelve-month average needs twenty-four. The series is read with the history it needs behind it, and where that still is not enough the field is null, not 0 — a zero would say "prices did not move", which is not the same as "cannot be computed".
  • An incomplete window is refused, not padded with what is there: an eleven-month average presented as a twelve-month one would be a figure that looks the same and means something else.
  • One entity only. Comparing countries is a different question and has its own route: /hicp/comparat.

What it is for

  • The harmonised inflation rate, in the definition that fits the question.
  • Comparing your own figure with the convergence-criterion one, without conflating them.
  • Tracking a specific category — energy, food — as a rate rather than a level.

Response structure

FieldTypeDescription
data.tara string The country the value refers to.
data.categorie string Category in the source classification.
data.de_la string Start of the interval the response covers.
data.pana_la string End of the interval the response covers, inclusive.
data.unitate string Always procent.
data.rezumat object For each definition: the latest value, the minimum, the maximum, how many months were negative, and how many points could be computed.
data.rezumat.variatie_lunara.ultima.luna string The month the value refers to.
data.rezumat.variatie_lunara.ultima.valoare string The value published by the source for the combination above.
data.rezumat.variatie_lunara.minim.luna string The month the value refers to.
data.rezumat.variatie_lunara.minim.valoare string The value published by the source for the combination above.
data.rezumat.variatie_lunara.maxim.luna string The month the value refers to.
data.rezumat.variatie_lunara.maxim.valoare string The value published by the source for the combination above.
data.rezumat.variatie_lunara.luni_negative integer
data.rezumat.variatie_lunara.puncte integer Number of data points.
data.rezumat.variatie_anuala.ultima.luna string The month the value refers to.
data.rezumat.variatie_anuala.ultima.valoare string The value published by the source for the combination above.
data.rezumat.variatie_anuala.minim.luna string The month the value refers to.
data.rezumat.variatie_anuala.minim.valoare string The value published by the source for the combination above.
data.rezumat.variatie_anuala.maxim.luna string The month the value refers to.
data.rezumat.variatie_anuala.maxim.valoare string The value published by the source for the combination above.
data.rezumat.variatie_anuala.luni_negative integer
data.rezumat.variatie_anuala.puncte integer Number of data points.
data.rezumat.variatie_medie_12luni.ultima.luna string The month the value refers to.
data.rezumat.variatie_medie_12luni.ultima.valoare string The value published by the source for the combination above.
data.rezumat.variatie_medie_12luni.minim.luna string The month the value refers to.
data.rezumat.variatie_medie_12luni.minim.valoare string The value published by the source for the combination above.
data.rezumat.variatie_medie_12luni.maxim.luna string The month the value refers to.
data.rezumat.variatie_medie_12luni.maxim.valoare string The value published by the source for the combination above.
data.rezumat.variatie_medie_12luni.luni_negative integer
data.rezumat.variatie_medie_12luni.puncte integer Number of data points.
data.valori[].luna string The month the value refers to.
data.valori[].indice string The published level, on 2015 = 100.
data.valori[].variatie_lunara string Against the previous month.
data.valori[].variatie_anuala string Against the same month a year earlier — the usual inflation rate.
data.valori[].variatie_medie_12luni string The last 12 months' average against the previous 12 months' — the Protocol No 13 definition.
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.acoperire object The entity's range for the requested category.
meta.acoperire.de_la string The first period we have data for.
meta.acoperire.pana_la string The last period we have data for.
meta.puncte integer Number of data points.
meta.luni_interval integer
meta.nota_derivare string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_definitii string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_null string Why some values are missing: the source did not publish, did not compute, or suppressed them.
meta.nota_semn string What the sign of the value means (inflow/outflow, rise/fall).
meta.comparatie_intre_tari string
meta.fara_date data is null and this says why. The window falls outside the coverage.
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/hicp/variatie?de_la=2024-06
{
    "data": {
        "tara": "RO",
        "categorie": "TOTAL",
        "de_la": "2024-06",
        "pana_la": "2026-08",
        "unitate": "procent",
        "rezumat": {
            "variatie_lunara": {
                "ultima": {
                    "luna": "2026-08",
                    "valoare": "0.26"
                },
                "minim": {
                    "luna": "2026-06",
                    "valoare": "-0.06"
                },
                "maxim": {
                    "luna": "2025-08",
                    "valoare": "2.10"
                },
                "luni_negative": 1,
                "puncte": 27
            },
            "variatie_anuala": {
                "ultima": {
                    "luna": "2026-08",
                    "valoare": "6.27"
                },
                "minim": {
                    "luna": "2024-09",
                    "valoare": "4.84"
                },
                "maxim": {
                    "luna": "2026-05",
                    "valoare": "9.75"
                },
                "luni_negative": 0,
                "puncte": 27
            },
            "variatie_medie_12luni": {
                "ultima": {
                    "luna": "2026-08",
                    "valoare": "8.58"
                },
                "minim": {
                    "luna": "2025-05",
                    "valoare": "5.24"
                },
                "maxim": {
                    "luna": "2026-07",
                    "valoare": "8.77"
                },
                "luni_negative": 0,
                "puncte": 27
            }
        },
        "valori": [
            {
                "luna": "2024-06",
                "indice": "149.11",
                "variatie_lunara": "0.06",
                "variatie_anuala": "5.34",
                "variatie_medie_12luni": "7.31"
            }
        ]
    },
    "meta": {
        "sursa": "Eurostat — HICP lunar (prc_hicp_minr, ECOICOP ver. 2), indici cu baza 2015 = 100.",
        "acoperire": {
            "de_la": "1996-01",
            "pana_la": "2026-08"
        },
        "puncte": 27,
        "luni_interval": 27,
        "nota_derivare": "Variaţiile sunt RAPORTUL nivelurilor, nu diferenţa lor. Scăderea a două niveluri citită ca procent greşeşte în ambele sensuri: decembrie 2022 dă 16,79 în loc de 14,14%, decembrie 2008 dă 4,81 în loc de 6,38%.",
        "nota_definitii": "`variatie_anuala` e nivelul faţă de nivelul de acum douăsprezece luni — rata de inflaţie obişnuită. `variatie_medie_12luni` e media ultimelor 12 luni faţă de media celor 12 anterioare, definiţia din Protocolul nr. 13 folosită de /financiar/v1/convergenta/criteriu-dobanda. Diferă real: 14,14% faţă de 12,02% în decembrie 2022.",
        "nota_null": "`null` înseamnă „nu se poate calcula\" — lipseşte luna de referinţă — nu „zero\". Anuala cere 12 luni în urmă, media pe 12 luni cere 24.",
        "nota_semn": "Variaţiile pot fi negative: seria românească are 17 luni cu variaţie anuală sub zero (2015–2016), minimul −2,96% în mai 2016. `rezumat.*.luni_negative` le numără în fereastra cerută.",
        "comparatie_intre_tari": "/financiar/v1/hicp/comparat"
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareinterval_prea_lung beyond 360 months, or a malformed month. entitate_necunoscuta — no HICP for the requested entity; the response lists the available ones. categorie_indisponibila — the entity exists but lacks the category.
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": "validare",
        "mesaj": "interval_prea_lung beyond 360 months, or a malformed month. entitate_necunoscuta — no HICP for the requested entity; the response lists the available ones. categorie_indisponibila — the entity exists but lacks the category.",
        "detalii": {
            "tara": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}