Runner heartbeat
post/v1/migrations/{migration_id}/runners/heartbeat
Requires an API key
Every 15 seconds: proxy nodes, upstreams, routed and connected counts. The workspace shows the runner healthy while one arrived within 60 seconds. Not audited. 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_idstringRequiredPattern
^mig_[0-9a-f]{32}$
Request body
- nodesintegerProxy nodes up.Default
1· Minimum 0 · Maximum 64 - upstreamsobjectWhether each upstream answers.
- routedobjectChargers routed to each side.
- connectedobjectChargers with a connection open on each side.
- versionstring | nullUp to 40 characters · Pattern
^[\x21-\x7e]+$
Returns · 200
- revisionintegerRequiredThe migration's latest route revision: poll when it is newer than yours.
- server_timestringRequired
- every_sintegerRequiredSend the next heartbeat within this many seconds.
POST /v1/migrations/{migration_id}/runners/heartbeat
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef/runners/heartbeat" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Response · 200JSON
{
"revision": 1,
"server_time": "string",
"every_s": 1
}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.



