OpenPoly logo
Operator Api

Webhook deliveries

Inspect and replay webhook deliveries.

Webhook deliveries

Inspect webhook delivery attempts and outbox state.

Paths

GET /api/operator/webhooks/deliveries
POST /api/operator/webhooks/deliveries/{id}/replay

Required scopes:

  • webhooks:read for list
  • webhooks:write for replay
  • Polyflight or all-product list filters additionally require polyflight:read unless the caller has *

Query params

Each list filter is optional. Multiple payload filters combine with AND.

ParameterTypeRequirementValues/default
statusstringOptionalpending, sent, failed, or dead_letter.
event_typestringOptionalExact event type.
productstringOptionalopinion (default), polyflight, or explicitly labelled all.
created_fromdatetimeOptionalInclusive delivery creation-time lower bound.
created_todatetimeOptionalInclusive delivery creation-time upper bound.
order_idpositive integerOptionalExact callback payload order ID.
trade_idpositive integerOptionalExact callback payload trade ID.
market_idpositive integerOptionalExact callback payload market ID.
external_user_idstringOptionalExact callback payload external user ID.
purchase_request_idUUIDOptionalExact Polyflight purchase request correlation.
ticket_idUUIDOptionalExact Polyflight ticket correlation.
sortstringOptionalcreated_at_desc (default) or next_retry_at_asc.
pagepositive integerOptionalDefault 1.
page_sizepositive integerOptionalDefault 50, maximum 100.

Status values:

  • pending
  • sent
  • failed
  • dead_letter

Response highlights

  • delivery attempt_count
  • last_status_code
  • last_response_body_sample
  • next_retry_at
  • delivered_at
  • nested endpoint
  • nested event.event_id
  • nested event.event_type
  • nested event.aggregate_type
  • nested event.aggregate_id
  • nested event.payload_json
  • nested outbox status

event.payload_json is the operator-actionable callback data preview. Opinion trade events are reconstructed from durable order, user, operator, and trade rows when possible. Polyflight events come from immutable purchase/ticket/operation/obligation rows and do not revalue amounts with current FX or terms.

Opinion payload filters use durable order data. Polyflight purchase_request_id and ticket_id match their event correlations. Supplying multiple filters requires every condition to match the same event. One event can still have multiple delivery rows when it targets multiple endpoints.

The default product filter remains Opinion-only. Choose polyflight or explicitly labelled all to avoid silently mixing product event families in existing operational views.

Replay rules

id is a required positive delivery ID path parameter. Replay has no query parameters or request body.

Replay dispatches the same delivery object again and does not create a new business event.

The API scopes both mini_app_webhook_endpoints.operator_id and mini_app_outbox_events.operator_id to the authenticated operator before replay.

Receivers must dedupe by event_id, especially when replaying a delivery that was already sent.

Copyright © 2026