Packages
Order a package
Orders a package for an eSIM. Each package plan is specific to a region and has a recurring setting (one-time or auto-renewing).
/profiles/{profileReference}/esims/{esimReference}/packagesAuthorization
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
planReferencestringrequiredPlan reference identifier (14-character opaque token)
externalTransactionIdstringOptional client-provided external transaction ID to associate with this package.
Responses
200Package ordered successfullyapplication/jsonShow response bodyHide response body
dataobjectShow propertiesHide properties
packageReferencestringPackage reference identifier (23-character opaque token)
externalTransactionIdstring | nullThe client's external transaction ID if provided
profileReferencestringexternalProfileIdstring | nullThe client's external profile ID if provided
esimReferencestringeSIM reference identifier (18-digit opaque token)
iccidstringplanReferencestringPlan reference identifier (14-character opaque token)
typestringPackage type: data for mobile data, sms for text messaging, voice for calls
datasmsvoicecountryCodestringstatusstringactivethrottledexhaustedexpiredremovedrecurringbooleanWhether this package will auto-renew
activatedAtstring | null · date-timeexpiresAtstring | null · date-time400Invalid request or package cannot be ordered for this regionapplication/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 found409Request with this idempotency key is still being processed422Idempotency key was previously used with a different request body429Rate limit exceeded500Internal server error503Service temporarily unavailable. Safe to retry.