Skip to content

GuidesBuild schemas by venue

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.

  1. Create the account. Sign up at novig.us. Novig is a CFTC-regulated US exchange, so expect identity checks and government-ID KYC.
  2. 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.
  3. 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.
  4. Allow time. Setup is about 10 minutes after approval; KYC may take a day, and API credential issuance may add time.
  5. Check access. Production endpoints are geo-fenced to US egress, so verify that requirement before funding.
  • Production status: Market data reads, order books, and hosted build, submit, and cancel are live.
  • Venue account: Yes, for authenticated reads and trading on Novig.
  • Credentials: NOVIG_CLIENT_ID and NOVIG_CLIENT_SECRET for 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.

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-token
Content-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.

Novig’s sports markets follow a 3-tier hierarchy:

  • Event: A sports game or match (e.g. NFL, NBA, EPL) carrying a scheduledStart timestamp and teams/competitors. Cross-venue joins utilize opticOddsId when 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 / Yes
    • index = 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.

  • 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/ticks and 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.
  • Server execution lane: Armed for hosted build, submit, and cancel since 2026-08-22. Build stores an authless REST artifact; no order-body signature is required.

Hosted build accepts only the fields below. Unknown fields are rejected before an execution is persisted, and every order requires an idempotency key.

FieldRequiredContract
intentnoIf present, must be "order".
marketIdyesMust match the catalog market’s native Novig market UUID.
outcomeIdyesCatalog composite {marketId}:{outcomeId} for the selected outcome.
typeyesMust be "limit"; cash-sized market orders are not supported.
amountyesPositive number of contracts.
priceyesNumber in (0, 1) that matches the live Novig tick table exactly.
currencynoIf present, must be "CASH"; the COIN balance is not executable.
tifno; default "GTC"One of "GTC", "GTT", "IOC", or "FOK".
ttlfor "GTT"Positive whole milliseconds; rejected for every other time in force.

Predictefy’s platform NOVIG_CLIENT_ID and NOVIG_CLIENT_SECRET are used only for build-time reads such as the live tick table. They cannot move caller funds. Submit accepts only executionId and the caller’s own callerAccessToken; refresh accepts only callerAccessToken. The token is used for that one venue request and is never persisted.

Cancel build takes no caller fields and derives a bodyless DELETE from the stored venue order id. Submit that cancel with callerAccessToken. Novig acknowledges cancellation asynchronously, so refresh with the same kind of per-request token until venue status confirms the order is canceled.