eSIM
Update eSIM lifecycle
Manages the lifecycle of a specific eSIM by performing the specified operation.
Available operations:
suspend: Suspends an active eSIM. The eSIM can be reactivated later.reactivate: Reactivates a suspended eSIM.terminate: Permanently terminates an eSIM. This action cannot be undone.
terminated is terminal: once an eSIM reaches it, every operation returns 409,
including a repeated terminate. A terminated eSIM cannot be suspended or
reactivated, and no esim.lifecycle.* webhook is emitted for such a request.
/profiles/{profileReference}/esims/{esimReference}/lifecycleAuthorization
Authorization: Bearer {token} — an OAuth2 access token from the client-credentials flow. How authentication works
Path parameters
profileReferencestringrequiredThe eSIM's profile reference (16-digit numeric string)
esimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
Headers
X-Idempotency-KeystringOptional idempotency key for mutating requests (POST, PATCH). If provided, duplicate requests with the same key within 48 hours will return the cached original response without duplicating side effects.
Behavior:
- Same key + same request body → returns cached response (prevents duplicate operations)
- Same key + different request body → returns 422 error
- Same key + in-flight request → returns 409 error with Retry-After header
- Keys expire after 48 hours
Request Body Matching: Request bodies are compared using a deterministic fingerprint. The fingerprint is computed by canonicalizing the JSON (sorting object keys recursively) and hashing with SHA-256. This means:
{"a":1,"b":2}and{"b":2,"a":1}are treated as identical ✓- Whitespace differences are ignored ✓
- URL parameters and headers are NOT included in the fingerprint
Best Practices:
- Use UUIDs or client-generated unique strings
- Store keys on your side to support retries
- Don't reuse keys across different operations
Request body
application/json · required
operationstringThe lifecycle operation to perform. Either operation or action must be provided.
suspend: Temporarily suspend the eSIM (can be reactivated)reactivate: Reactivate a suspended eSIMterminate: Permanently terminate the eSIM (cannot be undone)
suspendreactivateterminateactionstringAlias for operation. Either operation or action must be provided.
suspendreactivateterminateResponses
200eSIM lifecycle operation completed successfullyapplication/jsonShow response bodyHide response body
dataobjectShow propertiesHide properties
profileReferencestringesimReferencestringeSIM reference identifier (18-digit opaque token)
iccidstringstatusstringSM-DP+ profile state on the device.
released: Profile is available for download (QR code ready)downloaded: Profile has been downloaded to the deviceinstalled: Profile is installed on the eSIM chipenabled: Profile is active on the devicedisabled: Profile is installed but disabled on the devicedeleted: Profile has been removed from the devicefaulted: Profile encountered a provisioning or operational failure
releaseddownloadedinstalledenableddisableddeletedfaultedlifecycleStatusstring | nullIMSI connectivity lifecycle status. Null when the eSIM has not yet been assigned to a profile.
preactive: IMSI is provisioned but not yet active on the networkactive: IMSI is active and connected to the networksuspended: IMSI is temporarily suspended from the networkterminated: IMSI has been permanently terminatedfaulted: IMSI encountered a provisioning failurestale: IMSI has a configuration mismatch (e.g., wrong base plan)
preactiveactivesuspendedterminatedfaultedstalenullupdatedAtstring · date-time400Invalid operation or eSIM cannot transition to requested stateapplication/problem+jsonShow response bodyHide response body
typestring · urirequiredURI reference to error documentation
titlestringrequiredShort, consistent error summary
statusintegerrequiredHTTP status code
detailstringrequiredHuman-readable explanation specific to this occurrence
409Invalid state transitionapplication/problem+jsonShow response bodyHide response body
typestring · urirequiredURI reference to error documentation
titlestringrequiredShort, consistent error summary
statusintegerrequiredHTTP status code
detailstringrequiredHuman-readable explanation specific to this occurrence
401Unauthorized - missing or invalid API key403Forbidden - client does not have access to this resource404Resource not found429Rate limit exceeded500Internal server error