Join a migration with your team
An invite to a team is accepted for that team by one of its owners or admins. An invite to your email is accepted for a team you own or administer (team_id) or a new team you name (team_name), with you as its owner; a team with no project has no usage fee and needs no payment method. The team then sees this migration, and nothing else of the client's project. Errors: 403 migration_team_role_required, 404 migration_invite_not_found, 409 migration_invite_closed, 409 migration_participant_exists, 410 migration_invite_expired, 503 migration_audit_unavailable. See Errors and statuses.
Path parameters
- participant_idstringRequiredPattern
^mpt_[0-9a-f]{32}$
Request body
- team_idstring | nullThe team that joins: one you own or administer. An invite to a team is accepted for that team only.Pattern
^team_[0-9a-f]{32}$ - team_namestring | nullOr create a new team with this name, with you as its owner. A team with no project has no usage fee and needs no payment method.1–200 characters
Returns · 200
- idstringRequiredmpt_...
- kindenumRequiredclient: the project's own team. support: Ivora support (team_id null). partner: an invited migration partner or installer. observer: an invited team that only reads.One of
client,support,partner,observer - team_idstring | nullRequiredThe team; null for Ivora support and for an email invite nobody accepted yet.
- team_namestring | nullRequired
- statusenumRequiredremoved only in the answer that removed, revoked or declined it.One of
invited,active,removed - invite_emailstring | nullRequiredThe address an email invite went to; shown to the client only, null otherwise.
- scopeobject | nullRequiredNarrowing to some sites; null for every site of the migration.
Child attributes
- location_idsarray of integerRequiredThe sites the team sees and acts on: the migration's chargers at these locations only.
- removablebooleanRequiredtrue for an invited team (partner or observer); false for the client and Ivora support, which always stay.
- invited_byenum | nullRequiredWho invited a partner or observer: the client, or Ivora support on the client's behalf. null for the client and Ivora support.One of
client,support - invited_atstringRequired
- expires_atstring | nullRequiredAn invite not accepted by then lapses (14 days).
- accepted_atstring | nullRequired
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/me/migration-invites/mpt_0123456789abcdef0123456789abcdef/accept" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"id": "id_0123456789abcdef",
"kind": "client",
"team_id": "team_0123456789abcdef",
"team_name": "string",
"status": "invited",
"invite_email": "string",
"scope": {
"location_ids": [
7
]
},
"removable": false,
"invited_by": "client",
"invited_at": "2026-09-30T17:00:00Z",
"expires_at": "2026-09-30T17:00:00Z",
"accepted_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.
POST is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.



