/nbx/v2.
We send RFQs only for parlays of two or more legs. Eligibility lists which legs can combine.
How a round works
Your pricer is the service that answers RFQs for your LP account.1
A user asks for a parlay
The user sends a list of
outcomeIds. We check the legs, create an rfq_id, and store the RFQ.2
We send the RFQ to every pricer
Each registered pricer gets the RFQ over the transport it chose. The auction stays open for 3 seconds.
3
You answer with a price
Return a price and a
max_wager, the largest stake you’ll take. You can also decline.4
We pick the winner
The lowest price wins, because it pays the user the most. A tie goes to the larger
max_wager.5
The winner confirms
When the user accepts, we ask you to confirm the actual wager at your price. You have 1 second to answer, called the last look.
6
The parlay settles
The parlay settles as one position when its legs grade. Settlement explains the payout.
- It’s malformed.
- Its
max_wageris zero or less. - It arrives after the 3-second auction closes.
- Its
max_wageris below the user’smin_wager, or below $10, whichever is higher. - Your LP account’s cash balance can’t cover your collateral for the full
max_wager.
Choose a transport
You can price over a WebSocket, over webhooks, or over both.
Both use the same 3-second auction and 1-second last look.
Pick the WebSocket if you can’t expose a public endpoint.
Pick webhooks if you already run a service.
If you use both, each RFQ arrives on both.
We keep your first quote in a round and ignore any later one.
We then confirm on the transport that carried that quote.
Webhook endpoints
For webhooks, you run threePOST endpoints under one base URL.
We add
/quote, /confirm, and /ping to the base URL you register.
The base can include a path, like https://pricer.example.com/novig.
Each request carries an X-Novig-Signature header.
Webhook signing shows how to check it.
Get started
Every pricer registers first, withPOST /rfq/pricer. Registration is self-serve.
- Register with a
webhookUrlto get webhooks. The response holds your shared secret. - Register without a
webhookUrlto use only the WebSocket. - Test your webhook with
POST /rfq/pricer/pingbefore live traffic arrives.

