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 theAuthorization 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 therfq_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.
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.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.
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.

