Log inTalk to us

Ask Ivora for a migration of the project's chargers

post/v1/tenants/{tenant_id}/migration-requests
Requires an API key

Sends Ivora the source platform, about how many chargers and sites, a target window, an optional migration partner or installer and notes; Ivora staff are alerted, open the workspace and mark the request workspace_created, or decline it with a reason. A project has one open request at a time: sending another returns the open one (200). A team has one open request at a time too: a request for another project of the team is refused (409 migration_request_team_open). At most 5 sends a minute per user and 20 per client address (429 rate_limited, with Retry-After). Any signed-in member with access to the project (stations:read) and Ivora staff; API keys and app tokens cannot. A request changes nothing: Ivora opens the workspace. The partner's name and email and the notes are shown to Ivora administrators and the requester only. Errors: 409 migration_request_team_open, 429 rate_limited, 503 migration_audit_unavailable. See Errors and statuses.

Path parameters

  • tenant_idintegerRequired

Request body

  • source_platformenumRequired
    The platform the chargers move from: EV Connect, another OCPP platform, or other.
    One of evconnect, other_ocpp, other
  • chargers_estimateinteger | null
    About how many chargers.
    Minimum 1 · Maximum 100000
  • sites_estimateinteger | null
    About how many sites.
    Minimum 1 · Maximum 10000
  • target_fromstring | null
    The target window's first day (YYYY-MM-DD).
    Pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
  • target_tostring | null
    The target window's last day (YYYY-MM-DD).
    Pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
  • partnerobject | null
    A migration partner or installer, if there is one.
    Child attributes
    • namestringRequired
      The migration partner or installer.
      1–120 characters
    • emailstring | null
      Their contact address.
      3–254 characters · Pattern ^[^@\s]+@[^@\s]+\.[^@\s]+$
  • notesstring | null
    Anything else Ivora should know.
    Up to 2000 characters

Returns · 201

  • idstringRequired
    mrq_...
  • tenant_idintegerRequired
    The project the migration is for.
  • team_idstring | nullRequired
    The project's team when the request was made.
  • statusenumRequired
    open: 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 | nullRequired
    Shown to Ivora staff and the requester only; null for anyone else.
    Child attributes
    • namestringRequired
      The migration partner or installer.
      1–120 characters
    • emailstring | null
      Their contact address.
      3–254 characters · Pattern ^[^@\s]+@[^@\s]+\.[^@\s]+$
  • notesstring | nullRequired
    Shown to Ivora staff and the requester only; null for anyone else.
  • requested_bystringRequired
    The requester (user:...).
  • created_atstringRequired
  • updated_atstringRequired
  • migration_idstring | nullRequired
    The migration Ivora opened for it.
  • decision_reasonstring | nullRequired
    Why Ivora declined it.
  • decided_atstring | nullRequired
POST /v1/tenants/{tenant_id}/migration-requests
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/migration-requests" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "source_platform": "evconnect"
}'
Response · 201JSON
{
  "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"
}
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.