Settle a migration request (Ivora staff)
status workspace_created with the migration_id opened for the request's project, or declined with a reason the requester sees. Only an open request is settled; repeating the same decision changes nothing. Signed-in Ivora platform administrators; API keys are refused. Audited in the same transaction. Errors: 404 migration_not_found, 404 migration_request_not_found, 409 migration_request_closed, 409 migration_request_project_mismatch, 503 migration_audit_unavailable. See Errors and statuses.
Path parameters
- request_idstringRequiredPattern
^mrq_[0-9a-f]{32}$
Request body
- statusenumRequiredworkspace_created: with the migration_id Ivora opened for the request's project. declined: with a reason the requester sees.One of
workspace_created,declined - migration_idstring | nullWith workspace_created.Pattern
^mig_[0-9a-f]{32}$ - reasonstring | nullWith declined.3–500 characters
Returns · 200
- idstringRequiredmrq_...
- tenant_idintegerRequiredThe project the migration is for.
- team_idstring | nullRequiredThe project's team when the request was made.
- statusenumRequiredopen: waiting for Ivora. workspace_created: Ivora opened the migration (migration_id). declined: Ivora declined it (decision_reason).One of
open,workspace_created,declined - source_platformstringRequired
- chargers_estimateinteger | nullRequired
- sites_estimateinteger | nullRequired
- target_fromstring | nullRequired
- target_tostring | nullRequired
- partnerobject | nullRequiredShown to Ivora staff and the requester only; null for anyone else.
Child attributes
- namestringRequiredThe migration partner or installer.1–120 characters
- emailstring | nullTheir contact address.3–254 characters · Pattern
^[^@\s]+@[^@\s]+\.[^@\s]+$
- notesstring | nullRequiredShown to Ivora staff and the requester only; null for anyone else.
- requested_bystringRequiredThe requester (user:...).
- created_atstringRequired
- updated_atstringRequired
- migration_idstring | nullRequiredThe migration Ivora opened for it.
- decision_reasonstring | nullRequiredWhy Ivora declined it.
- decided_atstring | nullRequired
curl --fail-with-body -X PATCH "https://api.ivoracharge.com/v1/migration-requests/mrq_0123456789abcdef0123456789abcdef" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"status": "workspace_created"
}'{
"id": "id_0123456789abcdef",
"tenant_id": 1042,
"team_id": "team_0123456789abcdef",
"status": "open",
"source_platform": "string",
"chargers_estimate": 1,
"sites_estimate": 1,
"target_from": "string",
"target_to": "string",
"partner": {
"name": "bay-01",
"email": "developer@example.com"
},
"notes": "string",
"requested_by": "string",
"created_at": "2026-09-30T17:00:00Z",
"updated_at": "2026-09-30T17:00:00Z",
"migration_id": "migration_0123456789abcdef",
"decision_reason": "string",
"decided_at": "2026-09-30T17:00:00Z"
}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.
PATCH is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.



