Read a migration's network import and its rows
get/v1/migrations/{migration_id}/imports/{import_id}
Requires an API key
As the project's read, and each station row's migration_state and charger_key. Needs migration:import over every site (client, support or partner; see the dry run). Only this migration's imports are reachable here, never another migration's or a project import. Errors: 404 import_not_found, 404 migration_not_found. See Errors and statuses.
Path parameters
- import_idstringRequiredThe import's ID (the dry run's), imp_ and 32 hex digitsPattern
^imp_[0-9a-f]{32}$ - migration_idstringRequiredPattern
^mig_[0-9a-f]{32}$
Returns · 200
- idstringRequired
- tenant_idintegerRequired
- migration_idstring | nullThe migration this import belongs to (made under /v1/migrations/{migration_id}/imports): its applied stations join that migration as imported. null for a project import.
- sourceenumRequiredOne of
csv,ocpi_locations - originstring | nullRequiredThe fetched feed's host and path (no query string or token); null for an upload
- statusenumRequiredOne of
planned,applying,applied,partial,reverted,partially_reverted - identityenumRequiredproject: chargers keep their own IDs under the project's charger URL; global: each charger ID is a globally unique OCPP connection nameOne of
project,global - countsImportCountsRequired
Child attributes
- createintegerRequired
- updateintegerRequired
- skipintegerRequired
- errorintegerRequired
- totalsImportTotalsRequired
Child attributes
- locationsintegerRequiredLocations in the source
- stationsintegerRequiredChargers in the source, each one station
- evsesintegerRequired
- connectorsintegerRequired
- actorstringRequired
- created_atstringRequired
- updated_atstringRequired
- applied_atstring | nullRequired
- reverted_atstring | nullRequired
- rowsarray of ImportRowRequired
Child attributes
- itemstring | nullRequiredThe row's ID in this import (L<n> for a location, S<n> for a station); null for a source row that could not be read
- kindenumRequiredOne of
location,station,row - actionenumRequiredWhat apply does: create, update (change the existing resource), skip (identical, or removed in the source) or error (nothing is written for it)One of
create,update,skip,error - stateenumRequiredplanned in a dry run; after apply pending, done, failed or skipped; after a revert reverted or keptOne of
planned,pending,done,failed,skipped,reverted,kept - sourcestring | nullRequiredWhere the row comes from: CSV line numbers, or the position in the OCPI document
- refstring | nullA location's reference: the CSV location_ref or the OCPI Location id, stored as its external_reference
- charger_idstring | null
- namestring | nullThe station's OCPP connection name in Ivora
- location_refstring | null
- location_idinteger | null
- station_idinteger | null
- connector_idsarray of integer | nullThe station's connector resource IDs, once applied
- evsesinteger | null
- connectorsinteger | null
- changesarray of stringThe fields an update changes
- codestring | null
- messagestring | null
- warningsarray of string
- migration_stateenum | nullA migration's import (migration_id): the station's state on the migration's board once it joined (imported first); null while it is not in this migration (not applied yet, or in another migration). null on a project import.One of
imported,proxied,shadow,parity_checked,moved,rolling_back,rolled_back - charger_keystring | nullA migration's import: the charger proxy's routing key the station joined with, <project>/<charger id> (or the global connection name); null while not in the migration.
- follow_upsarray of stringRequiredSteps outside this import: RFID tokens, tariffs, EVSE IDs for roaming, credentials
GET /v1/migrations/{migration_id}/imports/{import_id}
curl --fail-with-body "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef/imports/imp_0123456789abcdef0123456789abcdef" \
-H "Authorization: Bearer $IVORA_API_KEY"Response · 200JSON
{
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"migration_id": "migration_0123456789abcdef",
"source": "csv",
"origin": "string",
"status": "planned",
"identity": "project",
"counts": {
"create": 1,
"update": 1,
"skip": 1,
"error": 1
},
"totals": {
"locations": 1,
"stations": 1,
"evses": 1,
"connectors": 1
},
"actor": "string",
"created_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z",
"applied_at": "2026-09-30T17:00:00Z",
"reverted_at": "2026-09-30T17:00:00Z",
"rows": [
{
"item": "string",
"kind": "location",
"action": "create",
"state": "planned",
"source": "string",
"ref": "string",
"charger_id": "charger_0123456789abcdef",
"name": "bay-01",
"location_ref": "string",
"location_id": 7,
"station_id": 1,
"connector_ids": [
1
],
"evses": 1,
"connectors": 1,
"changes": [
"string"
],
"code": "string",
"message": "string",
"warnings": [
"string"
],
"migration_state": "imported",
"charger_key": "string"
}
],
"follow_ups": [
"string"
]
}Requires an approved production API keyProduction access starts with a request, a short meeting with Ivora and a card on file, after which Ivora staff grant your account access. How to request access
Try itproduction · api.ivoracharge.com
Paste a production api key (iv_live_…). Create keys in Developer tools. The key stays in this page's memory, is sent only to https://api.ivoracharge.com and clears when you reload. Test keys are refused.



