Log inTalk to us

Add chargers to a migration (Ivora staff)

post/v1/migrations/{migration_id}/chargers
Requires an API key

Ivora support adds the project's stations from the pilot proxy's allowlist: each one's routing key and its station (station_id, station_name or charger_id). A station is in at most one migration that is not archived (409 station_in_other_migration; an archived migration's charger is taken over, audited as migration.charger.released there, unless a rollback is still on its way to its runner: details.reason rollback_pending). The station's earlier pilot rollbacks join the migration's record. A charger already there with the same station is unchanged. Needs the support role (a staff key needs stations:write). A retry with the same Idempotency-Key returns the same result. Audited in the same transaction (503 when it cannot be). Errors: 404 migration_not_found, 404 station_not_found, 409 migration_charger_conflict, 409 migration_closed, 409 station_in_other_migration, 503 migration_audit_unavailable. See Errors and statuses.

Path parameters

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

Headers

  • idempotency-keystringRequired

Request body

  • chargersarray of AddChargerRequired
    The pilot proxy's allowlist entries for this project.
    Child attributes
    • charger_keystringRequired
      The proxy's routing key, as on its allowlist: <project>/<identity> or <identity>.
      Pattern ^(?:[A-Za-z0-9._-]{1,64}/)?[A-Za-z0-9._:*@+=-]{1,64}$
    • station_idinteger | null
      The station on Ivora; or give station_name or charger_id.
      Greater than 0
    • station_namestring | null
      The station's OCPP connection name on Ivora.
      1–100 characters
    • charger_idstring | null
      Or the project's charger ID.
      1–40 characters

Returns · 200

  • addedintegerRequired
  • unchangedintegerRequired
  • chargersarray of AddedChargerRequired
    Child attributes
    • charger_keystringRequired
    • station_idintegerRequired
    • namestringRequired
    • addedbooleanRequired
      false when it was already in this migration with the same station.
POST /v1/migrations/{migration_id}/chargers
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef/chargers" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Idempotency-Key: order-2026-09-30-0001" \
  -H "Content-Type: application/json" \
  -d '{
  "chargers": [
    {
      "charger_key": "string"
    }
  ]
}'
Response · 200JSON
{
  "added": 1,
  "unchanged": 1,
  "chargers": [
    {
      "charger_key": "string",
      "station_id": 1,
      "name": "bay-01",
      "added": false
    }
  ]
}
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.

POST is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.