Create a builder webhook destination
Creates a pending HTTPS webhook destination. The response includes one-time signing_secret and verification.token values. Deliveries are not sent until the endpoint is verified, and verification requires the destination to answer 2xx to a signed webhook.verification challenge (see POST /api/v1/webhooks/{id}/verify). The subscribable event_types and their data payload shapes are described by GET /api/v1/webhooks/events; the per-endpoint delivery log is GET /api/v1/webhooks/{id}/deliveries. Export lifecycle event types (export_job_ready, export_job_failed, export_job_expired, export_job_cancelled) are delivered only to the API-key account that created the export and contain no download URL; use the authorized export status and download routes. Four subscribable event types are Pro-only and only deliver to API keys on an active Pro subscription. whale_trades_inserted is one of them, gated by the same SubscriberScope::InsiderOnly mechanism as the other three (each type carries its own LiveEventContract entry; they share the scope value). The other three: wallet_grade_changed (data: wallet, trader_id, old_grade, new_grade, direction (upgrade|downgrade), skill_index, final_score, date) fires on a Pass-2 grade transition; insider_radar_flag_raised (data: trade_id, wallet, trader_id, condition_id, suspicion_score, track, side (yes|no), size, price) fires the first time a trade's suspicion score crosses the radar flag threshold; sharp_money_flow_detected (data: condition_id, net_flow_usd, abs_net_flow_usd, dominant_side (yes|no), grade_floor (S|A|B|C|D|F), whale_trade_count, window) fires when a scheduled scanner detects ranked-trader net flow crossing a threshold (up or down) on a market, and smart_money_flow_detected is its deprecated spelling of the same event. live_sports_updated (data: event_slug, game_id, league, version, changed, observed_at, published_at, status, period, clock, live, ended, scores, series_format, snapshot_url) is ungated and fires as a bounded per-game pulse when a live game's scores, status, period or live/ended state moves: at most one delivery per game per 20 seconds, with a live or ended transition exempt from that interval, and the game clock alone never firing one. version is a durable per-game ordinal, changed lists the material fields that moved since that game's previous delivered pulse, and snapshot_url is where to re-read the whole game after a gap. Delivery signing: each delivery request carries one or more HMAC-SHA256 signatures in the x-0xinsider-signature header as comma-separated v1=<hex> candidates. During staged rotation, the current and previous signing secrets are both signed for one hour; accept any valid candidate. Each candidate is HMAC-SHA256(signing_secret, "<timestamp>.<raw_request_body>"). The signed <timestamp> is sent separately as x-0xinsider-timestamp (unix seconds). To verify a delivery: read x-0xinsider-timestamp, reject it if it differs from the current time by more than 300 seconds, recompute each candidate over "<timestamp>.<raw_body>" with the active secrets, and compare using a constant-time comparison. Each delivery also carries x-0xinsider-event-id, x-0xinsider-event-type, x-0xinsider-delivery-id, and x-0xinsider-delivery-attempt headers. Retries and disabling: ordinary transient delivery failures use stable jitter between half and the existing 60, 120, 240, 480, 960, 1920 and 3600-second upper bounds (retry_policy.retry_horizon_seconds = 7380); on 408, 429, or 5xx, a valid Retry-After delta-seconds or HTTP-date replaces that one wait and is clamped to 60–3600 seconds, while missing, malformed, past, or non-retryable-response hints use the ordinary schedule. The delivery still has eight attempts (retry_policy.max_attempts), and an eighth failure becomes dead_letter. The delivery log exposes retry_schedule_reason and next_attempt_at so a receiver can see the active schedule. Separately, an endpoint is disabled after 8 consecutive failed attempts across all of its deliveries (retry_policy.disable_after_consecutive_failures); any successful attempt resets that count, so a busy endpoint that goes down can be disabled in minutes, well before any single delivery exhausts its retries. Disabling dead-letters every delivery still queued for the endpoint and emails the account owner, within about an hour, with each disabled endpoint and its last failed response. Re-enable it with PATCH /api/v1/webhooks/{id} {"enabled": true}; re-enabling does not resend dead-lettered deliveries. Resend each one with POST /api/v1/webhooks/{id}/deliveries/{delivery_id}/redeliver, or catch up with GET /api/v1/events/feed/since from the last event you processed. GET /api/v1/webhooks/{id}/deliveries shows next_attempt_at and retry_schedule_reason for a delivery still waiting to retry.
Headers
Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.
Optional safe-retry key. Reuse the same value only when retrying the exact same mutation request body; a different body returns 422 and an in-flight matching request returns 409.
Request body
Response
Webhook destination
Changes
Changed in 22 of the 89 revisions of this API.11357238
- ●
added the new
large_trade_inserted_v2enum value to the//response property for the response statusresponse-property-enum-value-added
- ○
added the new optional request property
new-optional-request-property
- ○
added the new
large_trade_inserted_v2enum value to the request property/request-property-enum-value-added
- ○
added the required property
/to the response with the statusresponse-required-property-added
- ●
- ●
added the new
sharp_money_flow_detectedenum value to the//response property for the response statusresponse-property-enum-value-added
- ○
added the new
sharp_money_flow_detectedenum value to the request property/request-property-enum-value-added
- ●
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
freshness_ceiling_unsatisfiedenum value to the/response property for the response statusresponse-property-enum-value-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ●
- ●
added the new
large_trades_insertedenum value to the//response property for the response statusresponse-property-enum-value-added
- ●
added the new
trader_syncedenum value to the//response property for the response statusresponse-property-enum-value-added
- ○
added the new
large_trades_insertedenum value to the request property/request-property-enum-value-added
- ○
added the new
trader_syncedenum value to the request property/request-property-enum-value-added
- ●
- ●
added the new
export_job_cancelledenum value to the//response property for the response statusresponse-property-enum-value-added
- ○
added the new
export_job_cancelledenum value to the request property/request-property-enum-value-added
This revision also has 4 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ●
- ●
added the new
export_job_expiredenum value to the//response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_job_failedenum value to the//response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_job_readyenum value to the//response property for the response statusresponse-property-enum-value-added
- ○
added the new
export_job_expiredenum value to the request property/request-property-enum-value-added
- ○
added the new
export_job_failedenum value to the request property/request-property-enum-value-added
- ○
added the new
export_job_readyenum value to the request property/request-property-enum-value-added
- ●
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
export_expiredenum value to the/response property for the response statusresponse-property-enum-value-added
This revision also has 3 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ●
- ●
added the new
suspicious_trade_flaggedenum value to the//response property for the response statusresponse-property-enum-value-added
- ○
added the new
suspicious_trade_flaggedenum value to the request property/request-property-enum-value-added
This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ●
- ○
the response property
/became required for the statusresponse-property-became-required
- ○
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
unknown_query_parameterenum value to the/response property for the response statusresponse-property-enum-value-added
- ○
added the new optional
headerrequest parameterX-Query-Validationnew-optional-request-parameter
- ●