oneapi
Autentificare
Energie v1 / Piaţa de energie

Sumarul intervalului

Preţ, consum şi producţie pe sursă pentru un interval, strânse într-un singur răspuns, cu energia totală calculată din puterile pe intervale.

GET
https://oneapi.ro/api/energie/v1/piata/sumar

Parametri de interogare

NumeTipDescriereValori acceptate
de_laopțional string | null Începutul ferestrei. Implicit acum 7 zile. ex. 2026-09-01
pana_laopțional string | null Sfârşitul ferestrei. Implicit acum. ex. 2026-09-07
zonaopțional string | null Codul EIC al zonei de ofertare. Implicit România. Singura zonă importată azi e 10YRO-TEL------P; orice altă valoare dă 422, nu o serie goală. Lista e în /piata/acoperire, la zone_ofertare. 10YRO-TEL------P

Cum se comportă

  • Istoricul are un gol, şi el se vede la /piata/acoperire. Seria începe în 2015, dar importul de istoric e încă în curs: în prezent lipsesc ~28-30 de luni (2015-03 → 2017-08). O cerere care cade în gol întoarce 200 cu listă goală — ceea ce NU înseamnă că piaţa n-a avut activitate, ci că perioada n-a fost adusă încă. Câmpul goluri din acoperire listează exact lunile care lipsesc, calculat din date, deci se micşorează singur pe măsură ce istoricul se completează.
  • Seria poate depăşi momentul prezent. Preţul de zi-următoare se publică în avans, deci ultimul interval din răspuns e adesea o oră care încă nu s-a consumat. Nu e o eroare şi nu e o prognoză de-a noastră: e cotaţia fermă, publicată de bursă înainte de livrare. Consecinţa practică: o fereastră care se termină „acum" poate amesteca ore deja consumate cu ore încă nelivrate, iar o medie peste ea le pune la un loc. Dacă ai nevoie strict de realizat, taie fereastra la ora curentă.
  • Energia (MWh) e derivată: putere medie × durata intervalului, însumată. Nu e o mărime publicată de sursă — de aceea toate mediile de aici sunt ponderate cu durata, nu aritmetice.
  • regenerabil_procent se calculează doar peste codurile confirmate ca regenerabile. Când există producţie pe coduri neconfirmate, procent_este_minim devine true: adevărata pondere e cel puţin atât, poate mai mult. Preferăm să spunem asta decât să livrăm un procent rotund şi fals.
  • Bilanţul e explicit şi nu se închide exact: producţie + import − export nu dă fix consumul. Măsurat pe 1-6 septembrie 2026, diferenţa a fost de 2,4% din consum. Producţia se publică doar pentru unităţile peste pragul de raportare, iar consumul e sarcina realizată, cu pierderile de reţea incluse. Câteva procente sunt normale; zeci de procente înseamnă date lipsă în fereastra cerută.
  • Cifrele nu se compară cu cele din zona sen. Acolo e instantaneul Transelectrica, la momente neechidistante; aici e seria oficială europeană, la pas fix. Surse diferite, definiţii diferite.

La ce folosește

  • Ai nevoie de o singură cerere care spune cât a costat energia, cât s-a consumat şi din ce s-a produs.
  • Raportezi ponderea regenerabilelor pe o lună, cu energia calculată corect din putere şi durată.
  • Compari o săptămână cu alta fără să aduci zeci de mii de intervale.

Structura răspunsului

Toate câmpurile de mai jos sunt în data.

CâmpTipDescriere
productie.energie_totala_mwh number Energia produsă în fereastră, derivată.
productie.regenerabil_procent number Ponderea regenerabilelor, ori null dacă nu există producţie.
productie.procent_este_minim boolean Dacă procentul e un minim din cauza codurilor neconfirmate.
consum.energie_mwh number Energia consumată, derivată.
preturi object Statistica preţului pe fereastră: minim, maxim, medie ponderată, intervale negative, ore acoperite.
consum.intervale integer Câte intervale de consum intră în calcul.
consum.putere_medie_mw number Consumul mediu al ferestrei, ponderat cu durata.
consum.minim_mw integer Cel mai mic consum din fereastră.
consum.maxim_mw integer Vârful de consum din fereastră.
productie.energie_regenerabila_mwh number Energia produsă din surse confirmate ca regenerabile.
productie.pe_sursa[].sursa object Tipul de producţie, cu codul şi eticheta lui.
productie.pe_sursa[].putere_medie_mw number Puterea medie a sursei pe fereastră.
productie.pe_sursa[].putere_maxima_mw integer Vârful sursei în fereastră.
productie.pe_sursa[].energie_mwh number Energia produsă de sursă, derivată din putere × durată.
schimburi.import_mwh number Energia intrată în zonă în fereastră, pe toate graniţele.
schimburi.export_mwh number Energia ieşită din zonă.
schimburi.sold_mwh number Soldul: import − export.
schimburi.directie_neta string Dacă zona a fost pe net importatoare sau exportatoare.
schimburi.pe_granita array Aceleaşi cifre, defalcate pe fiecare graniţă.
bilant.productie_mwh number Energia produsă în fereastră.
bilant.import_mwh number Energia intrată prin graniţe.
bilant.export_mwh number Energia ieşită prin graniţe.
bilant.disponibil_mwh integer Producţie + import − export: cât a fost disponibil în zonă.
bilant.consum_mwh number Consumul realizat, pentru comparaţie.
bilant.diferenta_mwh number Cât NU se închide bilanţul. Nu e o eroare — vezi observaţia.
bilant.diferenta_procent number Aceeaşi diferenţă, raportată la consum.
bilant.observatie string De ce bilanţul nu se închide exact şi de la cât încolo diferenţa devine un semnal.
coduri_neconfirmate array Codurile cu producţie care n-au etichetă confirmată.
observatie string Cum se citeşte energia derivată şi de ce nu se compară cu zona sen.
sursa object ENTSO-E Transparency Platform, cu atribuirea obligatorie.

