AArtery

Create a webhook

post/v1/webhooks

Returns the signing secret exactly once. Store it immediately; it cannot be re-derived. Subscribe to channels via glob (e.g. `artery:stream:event:*`) or by event-type literal (e.g. `anomaly.trade_volume`). ## Delivery payload shapes Every POST to your URL carries a JSON body. Two physical envelope shapes ship over the wire: - **Stream envelopes** (`{ type, provider, marketId?, payload, receivedAt }`) for: - `trade.{provider}` → `TradePayloadDto` - `user-trade.{orgId}` → `TradePayloadDto` - `settlement.{universalId}` → `SettlementEnvelopePayloadDto` - `arbitrage.cross_provider` → `ArbitrageCrossProviderPayloadDto` - `arbitrage.negation_pair` → `ArbitrageNegationPairPayloadDto` - **Anomaly envelopes** (`{ event, anomaly, deliveredAt }`) for: - `anomaly.trade_volume` → `AnomalyTradeVolumePayloadDto` - `anomaly.spread_widening` → `AnomalySpreadWideningPayloadDto` - `anomaly.wallet_burst` → `AnomalyWalletBurstPayloadDto` - `anomaly.settlement_delay` → `AnomalySettlementDelayPayloadDto` Each model is registered under `components/schemas/` for codegen. See `docs/webhooks/payload-shapes.md` for one full example envelope per channel and signing details.

Create a webhook · Artery API Docs