POST to your endpoint, HMAC-signed so you can verify it came from us.
Register a subscription
POST /api/v2/buyer/webhook-subscriptions
curl
Response (
201):
secret back — store it when you register.
List subscriptions
GET /api/v2/buyer/webhook-subscriptions
Returns every subscription for your account, newest first. Same subscription shape as above, minus the secret.
Delete a subscription
DELETE /api/v2/buyer/webhook-subscriptions/{id}
Deliveries stop immediately. Returns 404 if the id doesn’t exist or belongs to another account.
Verifying deliveries
Every delivery carries anX-Webhook-Signature header: the hex-encoded HMAC-SHA256 of the exact request body, keyed with your subscription’s secret. Recompute it and compare before trusting the payload:
Retry semantics
A delivery is a singlePOST attempt per event. If your endpoint doesn’t respond with a 2xx status, the attempt counts as a failure — it is not retried inline, since push events like discovery.revision are time-sensitive and a delayed retry would deliver stale state. Instead:
- Each failure increments
failureCounton the subscription. - After 10 consecutive failures, the subscription’s
statusflips tofailedand delivery stops. List your subscriptions to checkstatus,failureCount, andlastFailure, then delete and re-register once your endpoint is healthy again. - A successful delivery resets
failureCountto zero.
discovery.revision, that’s Browse products with sinceRevision).
Event catalog
discovery.revision is one payload contract delivered over two transports: hold a connection open and use the SSE stream, or register a webhook if you’d rather not. The payload shape is identical either way — productGroups contains only groups that landed since the previous revision (replace-by-groupId semantics), resultsComplete: true marks the final event for that discovery session.
Errors
401 UNAUTHORIZED— missing or invalid auth.400 VALIDATION_ERROR— invalidurl,secretshorter than 16 characters, or emptyeventTypes.404 NOT_FOUND— (delete only) no subscription with this id for your account.
Related
Stream discovery events
The SSE-equivalent of discovery.revision for a held-open connection
Browse products
Poll for the same revisions if you’d rather not use push at all