Webhooks

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.

post/api/v1/webhooks

Headers

X-Query-Validation'strict'

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.

Idempotency-Keystring

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

namestring required
urlstring uri required

Public HTTPS callback URL on the default port 443. Local, private, and internal targets are rejected, as is any explicit port other than 443 and any URL carrying credentials. Each user's URLs are unique after normalizing HTTPS scheme/host case, trailing DNS dots and port 443; path/query case is preserved. Pending verification and PATCH-disabled endpoints still reserve their stored URL. The destination must answer the signed webhook.verification challenge with a 2xx before POST /api/v1/webhooks/{id}/verify can activate the endpoint.

event_typesWebhookEventType[] required

Response

Webhook destination

object'webhook' required

Changes

Changed in 22 of the 89 revisions of this API.11357238

  • 0c276740106513See the full diff
    • ●

      added the new large_trade_inserted_v2 enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the new optional request property

      new-optional-request-property

    • ○

      added the new large_trade_inserted_v2 enum value to the request property /

      request-property-enum-value-added

    • ○

      added the required property / to the response with the status

      response-required-property-added

  • 7e57bd9dc8b511See the full diff
    • ●

      added the new sharp_money_flow_detected enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the new sharp_money_flow_detected enum value to the request property /

      request-property-enum-value-added

  • ece7a25b7a441313See the full diff
    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new freshness_ceiling_unsatisfied enum value to the / response property for the response status

      response-property-enum-value-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

    • ○

      added the optional property / to the response with the status

      response-optional-property-added

  • cc7ab48fc92922See the full diff
    • ●

      added the new large_trades_inserted enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new trader_synced enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the new large_trades_inserted enum value to the request property /

      request-property-enum-value-added

    • ○

      added the new trader_synced enum value to the request property /

      request-property-enum-value-added

  • c6a3d3420dc511See the full diff
    • ●

      added the new export_job_cancelled enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the new export_job_cancelled enum 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

  • 8fb2ad0990f433See the full diff
    • ●

      added the new export_job_expired enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_job_failed enum value to the // response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_job_ready enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the new export_job_expired enum value to the request property /

      request-property-enum-value-added

    • ○

      added the new export_job_failed enum value to the request property /

      request-property-enum-value-added

    • ○

      added the new export_job_ready enum value to the request property /

      request-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new export_expired enum value to the / response property for the response status

      response-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

  • 468b5769754e11See the full diff
    • ●

      added the new suspicious_trade_flagged enum value to the // response property for the response status

      response-property-enum-value-added

    • ○

      added the new suspicious_trade_flagged enum 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 status

      response-property-became-required

  • 1c5e270b4124131See the full diff
    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ●

      added the new unknown_query_parameter enum value to the / response property for the response status

      response-property-enum-value-added

    • ○

      added the new optional header request parameter X-Query-Validation

      new-optional-request-parameter