Number Registration
Create or replace the number registration
Experimental. This endpoint is still settling — its request and response shape may change without a deprecation cycle.
Registers the number this eSIM is on or porting to, replacing whatever was registered before. The body is the same numberRegistration block the eSIM order accepts, and it replaces the record in full — the registry stores exactly what is sent, so omitting a field clears it.
Use it to correct a registration the registry rejected, or to keep a subscriber's details current after they move or change name.
Responds 201 when it creates a registration and 200 when it replaces one that has not been sent yet. A registration already sent and awaiting the registry's result cannot be changed: that is 409. Repeat the write once the outcome arrives, under a new X-Idempotency-Key — reusing the rejected request's key replays its cached 409.
The registration is sent once the number is live, so the status is processing immediately after a successful write.
/profiles/{profileReference}/esims/{esimReference}/number-registrationAuthorization
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
countryCodestringrequiredThe number's country as a two-character uppercase ISO 3166-1 alpha-2 code (malformed: 400). A country whose registry is not supported is rejected with a 422.
firstNamestringlastNamestringrequiredlanguageCodestringrequiredSubscriber's communication language as a two-character lowercase ISO 639-1 code. A language a registry does not accept is rejected with a descriptive error.
addressobjectrequiredShow propertiesHide properties
streetNamestringrequiredhouseNumberstringrequiredunitstringBus/box/apartment, when present.
postalCodestringrequiredcitystringrequiredResponses
200The existing registration was replacedapplication/jsonShow response bodyHide response body
dataobjectrequiredThe registration of the number the eSIM is on or porting to, in its country's number registry. The field is absent when that number has no registration.
Show propertiesHide properties
numberRegistrationReferencestringrequiredregistrystringrequiredThe registry the number was registered with.
msisdnstringrequiredThe registered number, in international format (E.164 without a leading +).
statusstringrequiredprocessing while the registration is on its way to the registry, completed once the registry accepted it, error when it was rejected (see reason).
processingcompletederrorreasonobject | nullRejection detail, present when the registration ended in error
Show propertiesHide properties
codestringrequiredThe registry's own rejection code, or one of ours when the registration never reached it
messagestring | nullHuman-readable detail when available
201A registration was createdapplication/jsonShow response bodyHide response body
dataobjectrequiredThe registration of the number the eSIM is on or porting to, in its country's number registry. The field is absent when that number has no registration.
Show propertiesHide properties
numberRegistrationReferencestringrequiredregistrystringrequiredThe registry the number was registered with.
msisdnstringrequiredThe registered number, in international format (E.164 without a leading +).
statusstringrequiredprocessing while the registration is on its way to the registry, completed once the registry accepted it, error when it was rejected (see reason).
processingcompletederrorreasonobject | nullRejection detail, present when the registration ended in error
Show propertiesHide properties
codestringrequiredThe registry's own rejection code, or one of ours when the registration never reached it
messagestring | nullHuman-readable detail when available
409A registration for this number is currently being processed by the registryapplication/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
422The registration cannot be applied to this number: its country has no registry we submit to, the country does not match the number, or the eSIM has no phone number available to registerapplication/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
400Bad request - invalid parameters401Unauthorized - missing or invalid API key403Forbidden - client does not have access to this resource404Resource not found429Rate limit exceeded500Internal server error