Skip to main content
The webhook endpoints are how Novig calls you. The two endpoints on this page are the reverse — you call Novig to observe executions: a live WebSocket tape of every execution platform-wide, and a REST listing of the RFQs you won. Together they let you track fills in real time and reconcile anything you missed.
These endpoints are an observability layer, not part of the trade path. Nothing here affects pricing, selection, or settlement — they exist so you can monitor and reconcile your RFQ activity.

Authentication

Both endpoints use the same OAuth 2.0 Client Credentials token as the rest of the API — see Authentication. Send it as a bearer token:
You must be an LP with a registered pricer. The token identifies your LP trader, and that trader must own a live pricer registration (see Registration).

GET /rfq/executions — your executed RFQs

Returns the RFQs you priced and won, most recent first. Use it to reconcile fills and to backfill anything you missed on the live feed.

Response

200 OK with a JSON array, ordered by executed_at descending:
The listing is capped at the 500 most recent executions. Older history is out of scope — pull and persist regularly if you need a longer record. An empty array ([]) simply means you haven’t won any RFQs yet.

GET /rfq/executions/feed — live execution tape

A WebSocket broadcast of every successful RFQ execution, platform-wide — not just yours.
Open it with the same bearer token in the Authorization header on the upgrade request. The same LP-with-pricer gate applies before the socket upgrades.
The feed is anonymous — it never reveals which LP won. It’s a market-wide print tape, not a per-LP fill stream. To see only your own fills, use GET /rfq/executions.

Message shape

One text frame per execution:

Connection behavior

1

No replay on connect

You receive only executions that happen after you connect. The feed is live market data, not a replayable log. Connect first, then act — anything that printed before you connected is gone from the socket (use the REST listing to catch up).
2

Heartbeat every 15s

The server sends a WebSocket Ping every 15 seconds to keep the connection alive through the load balancer’s 30-second idle timeout. Standard WebSocket clients auto-respond with a Pong; you don’t need to send anything.
3

Detect gaps with offset

offset increases by one per print. If it jumps (e.g. 41 → 44 after a lag or disconnect), you missed prints. Backfill the gap from GET /rfq/executions, then resume consuming the live feed.
Implement reconnection with exponential backoff. On every (re)connect, compare the first offset you see against the last one you processed and backfill via REST if there’s a gap.

How the two fit together

The typical pattern: hold the WebSocket open for live prints, and periodically (or after any offset gap) call the REST listing to confirm you’ve recorded every RFQ you won.