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, the simplest way is to return HTTP 204 No Content. Anything non-2xx works.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.