Webhooks
Port-in events
Signed POST requests to your webhook endpoint for portin lifecycle events. See the Webhooks overview for signature verification.
Experimental. This event is still settling — its payload may change without a deprecation cycle.
Triggered when a port-in has been submitted to the network provider.
Payload
typestringrequiredportin.submittedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
portInRequestReferencestringrequiredPublic opaque port-in request reference (8-char uppercase base36)
profileReferencestringrequiredesimReferencestringrequiredmsisdnstringrequiredThe number being ported, in international format (E.164 without a leading +)
statusstringrequiredrequested: Accepted by Firsty; provider submission in progressapproved: Donor/provider accepted the portscheduled: Port scheduled for a future date (reserved for future markets)cancelling: Cancellation requested, awaiting provider confirmationcompleted: Number ported — the eSIM activates with the ported numberrejected: Donor rejected the request (see reason)failed: Port failed (see reason)cancelled: Cancellation confirmed
requestedapprovedscheduledcancellingcompletedrejectedfailedcancelledreasonobject | nullFailure/rejection detail, present when status is rejected or failed
Show propertiesHide properties
codestringrequiredNormalized failure/rejection code
messagestring | nullHuman-readable detail when available
scheduledDatestring | null · datePlanned porting date when known (reserved for future markets)
Experimental. This event is still settling — its payload may change without a deprecation cycle.
Triggered when the donor operator approved the port-in.
Payload
typestringrequiredportin.approvedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
portInRequestReferencestringrequiredPublic opaque port-in request reference (8-char uppercase base36)
profileReferencestringrequiredesimReferencestringrequiredmsisdnstringrequiredThe number being ported, in international format (E.164 without a leading +)
statusstringrequiredrequested: Accepted by Firsty; provider submission in progressapproved: Donor/provider accepted the portscheduled: Port scheduled for a future date (reserved for future markets)cancelling: Cancellation requested, awaiting provider confirmationcompleted: Number ported — the eSIM activates with the ported numberrejected: Donor rejected the request (see reason)failed: Port failed (see reason)cancelled: Cancellation confirmed
requestedapprovedscheduledcancellingcompletedrejectedfailedcancelledreasonobject | nullFailure/rejection detail, present when status is rejected or failed
Show propertiesHide properties
codestringrequiredNormalized failure/rejection code
messagestring | nullHuman-readable detail when available
scheduledDatestring | null · datePlanned porting date when known (reserved for future markets)
Experimental. This event is still settling — its payload may change without a deprecation cycle.
Triggered when the donor operator rejected the port-in. Submit a corrected request with fixed donor details.
Payload
typestringrequiredportin.rejectedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
portInRequestReferencestringrequiredPublic opaque port-in request reference (8-char uppercase base36)
profileReferencestringrequiredesimReferencestringrequiredmsisdnstringrequiredThe number being ported, in international format (E.164 without a leading +)
statusstringrequiredrequested: Accepted by Firsty; provider submission in progressapproved: Donor/provider accepted the portscheduled: Port scheduled for a future date (reserved for future markets)cancelling: Cancellation requested, awaiting provider confirmationcompleted: Number ported — the eSIM activates with the ported numberrejected: Donor rejected the request (see reason)failed: Port failed (see reason)cancelled: Cancellation confirmed
requestedapprovedscheduledcancellingcompletedrejectedfailedcancelledreasonobject | nullFailure/rejection detail, present when status is rejected or failed
Show propertiesHide properties
codestringrequiredNormalized failure/rejection code
messagestring | nullHuman-readable detail when available
scheduledDatestring | null · datePlanned porting date when known (reserved for future markets)
Experimental. This event is still settling — its payload may change without a deprecation cycle.
Triggered when the port completed — the ported number is now live on the eSIM and the eSIM activates.
Payload
typestringrequiredportin.completedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
portInRequestReferencestringrequiredPublic opaque port-in request reference (8-char uppercase base36)
profileReferencestringrequiredesimReferencestringrequiredmsisdnstringrequiredThe number being ported, in international format (E.164 without a leading +)
statusstringrequiredrequested: Accepted by Firsty; provider submission in progressapproved: Donor/provider accepted the portscheduled: Port scheduled for a future date (reserved for future markets)cancelling: Cancellation requested, awaiting provider confirmationcompleted: Number ported — the eSIM activates with the ported numberrejected: Donor rejected the request (see reason)failed: Port failed (see reason)cancelled: Cancellation confirmed
requestedapprovedscheduledcancellingcompletedrejectedfailedcancelledreasonobject | nullFailure/rejection detail, present when status is rejected or failed
Show propertiesHide properties
codestringrequiredNormalized failure/rejection code
messagestring | nullHuman-readable detail when available
scheduledDatestring | null · datePlanned porting date when known (reserved for future markets)
Experimental. This event is still settling — its payload may change without a deprecation cycle.
Triggered when the port-in failed. Submit a corrected request or abandon.
Payload
typestringrequiredportin.failedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
portInRequestReferencestringrequiredPublic opaque port-in request reference (8-char uppercase base36)
profileReferencestringrequiredesimReferencestringrequiredmsisdnstringrequiredThe number being ported, in international format (E.164 without a leading +)
statusstringrequiredrequested: Accepted by Firsty; provider submission in progressapproved: Donor/provider accepted the portscheduled: Port scheduled for a future date (reserved for future markets)cancelling: Cancellation requested, awaiting provider confirmationcompleted: Number ported — the eSIM activates with the ported numberrejected: Donor rejected the request (see reason)failed: Port failed (see reason)cancelled: Cancellation confirmed
requestedapprovedscheduledcancellingcompletedrejectedfailedcancelledreasonobject | nullFailure/rejection detail, present when status is rejected or failed
Show propertiesHide properties
codestringrequiredNormalized failure/rejection code
messagestring | nullHuman-readable detail when available
scheduledDatestring | null · datePlanned porting date when known (reserved for future markets)
Experimental. This event is still settling — its payload may change without a deprecation cycle.
Triggered when a requested cancellation was confirmed by the provider.
Payload
typestringrequiredportin.cancelledtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
portInRequestReferencestringrequiredPublic opaque port-in request reference (8-char uppercase base36)
profileReferencestringrequiredesimReferencestringrequiredmsisdnstringrequiredThe number being ported, in international format (E.164 without a leading +)
statusstringrequiredrequested: Accepted by Firsty; provider submission in progressapproved: Donor/provider accepted the portscheduled: Port scheduled for a future date (reserved for future markets)cancelling: Cancellation requested, awaiting provider confirmationcompleted: Number ported — the eSIM activates with the ported numberrejected: Donor rejected the request (see reason)failed: Port failed (see reason)cancelled: Cancellation confirmed
requestedapprovedscheduledcancellingcompletedrejectedfailedcancelledreasonobject | nullFailure/rejection detail, present when status is rejected or failed
Show propertiesHide properties
codestringrequiredNormalized failure/rejection code
messagestring | nullHuman-readable detail when available
scheduledDatestring | null · datePlanned porting date when known (reserved for future markets)