Log inTalk to us

Read a migration workspace

get/v1/migrations/{migration_id}
Requires an API key

The workspace: settings, participants, chargers per state, runner health, and your role and permissions. Roles: client (the project team's owners and admins), support (Ivora staff), partner (an invited partner team's owners, admins, developers and operators) and observer (read only: the other members of those teams except billing, invited observer teams, Ivora platform support). A participant narrowed to some sites sees only the migration's chargers there. A personal or staff key bound to the project acts as its owner's client or support role, capped by its scopes; a team migration key acts as its owner's role in its own team, capped by its migration:* scopes; project keys and app tokens are refused. A caller with no role gets 404 migration_not_found. Errors: 404 migration_not_found. See Errors and statuses.

Path parameters

  • migration_idstringRequired
    Pattern ^mig_[0-9a-f]{32}$

Returns · 200

  • idstringRequired
    mig_...
  • tenant_idintegerRequired
    The client's project.
  • project_namestring | nullRequired
    The project's name; null when the charging core cannot be read.
  • team_idstring | nullRequired
    The client: the team whose project the migration belongs to.
  • team_namestring | nullRequired
    The client team's name.
  • namestringRequired
  • source_platformstringRequired
  • statusenumRequired
    active; paused (imports and new work stop, rollbacks still go through); completed (a read-only record of the move); archived (closed for good, still readable).
    One of active, paused, completed, archived
  • settingsSettingsRequired
    Child attributes
    • rollback_window_daysintegerRequired
    • drain_per_secondintegerRequired
    • rollback_slabooleanRequired
      An Ivora rollback commitment is in force (rollback by Ivora within 4 business hours). Ivora support stays on the migration either way.
  • completed_atstring | nullRequired
    When the migration was completed; null while it is active or paused.
  • roleenum | nullRequired
    The caller's effective role: client (the project team's owners and admins), support (Ivora staff), partner (an invited partner team's owners, admins, developers and operators), observer (read only: the other members of those teams except billing, invited observer teams, Ivora platform support).
    One of client, support, partner, observer
  • scopeobject | nullRequired
    The caller's narrowing to some sites, or null for every site.
    Child attributes
    • location_idsarray of integerRequired
      The sites the team sees and acts on: the migration's chargers at these locations only.
  • permissionsarray of enumRequired
    What the caller may do here.
  • participantsarray of Participant | nullRequired
    Active and invited participants; null in a list's summary view.
    Child attributes
    • idstringRequired
      mpt_...
    • kindenumRequired
      client: the project's own team. support: Ivora support (team_id null). partner: an invited migration partner or installer. observer: an invited team that only reads.
      One of client, support, partner, observer
    • team_idstring | nullRequired
      The team; null for Ivora support and for an email invite nobody accepted yet.
    • team_namestring | nullRequired
    • statusenumRequired
      removed only in the answer that removed, revoked or declined it.
      One of invited, active, removed
    • invite_emailstring | nullRequired
      The address an email invite went to; shown to the client only, null otherwise.
    • scopeobject | nullRequired
      Narrowing to some sites; null for every site of the migration.
      Child attributes
      • location_idsarray of integerRequired
        The sites the team sees and acts on: the migration's chargers at these locations only.
    • removablebooleanRequired
      true for an invited team (partner or observer); false for the client and Ivora support, which always stay.
    • invited_byenum | nullRequired
      Who invited a partner or observer: the client, or Ivora support on the client's behalf. null for the client and Ivora support.
      One of client, support
    • invited_atstringRequired
    • expires_atstring | nullRequired
      An invite not accepted by then lapses (14 days).
    • accepted_atstring | nullRequired
  • countsobjectRequired
    Chargers per state, and total (of the caller's sites when narrowed).
  • runnersarray of Runner | nullRequired
    Runner credentials, revoked ones included. Empty for observers; null in a list's summary view.
    Child attributes
    • idstringRequired
    • labelstringRequired
      The charger proxy's name, also on its route reports.
    • prefixstringRequired
      The credential's first characters, to recognise it; never the secret.
    • scopesarray of stringRequired
    • created_bystringRequired
    • created_atstringRequired
    • last_seen_atstring | nullRequired
      Its last heartbeat, route poll or report.
    • healthybooleanRequired
      Seen within the last 60 seconds and not revoked.
    • last_revisioninteger | nullRequired
      The last route revision it pulled.
    • heartbeatobject | nullRequired
      Its last heartbeat body: nodes, upstreams, routed and connected counts.
    • revoked_atstring | nullRequired
  • runner_healthybooleanRequired
    A runner was seen within the last 60 seconds.
  • route_revisionintegerRequired
    The last route revision handed to the runners.
  • created_bystringRequired
  • created_atstringRequired
  • updated_atstringRequired
GET /v1/migrations/{migration_id}
curl --fail-with-body "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200JSON
{
  "id": "id_0123456789abcdef",
  "tenant_id": 1042,
  "project_name": "string",
  "team_id": "team_0123456789abcdef",
  "team_name": "string",
  "name": "bay-01",
  "source_platform": "string",
  "status": "active",
  "settings": {
    "rollback_window_days": 1,
    "drain_per_second": 1,
    "rollback_sla": false
  },
  "completed_at": "2026-09-30T17:00:00Z",
  "role": "client",
  "scope": {
    "location_ids": [
      7
    ]
  },
  "permissions": [
    "migration:read"
  ],
  "participants": [
    {
      "id": "id_0123456789abcdef",
      "kind": "client",
      "team_id": "team_0123456789abcdef",
      "team_name": "string",
      "status": "invited",
      "invite_email": "string",
      "scope": {
        "location_ids": [
          7
        ]
      },
      "removable": false,
      "invited_by": "client",
      "invited_at": "2026-09-30T17:00:00Z",
      "expires_at": "2026-09-30T17:00:00Z",
      "accepted_at": "2026-09-30T17:00:00Z"
    }
  ],
  "counts": {},
  "runners": [
    {
      "id": "id_0123456789abcdef",
      "label": "string",
      "prefix": "string",
      "scopes": [
        "migration:routes"
      ],
      "created_by": "string",
      "created_at": "2026-09-30T17:00:00Z",
      "last_seen_at": "2026-09-30T17:00:00Z",
      "healthy": false,
      "last_revision": 1,
      "heartbeat": {},
      "revoked_at": "2026-09-30T17:00:00Z"
    }
  ],
  "runner_healthy": false,
  "route_revision": 1,
  "created_by": "string",
  "created_at": "2026-09-30T17:00:00Z",
  "updated_at": "2026-09-30T17:00:00Z"
}
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.