Webhooks are one of two ways to price RFQs. The maker WebSocket carries the same rounds over
one outbound connection, with no public endpoint to operate and no signature to verify.
X-Novig-Signature header. /quote and /confirm sit on the trade path and have hard timing requirements; /ping is an on-demand connectivity check (not on the trade path) but is still subject to a request timeout (currently 3 seconds).
POST {webhook_url}/quote
Novig calls /quote for every parlay RFQ that names outcomes you might quote. You return a price and a maximum wager you’re willing to back at that price.
Request body
Header:
X-Novig-Signature: BLAKE3(shared_secret, body).hex() — see Signing.
Response body
There is no expiry field. Quote validity is platform-owned: Novig anchors a TTL when the auction closes (currently 30
seconds pregame, 10 seconds for live markets) — your quote simply lapses when it expires.
Hard rules
- Non-2xx responses are dropped.
max_wager <= 0is dropped.- Malformed/unparseable JSON is dropped.
- A bad signature is dropped.
Declining to quote
If you don’t want to quote a particular RFQ, return HTTP 204 No Content. Any non-2xx also drops your quote, but a 204 records a deliberate pass, where an error or a timeout looks like a broken pricer.POST {webhook_url}/confirm
If your quote is selected as the winner, Novig calls /confirm with the actual taker wager (which may be ≤ your max_wager) immediately before writing the trade. This is your last chance to back out.
Request body
Header: same
X-Novig-Signature scheme as /quote.
Response body
POST {webhook_url}/ping
A connectivity check you trigger yourself via POST /rfq/pricer/ping. Novig sends a signed POST to <webhook_url>/ping and reports back how you answered — use it to confirm reachability and signature handling before any live quote flow. This endpoint is not on the trade path: it carries no quote content and has no latency budget.
Request body
Header: same
X-Novig-Signature scheme as /quote and /confirm — verify it exactly as you would on the trade path.
Response
Return any 2xx status. There is no required body; Novig only reports whether the call reached you and what status you returned (asok/status in the ping result). A non-2xx, a bad signature you rejected, or an unreachable host all surface as a failed ping so you can fix the wiring before going live.
Type & encoding notes
- Decimal numbers (
max_wager,wager,priceon/confirm) are JSON strings, not numbers. priceon/quoteresponse is a JSON number in(0, 1)decimal probability.- UUIDs are lowercase strings with hyphens.

