Log inTalk to us

Join a migration with your team

post/v1/me/migration-invites/{participant_id}/accept
Requires an API key

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_idstringRequired
    Pattern ^mpt_[0-9a-f]{32}$

Request body

  • team_idstring | null
    The 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 | null
    Or 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

  • idstringRequired
    mpt_...
  • kindenumRequired
    client: 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 | nullRequired
    The team; null for Ivora support and for an email invite nobody accepted yet.
  • team_namestring | nullRequired
  • statusenumRequired
    removed only in the answer that removed, revoked or declined it.
    One of invited, active, removed
  • invite_emailstring | nullRequired
    The address an email invite went to; shown to the client only, null otherwise.
  • scopeobject | nullRequired
    Narrowing to some sites; null for every site of the migration.
    Child attributes
    • location_idsarray of integerRequired
      The sites the team sees and acts on: the migration's chargers at these locations only.
  • removablebooleanRequired
    true for an invited team (partner or observer); false for the client and Ivora support, which always stay.
  • invited_byenum | nullRequired
    Who 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 | nullRequired
    An invite not accepted by then lapses (14 days).
  • accepted_atstring | nullRequired
POST /v1/me/migration-invites/{participant_id}/accept
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 '{}'
Response · 200JSON
{
  "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"
}
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.