Skip to main content
On the webhook endpoints, we call you. On the three endpoints here, you call us to see what executed. Use the feed to track executions as they happen. Use the listing to reconcile your fills and catch up on anything you missed. Use the collateral total to see how much of your balance your open parlays hold. None of these endpoints affects pricing, winner selection, or settlement.
RFQ fills aren’t in the order-book fills listing, List fills. Only GET /rfq/executions lists the RFQs you won.

Authenticate

All three endpoints take the OAuth 2.0 client-credentials token you use for the rest of the API. Authentication shows how to get one. Send it in the Authorization header as a bearer token. The examples read the host from NOVIG_HOST. Set it once:

List your executions

GET /rfq/executions returns the RFQs you priced and won, newest first. Your account must have a registered pricer, or the call returns 403. Registration shows how to register one.

Query parameters

Every parameter is optional. With none, you get your 500 newest executions. A limit above 500 or an after that isn’t a UUID returns 400 Bad Request.

Page through your history

Pass the rfq_id of the last execution on a page as after to get the next page. Stop when a page comes back with fewer than limit items, or empty.
Executions sort by executed_at, then by rfq_id, both newest first. Two executions with the same timestamp keep the same order on every call. after marks your place, so a new execution during your walk never makes you see a row twice. A page deep in your history takes as long as the first page. after must be an rfq_id from your own executions. Any other value returns an empty array. An empty array means you’ve paged past the end, or you haven’t won an RFQ yet.

Response

200 OK with a JSON array, newest first:
We send money and prices as strings to keep their precision. result and settled_at appear only once status is settled. fmv_value appears only when result is fmv. push appears only on parlays that settled before August 20, 2026. Settlement explains each result. outcome_ids is sorted by ID, while the rfq_created event lists the legs in request order. Only this listing carries the legs. The feed leaves them out. executed_at never changes, and it matches the feed’s value for the same rfq_id.

Watch the live feed

GET /rfq/executions/feed is a WebSocket that sends every successful RFQ execution on Novig, not just yours. Send your bearer token in the Authorization header of the upgrade request. You don’t need a registered pricer to open the feed. The feed never says which LP won. To see only your own fills, use GET /rfq/executions.

Message format

Each execution arrives as one text frame:
Branch on event, because we may add frame types later. The feed has no outcome_ids. Get the legs from GET /rfq/executions.

Stay connected

1

Expect no replay

You get only executions that happen after you connect. Catch up on earlier ones from GET /rfq/executions.
2

Answer the heartbeat

We send a WebSocket ping every 15 s. Standard clients answer with a pong on their own.
3

Watch for gaps

offset goes up by one per frame. A jump, like 41 to 44, means you missed frames.
4

Reconnect with backoff

On each reconnect, compare the first offset with the last one you processed.
To fill a gap, page GET /rfq/executions from the newest execution until you reach an rfq_id you already hold. Then go back to the live feed.

Check your open collateral

GET /rfq/collateral returns the total collateral you have in RFQ parlays that filled and haven’t settled. Your account must have a registered pricer, or the call returns 403.
The endpoint takes no parameters.

Response

200 OK with a JSON object:
A parlay’s collateral is the pot minus the user’s stake. The pot is the stake divided by your quoted price, rounded down to the cent. It’s the same value as liability on GET /rfq/executions. A parlay leaves the total as soon as it settles, whatever the result. With no open parlays, you get "0" and 0.

Which endpoint to use

Most LPs keep the feed open for live prints. Then they call the listing now and then, and after any gap, to confirm they have every RFQ they won.