Energie v1 / Piaţa de energie
Generation by source type
Actual generation by source type, in MW for each interval: nuclear, hydro, wind, solar, gas, coal. Use sursa to ask for just one.
GET
https://oneapi.ro/api/energie/v1/piata/productie
Query parameters
NameTypeDescriptionAccepted values
de_laoptional
string | null
Start of the window. Defaults to 7 days ago.
e.g. 2026-09-05
pana_laoptional
string | null
End of the window. Defaults to now.
e.g. 2026-09-06
zonaoptional
string | null
The EIC code of the bidding zone. Defaults to Romania. The only zone imported today is
10YRO-TEL------P; any other value returns 422, not an empty series. The list is in /piata/acoperire, under zone_ofertare.
10YRO-TEL------P
sursaoptional
string | null
A single generation code, from the
/piata/surse route.
e.g. B16
per_paginaoptional
text
Intervals per page, up to 2000.
e.g. 500
paginaoptional
text
The page, counted from 1.
e.g. 1
How it behaves
- The history has a gap, and it is visible at
/piata/acoperire. The series starts in 2015, but the historical import is still in progress: about 28-30 months are currently missing (2015-03 → 2017-08). A request falling inside the gap returns200with an empty list — which does NOT mean the market had no activity, but that the period has not been imported yet. Thegolurifield in the coverage route lists exactly which months are missing, computed from the data, so it shrinks on its own as the history fills in. - The value is average power over the interval (MW), not energy. To get MWh, multiply by the interval length in hours — or call the summary route, which does exactly that.
- The code labels are not copied from a list. The official ENTSO-E list is not programmatically accessible, so every code was established empirically: by comparison with Transelectrica for the same moment, by elimination against the 2015 history, or from the hourly profile.
confirmatrefers to the CLASSIFICATION (group and renewable/non-renewable);numecan benullon a confirmed code, where the evidence supports the classification but not a fuel name. - The source also publishes the units own consumption, as a reverse flow. Only generation is included here; plant self-consumption is neither subtracted from it nor mixed into it.
What it is for
- Track how much wind or solar produced on a given day, interval by interval.
- Tie renewable output to the negative-price intervals, to explain why they occur.
- Build a per-type generation profile for a forecasting model.
Response structure
FieldTypeDescription
data.serie[].valoare_mw
number
Puterea medie pe interval, în MW.
data.serie[].sursa.cod
string
Codul ENTSO-E al tipului de producţie.
data.serie[].sursa.confirmat
boolean
Dacă eticheta a fost verificată pe date reale.
data.filtru_sursa
null
The generation code the series was filtered on, if one was requested.
data.serie[].moment
string
Start of the interval, in UTC.
data.fara_date
null
Present (non-null) ONLY when the series is empty, and says WHY:
motiv is dupa_acoperire (the window is past the last imported point), inainte_de_acoperire, or gol_in_acoperire (a hole inside the history). acoperire gives the real ends of the series. ⚠️ An empty series does NOT mean the market had no activity.
data.serie[].rezolutie_min
integer
Interval duration, in minutes.
data.serie[].sursa.nume
string
The source name. It can be
null even on a confirmed code, when the evidence supports the classification but not a fuel name.
data.serie[].sursa.grupa
string
The source grouping, for your own aggregations.
data.serie[].sursa.regenerabila
boolean
Whether the source counts towards the renewable share.
data.observatie
string
Why the value is power, not energy.
data.sursa
object
ENTSO-E Transparency Platform, with the required attribution.
meta.paginare.pagina
integer
Current page, counted from 1.
meta.paginare.per_pagina
integer
How many records a page holds.
meta.paginare.total
integer
Total matching records, beyond the current page.
meta.paginare.pagini
integer
How many pages the list has.
Response examples
GEThttps://oneapi.ro/api/energie/v1/piata/productie
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-29 20: 39: 52",
"pana_la": "2026-10-06 20: 39: 52",
"filtru_sursa": null,
"fara_date": null,
"serie": [
{
"moment": "2026-09-29T20: 45: 00+03: 00",
"rezolutie_min": 15,
"sursa": {
"cod": "B01",
"nume": "Biomasă",
"grupa": "biomasa",
"regenerabila": true,
"confirmat": true
},
"valoare_mw": 64
}
],
"observatie": "Valoarea e PUTERE medie pe interval (MW), nu energie. Pentru energie, înmulțește cu durata intervalului — sau folosește ruta de sumar, care o calculează.",
"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."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 500,
"total": 1520,
"pagini": 4
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/productie?sursa=B16&de_la=2026-09-05&pana_la=2026-09-06
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-04 21: 00: 00",
"pana_la": "2026-09-05 21: 00: 00",
"filtru_sursa": "B16",
"fara_date": null,
"serie": [
{
"moment": "2026-09-04T21: 00: 00+03: 00",
"rezolutie_min": 15,
"sursa": {
"cod": "B16",
"nume": "Fotovoltaic",
"grupa": "fotovoltaic",
"regenerabila": true,
"confirmat": true
},
"valoare_mw": 0
}
],
"observatie": "Valoarea e PUTERE medie pe interval (MW), nu energie. Pentru energie, înmulțește cu durata intervalului — sau folosește ruta de sumar, care o calculează.",
"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."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 500,
"total": 97,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/productie?sursa=B19&de_la=2026-09-20&pana_la=2026-09-21
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-19 21: 00: 00",
"pana_la": "2026-09-20 21: 00: 00",
"filtru_sursa": "B19",
"fara_date": null,
"serie": [
{
"moment": "2026-09-19T21: 00: 00+03: 00",
"rezolutie_min": 15,
"sursa": {
"cod": "B19",
"nume": "Eolian (pe uscat)",
"grupa": "eolian",
"regenerabila": true,
"confirmat": true
},
"valoare_mw": 363
}
],
"observatie": "Valoarea e PUTERE medie pe interval (MW), nu energie. Pentru energie, înmulțește cu durata intervalului — sau folosește ruta de sumar, care o calculează.",
"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."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 500,
"total": 97,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/energie/v1/piata/productie?de_la=2026-09-25&pana_la=2026-09-26
{
"data": {
"zona": "10YRO-TEL------P",
"de_la": "2026-09-24 21: 00: 00",
"pana_la": "2026-09-25 21: 00: 00",
"filtru_sursa": null,
"fara_date": null,
"serie": [
{
"moment": "2026-09-24T21: 00: 00+03: 00",
"rezolutie_min": 15,
"sursa": {
"cod": "B01",
"nume": "Biomasă",
"grupa": "biomasa",
"regenerabila": true,
"confirmat": true
},
"valoare_mw": 54
}
],
"observatie": "Valoarea e PUTERE medie pe interval (MW), nu energie. Pentru energie, înmulțește cu durata intervalului — sau folosește ruta de sumar, care o calculează.",
"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."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 500,
"total": 970,
"pagini": 2
}
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | The source code is not of the form Bnn, or the window is reversed. |
| 429 | cota_depasita | The 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": "The source code is not of the form Bnn, or the window is reversed.",
"detalii": {
"de_la": [
"The value sent does not satisfy the parameter rule."
]
}
}
}