oneapi
Sign in
Energie v1 / Sistemul energetic (SEN)

Series of observations

The moments are NOT evenly spaced — read the note in the response before computing averages.

GET
https://oneapi.ro/api/energie/v1/sen/serie

Query parameters

NameTypeDescriptionAccepted values
de_laoptional string | null First moment included. Accepts any recognised date format. e.g. 2026-09-04 00:00:00
pana_laoptional string | null Last moment included. e.g. 2026-09-04 23:59:59
limitaoptional integer | null How many observations to return, maximum 1000. Defaults to 100. 1 – 1000

How it behaves

  • The series is made of observations at irregular moments: they accumulate when the import runs, not at a fixed interval. The averages here are averages over observations, not over time, and cannot be converted into energy (MWh) without a constant-step series.
  • For regular, constant-step series with long history, the right source is the ENTSO-E Transparency Platform — not this one. That zone of the module is built separately.
  • Ordering is descending by moment. acoperire states how many observations exist and what interval they cover.

What it is for

  • Chart generation and consumption across the accumulated observations.
  • Track how the renewable share moves from one reading to the next.
  • Check what interval the data covers before building on it.

Response structure

All fields below live inside data.

FieldTypeDescription
inregistrari integer Câte observații conține răspunsul.
serie[].momentul string Momentul observației, în UTC.
serie[].sistem object Generation, consumption, balance and renewable share at that moment.
serie[].sistem.productie_mw integer Producția totală a sistemului, în MW.
serie[].sistem.consum_mw integer Consumul total, în MW.
serie[].sistem.sold_mw integer Soldul schimburilor: NEGATIV = România exportă net, pozitiv = importă net.
serie[].sistem.directie_sold string export, import sau echilibru — citirea în clar a semnului.
serie[].sistem.regenerabil_procent number Ponderea hidro + eolian + fotovoltaic + biomasă în suma surselor citite.
serie[].productie_pe_sursa[] array The per-source breakdown of generation for that reading.
serie[].productie_pe_sursa[].cod string Codul sursei (carbune_mw, fotovoltaic_mw…).
serie[].productie_pe_sursa[].denumire string Denumirea lizibilă.
serie[].productie_pe_sursa[].regenerabila boolean Dacă intră în ponderea regenerabilelor.
serie[].productie_pe_sursa[].valoare_mw integer Producția din acea sursă, în MW. Poate fi NEGATIVĂ la eolian.
acoperire.observatii integer Câte observații sunt în total în bază.
acoperire.prima string Cea mai veche observație.
acoperire.ultima string Cea mai recentă observație.
acoperire.regenerabil_mediu_procent number Media ponderii regenerabilelor peste toate observațiile.
acoperire.productie_minima_mw integer Cea mai mică producție observată.
acoperire.productie_maxima_mw integer Cea mai mare producție observată.
acoperire.consum_minim_mw integer Cel mai mic consum observat.
acoperire.consum_maxim_mw integer Cel mai mare consum observat.
observatie string Avertismentul despre observații neechidistante.
sursa object The data source, with its licence and notes.
sursa.nume string Sursa datelor.
sursa.url string Pagina sursei.
sursa.observatie string Temeiul publicării și precizarea că sursa nu publică termeni de reutilizare pentru acest flux.

Response examples

GEThttps://oneapi.ro/api/energie/v1/sen/serie?limita=50
{
    "data": {
        "inregistrari": 13,
        "serie": [
            {
                "momentul": "2026-09-04 12: 13: 29+03",
                "sistem": {
                    "productie_mw": 5152,
                    "consum_mw": 4754,
                    "sold_mw": -398,
                    "directie_sold": "export",
                    "regenerabil_procent": 68.8
                },
                "productie_pe_sursa": [
                    {
                        "cod": "carbune_mw",
                        "denumire": "Cărbune",
                        "regenerabila": false,
                        "valoare_mw": 640
                    }
                ]
            }
        ],
        "acoperire": {
            "observatii": 13,
            "prima": "2026-09-04 11: 59: 46+03",
            "ultima": "2026-09-04 12: 13: 29+03",
            "regenerabil_mediu_procent": 69.13,
            "productie_minima_mw": 5145,
            "productie_maxima_mw": 5258,
            "consum_minim_mw": 4713,
            "consum_maxim_mw": 4817
        },
        "observatie": "Seria e formată din OBSERVAȚII, la momente neechidistante — se acumulează când rulează importul, nu la interval fix. Mediile de aici sunt medii peste observații, nu medii în timp, și NU se pot converti în energie (MWh) fără o serie la pas constant. Pentru serii regulate și istoric, sursa potrivită e ENTSO-E.",
        "sursa": {
            "nume": "Transelectrica — harta operativă a Sistemului Energetic Național",
            "url": "https://www.transelectrica.ro/",
            "observatie": "Date de transparență publicate în temeiul Regulamentului (UE) 543/2013. Transelectrica nu publică termeni de reutilizare pentru acest flux."
        }
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validarepana_la precedes de_la, or limita exceeds 1000.
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": "pana_la precedes de_la, or limita exceeds 1000.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}