Webhooks
Package events
Signed POST requests to your webhook endpoint for package lifecycle events. See the Webhooks overview for signature verification.
Triggered when a new package has been provisioned for an eSIM.
Payload
typestringrequiredpackage.createdtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestringTriggered when a package becomes active and ready for use.
Payload
typestringrequiredpackage.activatedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestringTriggered when a recurring package's data allocation has been fully consumed for the current cycle. The package transitions from active to throttled and awaits the next provider renewal. Non-recurring packages emit package.exhausted instead. The event carries the figures it implies: usedAmount at the plan capacity and remainingAmount 0, until the next renewal restores the allowance.
Payload
typestringrequiredpackage.throttledtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringrequiredplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestring | nullusedAmountnumberrequiredAmount consumed when the event fired. Equal to the plan capacity when the allowance ran out; the figure reached so far when the package ended for another reason, such as the addon being removed at the provider.
remainingAmountnumberrequiredData left when the event fired. Zero when the allowance ran out.
unitstringrequiredUnit the amounts are expressed in, determined by the package type.
mbsecondssmspercentageUsedintegerrequiredShare of the allowance consumed when the event fired. 100 when it ran out.
Triggered when a non-recurring package's allocation has been fully consumed. Recurring packages emit package.throttled instead. The event carries the figures it implies: usedAmount at the plan capacity and remainingAmount 0.
Payload
typestringrequiredpackage.exhaustedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringrequiredplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestring | nullusedAmountnumberrequiredAmount consumed when the event fired. Equal to the plan capacity when the allowance ran out; the figure reached so far when the package ended for another reason, such as the addon being removed at the provider.
remainingAmountnumberrequiredData left when the event fired. Zero when the allowance ran out.
unitstringrequiredUnit the amounts are expressed in, determined by the package type.
mbsecondssmspercentageUsedintegerrequiredShare of the allowance consumed when the event fired. 100 when it ran out.
Triggered when a package has ended. Includes the reason for ending (expired, exhausted, or manually removed).
Payload
typestringrequiredpackage.endedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringrequiredplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestring | nullreasonstringrequiredWhy the package ended
expiredexhaustedremovedTriggered when a package reaches a usage threshold. Usage updates are guaranteed at 33% and 66% at minimum, on every provider and every usage feed, and are published whenever consumption advances in between. Where a network reports through more than one feed, updates reflect the combined total rather than each feed separately. The end of the allowance is signalled by package.throttled or package.exhausted, which carry the figures for that moment. Usage updates continue afterwards while the package keeps consuming at the reduced speed: usedAmount grows past the plan capacity, remainingAmount stays 0 and percentageUsed stays at 100 until the next renewal.
Payload
typestringrequiredpackage.usagetimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringrequiredplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestring | nullusedAmountintegerrequiredAmount used, in the package's unit (mb for data, seconds for voice, sms for SMS)
remainingAmountinteger | nullrequiredAmount remaining, same unit as usedAmount. Null when the remaining amount cannot be determined (e.g. unmetered or unavailable from provider).
unitstringrequiredUnit of usedAmount/remainingAmount, determined by the package type
mbsecondssmsdataUsedMbintegerData used in MB. Data packages only, emitted solely to clients with legacy API compatibility enabled — use usedAmount instead.
dataRemainingMbinteger | nullData remaining in MB. Data packages only, emitted solely to clients with legacy API compatibility enabled — use remainingAmount instead.
percentageUsedintegerrequiredUsage threshold percentage. Guaranteed at 33 and 66 at minimum, with updates whenever consumption advances in between. 100% is signalled by package.throttled or package.exhausted.
Triggered when a package's cumulative data usage crosses a usage threshold. Fires at 33% and 66%, at most once per threshold per package. The 100% case is signalled by package.throttled or package.exhausted.
Payload
typestringrequiredpackage.usage.thresholdtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringrequiredplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestring | nullthresholdPercentintegerrequiredThreshold percentage that was crossed (33 or 66).
3366usedAmountnumberrequiredCumulative amount used (MB for data, count for SMS, seconds for voice).
remainingAmountnumber | nullAmount remaining in the same unit as usedAmount. Null when not determinable.
capacityTotalnumberrequiredTotal plan capacity in the same unit as usedAmount
unitstringrequiredUnit of usedAmount/remainingAmount/capacityTotal, determined by the package type
mbsecondssmsTriggered when a recurring package is renewed for a new cycle. Usage counters are reset and the package transitions back to active.
Payload
typestringrequiredpackage.renewedtimestampstring · date-timerequiredWhen the event occurred
dataobjectrequiredShow propertiesHide properties
packageReferencestringrequiredPackage reference identifier (23-character opaque token)
profileReferencestringrequiredesimReferencestringrequiredeSIM reference identifier (18-digit opaque token)
iccidstringrequiredplanReferencestringrequiredPlan reference identifier (14-character opaque token)
countryCodestring | nullnextRenewalAtstring | null · date-timeWhen the next renewal cycle is scheduled
remainingAmountnumber | nullRemaining data amount after renewal (MB for data packages)