Locations v1 / Șomaj & construcții
Building permits of an administrative unit
⭐ The permits issued in the administrative unit at the latest published year, by category, with the count and the usable floor area (m²).
GET
https://oneapi.ro/api/locations/v1/uat/{cod}/autorizatii
Path parameters
NameTypeDescriptionExample
codrequired
string
SIRUTA code of the administrative-territorial unit (e.g.
54975 for Cluj-Napoca).
Query parameters
This route accepts no query parameters.
How it behaves
- ⭐ Building permits per unit, annually since 2002, with the count and the usable floor area. This route gives the latest published year; the trend is at
/uat/{cod}/autorizatii/serie. - The figures show things a county average hides: in 2025, the communes of Moșnița Nouă (511), Miroslava (440) and Berceni (414) each issued more residential permits than the whole city of Bucharest (403).
- Missing categories are not returned as zero — the source simply does not publish the row, which is not the same thing as „zero permits".
- 9 communes out of 3,181 have no permit published across the whole 2002–2025 range; for them the route returns 404, not an empty list.
What it is for
- How much is being built in a commune or town, right now.
- A growth indicator for an area, alongside the number of new companies.
- Prospecting for building materials or related services.
Response structure
FieldTypeDescription
data.entitate
string
The unit's canonical name.
data.an
integer
The latest year published for this entity.
data.sursa
string
The data source.
data.categorii[].categorie
string
The construction category (see the code list).
data.categorii[].numar
number | null
How many permits were issued.
data.categorii[].mp_utili
number | null
The usable floor area permitted, in m².
meta.actualizat
object
Prospețimea datelor pe domenii (dată ISO 8601).
Response examples
GEThttps://oneapi.ro/api/locations/v1/uat/54975/autorizatii
{
"data": {
"entitate": "Cluj-Napoca",
"an": 2025,
"sursa": "INS (autorizaţii de construire)",
"categorii": [
{
"categorie": "administrative",
"numar": 2,
"mp_utili": 12195
}
]
},
"meta": {
"actualizat": {
"somaj": "2026-09-14",
"autorizatii": "2026-04-01"
}
}
}
GEThttps://oneapi.ro/api/locations/v1/uat/155243/autorizatii
{
"data": {
"entitate": "Timișoara",
"an": 2025,
"sursa": "INS (autorizaţii de construire)",
"categorii": [
{
"categorie": "administrative",
"numar": 1,
"mp_utili": 378
}
]
},
"meta": {
"actualizat": {
"somaj": "2026-09-14",
"autorizatii": "2026-04-01"
}
}
}
GEThttps://oneapi.ro/api/locations/v1/uat/95060/autorizatii
{
"data": {
"entitate": "Iași",
"an": 2025,
"sursa": "INS (autorizaţii de construire)",
"categorii": [
{
"categorie": "administrative",
"numar": 2,
"mp_utili": 570
}
]
},
"meta": {
"actualizat": {
"somaj": "2026-09-14",
"autorizatii": "2026-04-01"
}
}
}
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. |
| 404 | negasit | The administrative unit does not exist or has no permits published. |
| 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": "negasit",
"mesaj": "The administrative unit does not exist or has no permits published."
}
}