Unless stated otherwise, this page refers to Ukrainian companies and individual entrepreneurs and uses identifiers from Ukrainian public registries.
This section describes requests used to work with integrated environmental permit cases, documents, installations, and hearings related to an enterprise.
IEP case list
GET /api/v1/enterprises/{registry_id}/integrated-permit-cases
This request returns integrated permit cases related to the enterprise.
The registry_id parameter in the request path is required. It is the enterprise identifier.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "00178353" },
"items": [
{
"id": 321,
"registry_id": "IEP-2026-001",
"status": "In progress",
"is_present_in_registry": true,
"operator_name": "Example Operator LLC",
"industrial_site_name": "Main industrial site",
"industrial_site_address": "Kyiv region, Boryspil district",
"region": "Київська область",
"submitted_at": "2026-02-15",
"last_progress_at": "2026-02-20T10:15:00+02:00",
"documents_count": 5,
"installations_count": 2,
"hearings_count": 1,
"links": {
"details": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-case-details/321",
"status_history": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/status-history",
"documents": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/documents",
"hearings": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/hearings"
}
}
],
"pagination": { "current_page": 1, "per_page": 20, "total": 1, "last_page": 1 }
},
"stats": { "..." }
}
IEP case details
GET /api/v1/enterprises/{registry_id}/integrated-permit-case-details/{case_id}
This request returns full data for a specific integrated permit case. Status history is available via a separate endpoint returned in links.status_history.
The registry_id and case_id parameters in the request path are required. registry_id is the enterprise identifier. case_id is the case identifier.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-case-details/321" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "00178353" },
"object": {
"id": 321,
"registry_id": "IEP-2026-001",
"status": "In progress",
"is_present_in_registry": true,
"operator_name": "Example Operator LLC",
"industrial_site_name": "Main industrial site",
"industrial_site_address": "Kyiv region, Boryspil district",
"region": "Київська область",
"submitted_at": "2026-02-15",
"last_progress_at": "2026-02-20T10:15:00+02:00",
"registry_created_at": "2026-02-15T09:00:00+02:00",
"registry_updated_at": "2026-02-20T10:15:00+02:00",
"registry_url": "https://eco.gov.ua/example-case",
"documents_count": 5,
"installations_count": 2,
"hearings_count": 1,
"progress": [],
"application_details": null,
"installations": [],
"hearings": [],
"links": {
"status_history": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/status-history",
"documents": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/documents",
"hearings": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/hearings"
}
}
},
"stats": { "..." }
}
Response fields
results.items[]
id: IEP case identifier.registry_id: application number.status: current case status.is_present_in_registry: whether the case is currently present in the official IEP registry.operator_name: installation operator.industrial_site_name: short name of the industrial site or case.industrial_site_address: industrial site address from the case.region: case region.submitted_at: application submission date.last_progress_at: date and time of the latest known case movement from the registry chronology.documents_count: number of documents in the case.installations_count: number of installations in the case.hearings_count: number of hearings in the case.
results.object
is_present_in_registry: whether the case is currently present in the official IEP registry.registry_created_at: registry record creation date, if available from the source.registry_updated_at: registry record update date.last_progress_at: date and time of the latest chronology event for the case.registry_url: link to the official registry card.progress: case movement chronology.application_details: structured data extracted from the main application.installations: installations within the case.hearings: hearings within the case.links.status_history: link to the separate endpoint with status history of this case.links.documents: link to documents of this case.links.hearings: link to hearings of this case.
IEP case status history
GET /api/v1/enterprises/{registry_id}/integrated-permit-cases/{case_id}/status-history
This request returns a separate paginated list of status-history and service events for a specific IEP case.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/status-history" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "00178353" },
"object": {
"id": 321,
"registry_id": "IEP-2026-001",
"status": "In progress",
"industrial_site_name": "Main industrial site"
},
"items": [
{
"id": 9002,
"event_type": "registry_absent",
"status": "In progress",
"previous_status": null,
"source_effective_at": "2026-06-02T12:00:00+03:00",
"first_detected_at": "2026-06-02T12:00:00+03:00",
"last_detected_at": "2026-06-02T12:00:00+03:00",
"progress_title": null,
"progress_description": null,
"message": "The case was not visible in the IEP registry."
}
],
"pagination": { "current_page": 1, "per_page": 20, "total": 9, "last_page": 1 }
},
"stats": { "..." }
}
results.items[]
id: status history record identifier.event_type: type of status history event.status: status associated with the record.previous_status: previous status, if it could be determined.source_effective_at: event date and time from the registry, or the date we recorded for a service event.first_detected_at: when this record was first detected in ESG SaveEcoBot.last_detected_at: when this record was last confirmed during synchronization.progress_title: chronology stage title, if the record comes from the registry timeline.progress_description: chronology stage description, if available.message: service message for events such as disappearance from or return to the registry.
event_type values
progress_status: regular chronology entry from the official registry.status_snapshot_mismatch: the current case status on the card differs from the latest status in the chronology.registry_absent: the case was not present in the official registry during verification.registry_returned: the case appeared in the official registry again after being absent.
Enterprise IEP documents
GET /api/v1/enterprises/{registry_id}/integrated-permit-documents
This request returns integrated permit documents related to the enterprise.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-documents" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "00178353" },
"items": [
{
"id": 501,
"name": "Integrated permit application",
"format": "pdf",
"size": 314572,
"uploaded_at": "2026-02-15T09:05:00+02:00",
"section": "application",
"installation_title": "Boiler house No. 1",
"case": {
"id": 321,
"registry_id": "IEP-2026-001",
"industrial_site_name": "Main industrial site",
"region": "Київська область"
},
"links": {
"download": "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-documents/501/download"
}
}
],
"pagination": { "current_page": 1, "per_page": 20, "total": 5, "last_page": 1 }
},
"stats": { "..." }
}
Documents of an IEP case
GET /api/v1/enterprises/{registry_id}/integrated-permit-cases/{case_id}/documents
This request returns integrated permit documents for a specific case.
The registry_id and case_id parameters in the request path are required. registry_id is the enterprise identifier. case_id is the case identifier.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-cases/321/documents" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Filters
installation_id: limit documents to a specific installation inside the case.
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "00178353" },
"object": {
"id": 321,
"registry_id": "IEP-2026-001",
"industrial_site_name": "Main industrial site"
},
"items": []
},
"stats": { "..." }
}
Enterprise IEP hearings
GET /api/v1/enterprises/{registry_id}/integrated-permit-hearings
This request returns hearings related to integrated permit cases of the enterprise.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/43732948/integrated-permit-hearings" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "43732948" },
"items": [
{
"id": 12,
"title": "Public hearing on the IEP case",
"description": "Discussion of comments and proposals regarding the integrated environmental permit application.",
"starts_at": "2026-05-10T10:00:00+03:00",
"ends_at": "2026-05-10T12:00:00+03:00",
"location": "Vinnytsia City Council",
"address": "Vinnytsia, Soborna St, 59",
"case": {
"id": 1,
"registry_id": "000056/26",
"industrial_site_name": "ТОРГТЕХНІКА"
}
},
{
"id": 13,
"title": "Follow-up public hearing on the IEP case",
"description": "Additional discussion of the application materials and public questions.",
"starts_at": "2026-05-17T11:00:00+03:00",
"ends_at": "2026-05-17T13:00:00+03:00",
"location": "Vinnytsia City Council",
"address": "Vinnytsia, Soborna St, 59",
"case": {
"id": 1,
"registry_id": "000056/26",
"industrial_site_name": "ТОРГТЕХНІКА"
}
}
],
"pagination": { "current_page": 1, "per_page": 20, "total": 2, "last_page": 1 }
},
"stats": { "..." }
}
Response fields
results.items[]
id: hearing identifier.title: hearing title.description: free-text description.starts_at: hearing start date and time, if available.ends_at: hearing end date and time, if available.location: short hearing venue name.address: hearing address.case: short information about the IEP case.case.id: IEP case identifier.case.registry_id: application number.case.industrial_site_name: short industrial site or case name.
Hearings of an IEP case
GET /api/v1/enterprises/{registry_id}/integrated-permit-cases/{case_id}/hearings
This request returns hearings for a specific integrated permit case.
The registry_id and case_id parameters in the request path are required. registry_id is the enterprise identifier. case_id is the case identifier.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl "https://esg.saveecobot.com/api/v1/enterprises/43732948/integrated-permit-cases/1/hearings" \
-H "Authorization: Bearer $ESG_API_TOKEN" \
-H 'Accept: application/json'
Example response
{
"results": {
"enterprise": { "type": "company", "registry_id": "43732948" },
"object": {
"id": 1,
"registry_id": "000056/26",
"industrial_site_name": "ТОРГТЕХНІКА"
},
"items": [
{
"id": 12,
"title": "Public hearing on the IEP case",
"description": "Discussion of comments and proposals regarding the integrated environmental permit application.",
"starts_at": "2026-05-10T10:00:00+03:00",
"ends_at": "2026-05-10T12:00:00+03:00",
"location": "Vinnytsia City Council",
"address": "Vinnytsia, Soborna St, 59"
},
{
"id": 13,
"title": "Follow-up public hearing on the IEP case",
"description": "Additional discussion of the application materials and public questions.",
"starts_at": "2026-05-17T11:00:00+03:00",
"ends_at": "2026-05-17T13:00:00+03:00",
"location": "Vinnytsia City Council",
"address": "Vinnytsia, Soborna St, 59"
}
]
},
"stats": { "..." }
}
Response fields
results.object
id: IEP case identifier.registry_id: application number.industrial_site_name: short industrial site or case name.
results.items[]
id: hearing identifier.title: hearing title.description: free-text description.starts_at: hearing start date and time, if available.ends_at: hearing end date and time, if available.location: short hearing venue name.address: hearing address.
IEP document download
GET /api/v1/enterprises/{registry_id}/integrated-permit-documents/{document_id}/download
This request returns an integrated permit document file for download.
The registry_id and document_id parameters in the request path are required. registry_id is the enterprise identifier. document_id is the document identifier.
Example request
$ ESG_API_TOKEN="your_api_token"
$ curl -L "https://esg.saveecobot.com/api/v1/enterprises/00178353/integrated-permit-documents/501/download" \
-H "Authorization: Bearer $ESG_API_TOKEN"