Log inTalk to us

Create a team migration key

post/v1/migrations/{migration_id}/keys
Requires an API key

An API key of your participant team on this migration, for the Ivora CLI or a partner's integration, with the environment's usual key prefix. scopes are migration permissions (migration:read, migration:rollback, ...), each one your own role here holds. Needs an owner or admin of the client's or an invited team; Ivora support uses staff keys. Shown once. At most 20 active keys per team and migration. Nothing is created unless its audit entry is stored. Signed-in users only: an API key cannot manage keys. The key acts on this migration's routes and GET /v1/access only; every project route (/v1/tenants/...) refuses it. On every request it holds the scopes its creator's current role in the migration still allows, so a downgrade takes effect at once and the key stops when they leave the team or the team leaves the migration (which also revokes its keys). Errors: 403 migration_key_not_permitted, 404 migration_not_found, 409 migration_key_limit, 503 migration_audit_unavailable. See Errors and statuses.

Path parameters

  • migration_idstringRequired
    Pattern ^mig_[0-9a-f]{32}$

Request body

  • labelstringRequired
    What the key is for, for example the installer's CLI.
    2–80 characters
  • scopesarray of enumRequired
    Migration permissions only, each one your own role in this migration holds. The key never holds more than its creator's current role there.

Returns · 201

  • idstringRequired
    key_...
  • labelstringRequired
  • prefixstringRequired
    The key's first 16 characters, to recognise it; the secret is shown only when it is created.
  • scopesarray of enumRequired
  • migration_idstringRequired
  • team_idstringRequired
    The participant team the key belongs to.
  • created_bystringRequired
  • created_atstringRequired
  • api_versionstringRequired
  • revokedbooleanRequired
  • revoked_atstring | nullRequired
  • revoked_bystring | nullRequired
  • keystringRequired
    The API key, shown once. It is accepted on this migration's routes (/v1/migrations/{migration_id}/...) and GET /v1/access only; every project route refuses it.
  • messagestringRequired
POST /v1/migrations/{migration_id}/keys
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef/keys" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "label": "string",
  "scopes": [
    "migration:read"
  ]
}'
Response · 201JSON
{
  "id": "id_0123456789abcdef",
  "label": "string",
  "prefix": "string",
  "scopes": [
    "migration:read"
  ],
  "migration_id": "migration_0123456789abcdef",
  "team_id": "team_0123456789abcdef",
  "created_by": "string",
  "created_at": "2026-09-30T17:00:00Z",
  "api_version": "string",
  "revoked": false,
  "revoked_at": "2026-09-30T17:00:00Z",
  "revoked_by": "string",
  "key": "string",
  "message": "string"
}
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.