Import a BYO (tenant-supplied) physical eSIM activation code
Registers a bring-your-own (BYO) eSIM activation code as owned inventory. Provide either { smdpAddress, matchingId?, confirmationCode? } or { lpaCode } — supplying both, or neither, returns 400. An optional name sets a display label on the created eSIM (up to 15 characters).
Subject to per-owner and daily import limits, and disabled entirely unless BYO imports are enabled for this deployment (409 byo_disabled). Idempotent via idempotencyKey: replaying the same key with an identical request returns the original response; the same key with a different request returns 409 idempotency_conflict.
When rent-first billing is off (default), the import is free — 201 with the eSIM. Setting autoInstall: true additionally dispatches an install immediately after import (deviceId may only be set together with autoInstall): this returns 202 with {esim, operationId, statusUrl} when the install claim succeeds (poll GET /esims/{id}/install-status), or 201 with the eSIM plus installDispatch: {ok: false, reason} when the install could not be dispatched — the import itself still succeeds either way.
When rent-first billing is on, import additionally requires available device capacity (409 device_pool_empty) and is subject to a per-owner awaiting-payment cap (409 byo_awaiting_payment_cap). On success the eSIM is created awaiting_payment and a checkout is started: 201 with {esim, rentStatus, checkoutUrl} when the checkout URL is ready immediately, or 202 with checkoutUrl: null otherwise — poll GET /esims/{id} until it’s populated. Once payment is confirmed, install is triggered automatically.
Authorizations
Bearer token via Authorization header
Body
Rent OFF only: dispatch install-on-device immediately after a successful import. No-op when ESIM_BYO_RENT_ENABLED=true.
1001288physedge device id to auto-install onto; requires autoInstall:true and rent OFF. Omit for a random pool device.
1"physedge-dev-8f3a2c"
Client-supplied key; replaying the same key+request returns the original import instead of importing again
1 - 128Full LPA activation code
512"LPA:1$smdp.example.com$QR-MATCH-1"
128Self-reported E.164 MSISDN for this eSIM's line — an unverified label, never used for routing
1 - 20"+33612345678"
User-defined display label — NFC-normalized, up to 15 GRAPHEMES (not UTF-16 code units; an emoji/flag may span several). Omit/null/empty/whitespace-only leaves it unset.
"Mom's phone"
500SM-DP+ activation host — bare hostname ONLY, no port/scheme/path.
255"smdp.example.com"
Response
eSIM imported — plain eSIM, an inline-resolved rent checkout, or an eSIM with a failed autoInstall dispatch
- Option 1
- Option 2
- Option 3