Novig
Step zero — from nothing to your first trade
Section titled “Step zero — from nothing to your first trade”Novig uses a venue-custodied USD account, not a crypto wallet. Its production API is also restricted to US egress.
- Create the account. Sign up at novig.us. Novig is a CFTC-regulated US exchange, so expect identity checks and government-ID KYC.
- Confirm credentials. The integration requires a Novig client ID and client secret for OAuth 2.0 token minting. Personal-account API credential issuance is still being confirmed with the venue; do not assume these credentials appear in self-service API settings. Confirm access with Novig before planning an API trade.
- Fund it. Deposit USD through Novig’s regulated banking rails; no chain or crypto asset applies. In CASH denomination, 100 Minimum Currency Units make one contract. Start with enough for at least one contract plus fees; the repo sources establish no deposit minimum.
- Allow time. Setup is about 10 minutes after approval; KYC may take a day, and API credential issuance may add time.
- Check access. Production endpoints are geo-fenced to US egress, so verify that requirement before funding.
What you need first
Section titled “What you need first”- Production status: Market data reads and order books are live. Server execution lane exists default-off pending owner arming and a live golden vector.
- Venue account: Yes, for authenticated reads and trading on Novig.
- Credentials:
NOVIG_CLIENT_IDandNOVIG_CLIENT_SECRETfor OAuth 2.0 Client Credentials token minting (POST /nbx/v1/auth/emm-token). - Funding: On-venue USD (
fiat_custodied). Novig custodies funds; deposits and withdrawals happen on the venue via regulated banking rails.
Reads authentication & access
Section titled “Reads authentication & access”Novig is a CFTC-regulated US sports prediction exchange operating the NBX v2 EMM API. All read operations against api.novig.us require a Bearer access token obtained via OAuth 2.0 Client Credentials:
POST /nbx/v1/auth/emm-tokenContent-Type: application/json
{ "grant_type": "client_credentials", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET"}Tokens are minted lazily and cached in-process. Production endpoints (https://api.novig.us) are geo-fenced to US egress IP addresses, while the QA environment (https://api-qa.novig.us) is open.
Data model & sidedness
Section titled “Data model & sidedness”Novig’s sports markets follow a 3-tier hierarchy:
- Event: A sports game or match (e.g. NFL, NBA, EPL) carrying a
scheduledStarttimestamp and teams/competitors. Cross-venue joins utilizeopticOddsIdwhen present. - Market: A betting market within an event (e.g., moneyline, spread, total).
- Outcomes: Binary pairs of outcomes per market. Sidedness is defined strictly by the outcome
index:index = 0: Home / Over / Yesindex = 1: Away / Under / No
Never rely on array position for sidedness.
Outcome IDs carry no derivable mathematical relation to market UUIDs, so Predictefy uses the composite format ${marketId}:${outcomeId} to route outcome-level verbs.
Prices, tick table, and order books
Section titled “Prices, tick table, and order books”- Odds as probabilities: Prices represent decimal probabilities in $[0.001, 0.999]$.
- Non-uniform tick table: Novig enforces a non-uniform tick grid (finer resolution near 0.01 and 0.99, standard 0.005/0.01 in the middle). The valid ticks are queried from
GET /nbx/v2/emm/ticksand never hardcoded. - Bids-only ladder & complement: Novig order books (
GET /nbx/v2/emm/book/{marketId}) publish bids only. The offer (ask) side is derived as the exact binary complement ($1 - p$) with quantities mirrored across the paired outcome. - Quantity units: Quantities are denominated in Minimum Currency Units. For CASH denomination, 1 unit = $0.01 (1 cent), and 100 units = 1 contract.
Execution status
Section titled “Execution status”- Server execution lane: Built and ships default-off (
NOVIG_EXECUTION_ENABLED=trueplus platform integration credentialsNOVIG_CLIENT_ID/NOVIG_CLIENT_SECRET). Bounded order placement, cancellations, and caller-authenticated status refresh run under the caller’s own per-request Bearer access token.