The events
Everyservice.* event carries service_id and application_id (the same value; service_id is the legacy name) and your external_id.
And, opt-in because they come one per code or message, the events a client application would get on its own webhook, with your
external_id added to the data:
Subscriptions
By default everyservice.* event and balance.low reach your webhook; the verification and message events do not until you opt in. Change the set in the partner console under Integration, or with PUT /v1/partner/webhook:
null resets the default set. GET /v1/partner/webhook shows the current set beside default_events and available_events. A subscription changes delivery only: lifecycle and balance events are written to the log whatever you subscribed to, while the opt-in events are written only when subscribed, since they are readable through the logs anyway.
Endpoints that existed before subscriptions did keep receiving exactly the seven events they always received (
service.approved, service.rejected, service.suspended, service.paused, service.owner_accepted, service.owner_revoked, balance.low) until you opt in to more. Nothing new reaches an existing integration on its own.The feed
GET /v1/partner/events lists the log oldest first, up to 100 rows a page, each with the event, your external_id, the data the webhook would carry, and the delivery it produced when there was one.
- Resume with the cursor.
next_cursorpoints after the last row you received, whether or not more rows exist now; keep it and pass it back ascursoron the next call.has_moresays whether a page is waiting right now. An empty page answersnull, so keep the cursor you had. - Start from a time.
sincetakes an ISO 8601 date or datetime for the first call, when you have no cursor yet. - Filter with
event(one event name) andapplication(yourexternal_id). - Two seconds behind. Rows younger than two seconds are held back, so a cursor you save never skips a row whose sequence was taken earlier but committed later.
- At least once. Treat the feed like the webhook: dedupe by the event
id. - Ninety days. Events and finished deliveries older than 90 days are pruned.
data; a webhook delivery’s event header is the same name. Read the deliveries when you want to know whether a specific webhook call succeeded.