Exemple de răspuns

GEThttps://oneapi.ro/api/energie/v1/piata/sumar
{
    "data": {
        "zona": "10YRO-TEL------P",
        "de_la": "2026-09-29 20: 39: 53",
        "pana_la": "2026-10-06 20: 39: 53",
        "preturi": {
            "intervale": 593,
            "primul": "2026-09-29T20: 45: 00+03: 00",
            "ultimul": "2026-10-06T00: 45: 00+03: 00",
            "minim_eur_mwh": 0.69,
            "maxim_eur_mwh": 435.08,
            "medie_ponderata_eur_mwh": 170.1,
            "intervale_cu_pret_negativ": 0,
            "ore_acoperite": 148.25
        },
        "consum": {
            "intervale": 152,
            "putere_medie_mw": 5462.7,
            "minim_mw": 3994,
            "maxim_mw": 7076,
            "energie_mwh": 207581.8
        },
        "productie": {
            "energie_totala_mwh": 190131.5,
            "energie_regenerabila_mwh": 112773.9,
            "regenerabil_procent": 59.3,
            "procent_este_minim": false,
            "pe_sursa": [
                {
                    "sursa": {
                        "cod": "B19",
                        "nume": "Eolian (pe uscat)",
                        "grupa": "eolian",
                        "regenerabila": true,
                        "confirmat": true
                    },
                    "intervale": 152,
                    "putere_medie_mw": 1580.6,
                    "putere_maxima_mw": 2446,
                    "energie_mwh": 60064.5
                }
            ]
        },
        "schimburi": {
            "import_mwh": 159706.9,
            "export_mwh": 84351.4,
            "sold_mwh": 75355.5,
            "directie_neta": "import",
            "pe_granita": [
                {
                    "vecin": "BG",
                    "vecin_denumire": "Bulgaria",
                    "vecin_eic": "10YCA-BULGARIA-R",
                    "rezolutie_min": 60,
                    "import_mwh": 133302.2,
                    "export_mwh": 15671.3,
                    "import_putere_medie_mw": 1101.7,
                    "export_putere_medie_mw": 129.5,
                    "intervale": 242,
                    "sold_mwh": 117630.9,
                    "directie_neta": "import"
                }
            ]
        },
        "bilant": {
            "productie_mwh": 190131.5,
            "import_mwh": 159706.9,
            "export_mwh": 84351.4,
            "disponibil_mwh": 265487,
            "consum_mwh": 207581.8,
            "diferenta_mwh": -57905.2,
            "diferenta_procent": -27.9,
            "observatie": "Bilanţul NU se închide exact şi nici nu are cum: producţia se publică doar pentru unităţile peste pragul de raportare, iar consumul e sarcina realizată, cu pierderile de reţea incluse. O diferenţă de câteva procente e normală; una de zeci de procente înseamnă date lipsă în fereastra cerută."
        },
        "coduri_neconfirmate": [],
        "observatie": "Energia e derivată din puterea medie × durata intervalului. Nu se compară direct cu zona `sen`, care e instantaneul Transelectrica, cu altă definiție și alt pas.",
        "sursa": {
            "nume": "ENTSO-E Transparency Platform",
            "url": "https://transparency.entsoe.eu",
            "atribuire": "Date din ENTSO-E Transparency Platform.",
            "licenta": "Reutilizare permisă cu ATRIBUIRE obligatorie către Transparency Platform. Drepturile nu sunt sublicențiabile.",
            "observatie": "Zona `piata` e seria oficială europeană; zona `sen` e instantaneul Transelectrica. Au surse, pași și definiții diferite — cifrele lor nu se compară direct."
        }
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareFereastra e inversată.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "Fereastra e inversată.",
        "detalii": {
            "de_la": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}