Skip to main content

Overview

You can show Novig prices on your odds screen with our REST API. You list a league’s markets from the catalog, then read each market’s order book to get its prices. Every example reads the host from NOVIG_HOST. On Production that is https://api.novig.com.

Get a key

The catalog accepts a trading or trading::read key, and you sign every request. A trading::read key can read but can’t place orders, so it fits a read-only integration.

Routes

Each route spends the read throttle. Throttling explains how to pace your requests.

List a league’s markets

A market leaves the catalog when it closes, so the catalog lists only markets you can still trade.
To read the next page, pass the reply’s next as after. Catalog lists every filter, including marketType, startsAfter, and startsBefore. For each event’s name, start time, and status, call GET /v3/catalog/events?league=NFL and match on eventId.
Build on IDs, not on description. An outcome ID stays stable for the life of its market.

Read the order book

Each key in orders is an outcome ID. Each outcome’s array lists the best price first. Within a price, it lists the earlier order first. depth sets how many price levels you get per outcome, from to . It defaults to . To skip an unchanged book, send the previous reply’s ETag in If-None-Match. An unchanged book returns 304.

Turn the book into prices

Every order on the book is a bid: an offer to buy one outcome at a price. A price is a probability, written as a decimal string. A bid resting at 0.665 on one outcome is liquidity for the other outcome. A taker on the other outcome trades against it at 0.335. So the price you show for an outcome is 1 minus the best bid on the other outcome. The size you show is the qty of that bid, in contracts. Using the book above: Monetary representations explains prices, quantities, and the price grid.
The outcomes array has no fixed order. Find the other outcome by its outcomeId, never by its position.
A three-way moneyline is three separate Yes / No markets, not one market with three outcomes. Three-way moneylines explains how to read them. When an event goes live, we void every resting order on its markets, so its books start empty in-game. Event lifecycle lists each event status.

Show the last traded price

GET /v3/catalog/markets/{id}/trades lists a market’s executions, newest first. Each trade carries its outcomeId, price, qty, and ts.

Get live updates

Each book request spends from your read throttle. To follow prices live, subscribe to the book channel on the websocket. It reports every change to a market’s book. The REST book’s seq is the book’s sequence number at that snapshot. The next book delta on the websocket follows it.

Supported leagues

Read the current list of leagues from GET /v3/types/leagues. Pass one or more of its names to league, separated by commas.