Log inTalk to us

Pull the desired routes (runner, long poll)

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

The open route requests newer than after_revision, oldest first, as soon as there is one, waiting at most wait seconds (25 at most). A rollback is applied at once (require_idle false). With after_revision 0 the reply also carries every charger's desired route. limit caps the requests handed out (default and most 500); open rollbacks come first within it. revision, the next after_revision, covers only requests handed out (every open request at or below it is in this reply or an earlier one), so a rollback above it can be handed out again: apply requests once by id. Report each outcome with POST .../routes/reports. Runner credential only (POST /v1/migrations/{migration_id}/runners, scope migration:routes); any other credential is refused, whatever the migration's status (Ivora can always roll back: on a completed or archived migration the runner idles until one comes).

Path parameters

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

Query parameters

  • after_revisioninteger
    Default 0 · Minimum 0
  • waitinteger
    Default 25 · Minimum 0 · Maximum 25
  • limitinteger
    Default 500 · Minimum 1 · Maximum 500

Returns · 200

  • revisionintegerRequired
    Pass as after_revision on the next poll.
  • requestsarray of RouteRequestRequired
    Open requests newer than after_revision, oldest first.
    Child attributes
    • idstringRequired
    • revisionintegerRequired
    • charger_keystringRequired
    • station_idintegerRequired
    • desiredenumRequired
      One of ivora, previous_platform
    • kindenumRequired
      One of rollback, move
    • require_idlebooleanRequired
      false for a rollback: applied at once, also while charging.
    • reasonstringRequired
    • requested_bystringRequired
    • requested_by_teamstring | nullRequired
    • requested_atstringRequired
    • job_idstring | nullRequired
  • desiredarray of DesiredRoute | nullRequired
    With after_revision=0 only: every migration charger with a route asked for.
    Child attributes
    • charger_keystringRequired
    • station_idintegerRequired
    • desiredenumRequired
      One of ivora, previous_platform
GET /v1/migrations/{migration_id}/routes
curl --fail-with-body "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef/routes" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200JSON
{
  "revision": 1,
  "requests": [
    {
      "id": "id_0123456789abcdef",
      "revision": 1,
      "charger_key": "string",
      "station_id": 1,
      "desired": "ivora",
      "kind": "rollback",
      "require_idle": false,
      "reason": "string",
      "requested_by": "string",
      "requested_by_team": "string",
      "requested_at": "2026-09-30T17:00:00Z",
      "job_id": "job_0123456789abcdef"
    }
  ],
  "desired": [
    {
      "charger_key": "string",
      "station_id": 1,
      "desired": "ivora"
    }
  ]
}
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.