Roll a pilot charger back to the previous platform
Records a rollback that the charger proxy applies within seconds: it routes the charger back to the previous platform and closes its connection to Ivora, and the charger reconnects there by itself. Nothing is sent to the charger and nothing changes on Ivora's charging core. Always allowed, also while charging: a session running on Ivora then stays open on Ivora and is reconciled by hand. name must be the station's connection name (409 station_name_mismatch, details.name); reason is kept in the audit log and the event. Read the result and the reconnect status with GET .../migration/rollbacks/{rollback_id}; migration.charger_rolled_back is emitted once the proxy switched it and no connection to Ivora is open. Works while Ivora's charging core is unreachable (the station is read from the proxy's report). A rollback the proxy does not apply raises an on-call alert after ten minutes and expires after 24 hours; one Ivora staff moved forward again since is superseded. Needs stations:admin (team owners and admins, Ivora staff, API keys created with it). A retry with the same Idempotency-Key returns the same rollback, as it is now. Errors: 404 station_not_found, 409 migration_already_rolled_back, 409 migration_charger_not_proxied, 409 migration_rollback_pending, 409 station_name_mismatch. See Errors and statuses.
Path parameters
- tenant_idintegerRequired
- station_idintegerRequiredGreater than 0
Headers
- idempotency-keystringRequired
Request body
- namestringRequiredThe station's OCPP connection name (name in station reads), typed to confirm; refused with 409 station_name_mismatch when it is another one (details.name), so a wrong station ID never moves another charger.1–100 characters
- reasonstringRequiredWhy, for the record: kept with the rollback, in the audit log, the proxy's own audit and migration.charger_rolled_back.3–300 characters
Returns · 202
- idstringRequiredIvora's identifier of this rollback (mrb_...).
- tenant_idintegerRequired
- station_idintegerRequired
- namestringRequiredThe station's OCPP connection name.
- statusenumRequiredpending: recorded, waiting for the charger proxy to switch the route. applied_socket_open: the proxy routes the charger to the previous platform, but a connection to Ivora is still open; the proxy closes it and the rollback becomes applied (only then is the event emitted). applied: the proxy routes the charger to the previous platform and no connection to Ivora is open. failed: the proxy could not switch it (detail); ask again, or Ivora on-call rolls it back by hand. superseded: Ivora staff moved the charger to Ivora again after it was asked, so it was not applied. expired: the proxy did not apply it within 24 hours (it was unreachable); Ivora on-call rolls it back by hand.One of
pending,applied_socket_open,applied,failed,superseded,expired - reconnectenum | nullRequiredWhether the charger reconnected to the previous platform through the proxy, from the proxy's latest report: waiting_for_switch (pending), reconnecting (within two minutes of the switch), reconnected (a connection to the previous platform is up), not_connected (no connection two minutes after the switch), still_on_ivora (a connection to Ivora is still open, also while applied_socket_open), superseded (the charger was moved to Ivora again since), unknown (no proxy report since the switch). Null when failed, superseded or expired.One of
waiting_for_switch,reconnecting,reconnected,not_connected,still_on_ivora,superseded,unknown - reasonstringRequired
- requested_bystringRequiredWho asked for it: user:<id>, key:<id> or app:<id>.
- team_idstring | nullRequiredThe project's team.
- sourceenumRequiredtenant: the project's own administrators; ivora: Ivora staff.One of
tenant,ivora - requested_atstringRequired
- rolled_back_atstring | nullRequiredWhen the proxy switched the route (its own clock), once applied.
- settled_atstring | nullRequiredWhen Ivora recorded the current status (the proxy's result, the socket closing, the supersession or the expiry).
- detailstring | nullRequiredThe proxy's note on the result, such as why it failed.
- event_idstring | nullRequiredThe migration.charger_rolled_back event, once applied.
- migration_idstring | nullThe migration workspace of the station (/v1/migrations/{migration_id}), when it is in one.
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/migration/chargers/1/rollback" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001" \
-H "Content-Type: application/json" \
-d '{
"name": "bay-01",
"reason": "string"
}'{
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"station_id": 1,
"name": "bay-01",
"status": "pending",
"reconnect": "waiting_for_switch",
"reason": "string",
"requested_by": "string",
"team_id": "team_0123456789abcdef",
"source": "tenant",
"requested_at": "2026-09-30T17:00:00Z",
"rolled_back_at": "2026-09-30T17:00:00Z",
"settled_at": "2026-09-30T17:00:00Z",
"detail": "string",
"event_id": "event_0123456789abcdef",
"migration_id": "migration_0123456789abcdef"
}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.



