# FAQ - Common Questions and Troubleshooting
URL: https://sockodds.com/docs/faq/

# FAQ - Common Questions and Troubleshooting [#faq---common-questions-and-troubleshooting]

Common questions about using the SockOdds API. Don't see your question? [Contact us](https://sockodds.com/contact-us/).

## Overview [#overview]

### What is an odds API? [#what-is-an-odds-api]

An odds API is a programmatic interface that delivers sports betting odds — head-to-head, lines, totals and player props — from bookmakers straight into your app. Unlike a sports stats API, an odds API is about bookmaker prices. SockOdds delivers every Australian bookmaker's prices through one REST API, with event status, results and bet-slip deeplinks included.

### What is SockOdds? [#what-is-sockodds]

SockOdds is the Australian extension of the SportsGameOdds schema: a REST API serving odds, event status, results and deeplinks from 21 Australian bookmakers plus the exchanges and prediction markets that anchor fair prices, across 34 leagues and 12 sports. The paths, envelope and `oddID` grammar are SportsGameOdds v2, so anything written for SGO runs here by changing the base URL.

### What sports, leagues and bookmakers do you cover? [#what-sports-leagues-and-bookmakers-do-you-cover]

34 leagues across 12 sports — AFL, AFLW, NRL, NRLW, State of Origin, rugby union internationals, the IPL, plus the NFL, NBA, MLB, NHL, UFC, F1, the Premier League, the Champions League and more — with odds from 21 Australian books including Sportsbet, TAB, Ladbrokes, Neds, PointsBet, Unibet and bet365. [Browse sports →](https://sockodds.com/sports/) [Browse leagues →](https://sockodds.com/leagues/) [Browse bookmakers →](https://sockodds.com/bookmakers/)

### Does the API include sharp bookmakers like Pinnacle? [#does-the-api-include-sharp-bookmakers-like-pinnacle]

Yes. Pinnacle, the Betfair Exchange and ProphetX sit in the same `byBookmaker` object as the Australian books, and Kalshi and Polymarket prediction-market prices ride along where they price a fixture. Those are the sources the fair price is derived from.

### What types of betting data do you provide? [#what-types-of-betting-data-do-you-provide]

Pre-match odds across every major bet type: head to head, lines, totals, 1X2, player props, team props, alternate lines and more — for full game, halves, quarters, innings and other periods. Every event also carries status flags, results where the source has them, consensus odds with the vig removed on Base and above, and bet-slip deeplinks to the bookmaker.

### How accurate and fast is your odds data? [#how-accurate-and-fast-is-your-odds-data]

Prices are read from the bookmakers' own public pricing every couple of minutes and joined across books on shared event and market ids. Every bookmaker entry carries `lastUpdatedAt`; every event carries `info.lastUpdatedAt`, and an event with no source write for 45 minutes is flagged `info.stale: true` rather than served as current.

### How does your pricing compare to other odds APIs? [#how-does-your-pricing-compare-to-other-odds-apis]

Plans are priced on requests per minute and scope, not on how many markets or bookmakers come back. One event with 200 markets across 20 books is one object. Start free, and the Base plan is $69/month with every league and fair odds. [See plans & pricing →](https://sockodds.com/pricing/)

### Is there a free tier I can start with? [#is-there-a-free-tier-i-can-start-with]

Yes. The Lite plan is free: 10 requests a minute on AFL and NRL with 3 bookmakers and bet-slip deeplinks, no credit card and no expiry — enough to build and evaluate against real games. [Sign up free →](https://sockodds.com/signup/)

### How quickly can I integrate the API? [#how-quickly-can-i-integrate-the-api]

Most developers are up and running in under an hour, and an existing SportsGameOdds integration in minutes: the SGO SDKs for JavaScript, Python, Ruby, Go and Java work unchanged with the base URL pointed here. [Quickstart →](https://sockodds.com/docs/basics/quickstart/)

## Getting Started [#getting-started]

### How do I get an API key? [#how-do-i-get-an-api-key]

Enter an email on the [signup page](https://sockodds.com/signup/) and a Lite key is minted immediately, shown once. Paid plans are set up by [contacting us](https://sockodds.com/contact-us/).

### How do I authenticate my requests? [#how-do-i-authenticate-my-requests]

Include your key as a header (recommended) — `x-api-key: YOUR_API_KEY` — or as the query parameter `?apiKey=YOUR_API_KEY`. The header keeps your key out of URL logs.

### What's the fastest way to make my first API call? [#whats-the-fastest-way-to-make-my-first-api-call]

The [quickstart](https://sockodds.com/docs/basics/quickstart/) has copy-paste examples in cURL, JavaScript, Python, Ruby, PHP and Java. [Data explorer →](https://sockodds.com/docs/explorer/)

### Do you have SDKs? [#do-you-have-sdks]

Yes — the official SportsGameOdds SDKs (`npm install sports-odds-api`, `pip install sports-odds-api`, Ruby, Go and Java) talk to SockOdds unchanged when you set the client's base URL to `https://api.sockodds.com/v2`. Auto-pagination, typing, retries and error handling all carry over. [SDK documentation →](https://sockodds.com/docs/sdk/)

### Do you have a Postman collection? [#do-you-have-a-postman-collection]

Yes. [Download the Postman collection →](https://sockodds.com/postman-collection/)

### Can I use the API in my frontend/browser? [#can-i-use-the-api-in-my-frontendbrowser]

Not recommended — it exposes your key. Proxy calls through a backend, or sync the feed into your own database and query that from the frontend. [Best practices →](https://sockodds.com/docs/info/best-practices/)

## Data & Coverage [#data-coverage]

### Do you provide live/in-play odds? [#do-you-provide-livein-play-odds]

The feed is pre-match first. `status.live`, `status.started` and the period flags ride along so a live product knows the state of the game, and you can filter with `live=true`, but in-play prices refresh on the same ~2 minute cadence as everything else and are not the product.

### Do you support player props? [#do-you-support-player-props]

Yes — 188 distinct player-prop markets are priced right now, from AFL disposals and goalscorers to NRL try scorers, MLB hits and Premier League shots. Props come back from the same events request as game lines, keyed by the production SGO `playerID`. [Player Props API →](https://sockodds.com/player-props-odds-api/)

### Do you provide alternate lines? [#do-you-provide-alternate-lines]

Yes, where a book prices them. Add `includeAltLines=true` to an events request and each market's `altLines` object lists every line with its own `byBookmaker`. Alt lines multiply the payload, so only ask when you need them.

### Does your API include scores, stats and game results? [#does-your-api-include-scores-stats-and-game-results]

Event status (started, ended, live, cancelled, finalized, current period) is on every event, and `results` carries the source's scores and stat values where it has them. Every market carries `scoringSupported` so you know which can be graded from results.

### Do you have deeplinks to bookmakers? [#do-you-have-deeplinks-to-bookmakers]

Yes. 273 of the 692 current events carry `links.bookmakers` (the event on the book's site) and `links.betslip` (a documented strategy for landing on the selection). They come from each book's own event ids, not reconstructed URLs.

### Do you offer historical odds data? [#do-you-offer-historical-odds-data]

Finished events are never pruned, so your archive of every Australian book's prices starts the day you start pulling (retention began 2026-09). Opening and closing prices are not snapshotted yet — `includeOpenCloseOdds` is accepted for compatibility but returns nothing. [Historical odds →](https://sockodds.com/use-cases/historical-odds-data-api/)

### Do you offer futures or outright markets? [#do-you-offer-futures-or-outright-markets]

A handful of season markets appear where the source carries them (F1 championship and constructor markets under `periodID=season`), but season-long markets are not a product line yet.

### How do I see what markets are available for a given league? [#how-do-i-see-what-markets-are-available-for-a-given-league]

Use the `/markets` endpoint — it returns every oddID priced right now with the leagues and bookmakers pricing it, and defaults to `isSupported=true`. [Markets documentation →](https://sockodds.com/docs/data-types/markets/)

### Do you offer a Prediction Markets API? [#do-you-offer-a-prediction-markets-api]

Yes. Kalshi and Polymarket are part of the same unified feed rather than a separate product — their prices sit alongside the sportsbooks in the same `byBookmaker` object, keyed by `bookmakerID`. [Prediction Market API →](https://sockodds.com/prediction-market-api/)

## Pricing [#pricing]

### What are "objects" and "requests"? [#what-are-objects-and-requests]

A request is counted each time you call the API, whatever comes back. An object is a top-level item in the response — ten events is ten objects. Unlike APIs that charge per market and per bookmaker, one event with all its markets and books is one object. Objects are also called entities in the `/account/usage` response.

### How many "objects" or "requests" do I need? [#how-many-objects-or-requests-do-i-need]

A few hundred to a few thousand objects for local development; tens of thousands for a personal project; hundreds of thousands for a production app; millions for a product syncing every league every couple of minutes. Check `/account/usage` to see where you stand.

### Why is SockOdds cheaper than competitors? [#why-is-sockodds-cheaper-than-competitors]

The plans are priced on request rate and scope rather than on the volume of markets and bookmakers you pull, so fetching every AU book on every market never multiplies your bill.

### What are the rate limits for each plan? [#what-are-the-rate-limits-for-each-plan]

Lite: 10 requests per minute. Base: 60. Platform: 600. The per-minute counter is atomic — 60 simultaneous calls on a 10/min key serve exactly 10 — and a rejected call is still counted but never billed. [Rate limiting details →](https://sockodds.com/docs/info/rate-limiting/) [Compare plans →](https://sockodds.com/pricing/)

### When does my monthly object limit reset? [#when-does-my-monthly-object-limit-reset]

There is no monthly object cap on any plan; the per-minute rate is the limit that matters day to day. Daily object counts are reported in `/account/usage` for your own tracking.

### What happens if I exceed my rate limit? [#what-happens-if-i-exceed-my-rate-limit]

You receive `429 Too Many Requests` with a `Retry-After` header in seconds. Wait, check `/account/usage`, use filters to reduce what you fetch, or upgrade if you hit it consistently.

### How do I check my current usage? [#how-do-i-check-my-current-usage]

Call `/v2/account/usage`, or paste your key on the [account page](https://sockodds.com/account/), which calls the same endpoint from your browser.

### How do I upgrade, downgrade, cancel or update my billing? [#how-do-i-upgrade-downgrade-cancel-or-update-my-billing]

Email [api@sockodds.com](mailto:api@sockodds.com) with your `keyID` or use the [subscription form](https://sockodds.com/subscription-form/). Plans are month to month; the free key never expires. [Manage account →](https://sockodds.com/account/)

## Technical [#technical]

### What is an oddID? [#what-is-an-oddid]

The unique identifier for one side of one market: `{statID}-{statEntityID}-{periodID}-{betTypeID}-{sideID}`, e.g. `points-home-game-ml-home`. [Odds data type →](https://sockodds.com/docs/data-types/odds/)

### What's the difference between fairOdds and bookOdds? [#whats-the-difference-between-fairodds-and-bookodds]

`bookOdds` is the consensus across the books pricing the side with the vig left in. `fairOdds` is the de-vigged price derived from the exchanges and sharp books where they price the market; `fairOddsAvailable` tells you whether that was possible. [Consensus odds →](https://sockodds.com/docs/info/consensus-odds/)

### What are the different bet types (betTypeID)? [#what-are-the-different-bet-types-bettypeid]

The main ones are `ml` (head to head), `sp` (line), `ou` (total), `ml3way` (1X2), `yn` (yes/no) and `eo` (even/odd), plus cricket-specific `topbat`, `topbowl` and `dismissal`. [Bet types →](https://sockodds.com/docs/data-types/bet-types/)

### What does statEntityID mean? [#what-does-statentityid-mean]

Whose stat is being measured: `home`, `away`, `all` (both teams combined), or a specific `playerID` for props. [Stat entities →](https://sockodds.com/docs/data-types/stat-entity/)

### What are the different periodIDs? [#what-are-the-different-periodids]

`game`, `reg`, halves (`1h`, `2h`), quarters (`1q`–`4q`), periods (`1p`–`3p`), innings (`1i`–`8i`, `1ix5`), cricket overs (`1ov`, `6ov_cum`) and `season`. [Periods →](https://sockodds.com/docs/data-types/periods/)

### Why does "points" mean different things in different sports? [#why-does-points-mean-different-things-in-different-sports]

`points` is the statID that decides the event in every sport — runs in baseball and cricket, goals in soccer and hockey, sets in tennis — so a total or a line reads the same way across every league.

### How do I use pagination (cursor)? [#how-do-i-use-pagination-cursor]

Pass the `nextCursor` from one response as `cursor` on the next, keeping every other parameter the same, until `nextCursor` is null. [Pagination →](https://sockodds.com/docs/guides/data-batches/)

### How do I optimize API response times? [#how-do-i-optimize-api-response-times]

Filter at the API: one league at a time, `oddID` for the markets you need, `bookmakerID` for the books you show, and leave `includeAltLines` off unless you need it. [Response speed →](https://sockodds.com/docs/guides/response-speed/)

### How often should I poll for odds updates? [#how-often-should-i-poll-for-odds-updates]

The source refreshes every ~2 minutes, so polling faster is wasted quota. Poll every 2–5 minutes for the fixtures you care about and cache by `info.lastUpdatedAt`.

### How does the real-time streaming API work? [#how-does-the-real-time-streaming-api-work]

It doesn't, yet — `/v2/stream/events` answers 501 so an SGO client fails loudly instead of waiting on a socket. The [streaming guide](https://sockodds.com/docs/guides/realtime-streaming-api/) shows the polling-and-diff pattern that replaces it.

### Why are my filters ignored when I pass eventID? [#why-are-my-filters-ignored-when-i-pass-eventid]

By design: with `eventID` or `eventIDs` only those ids are used; response-shaping parameters (`oddID`, `bookmakerID`, `includeAltLines`) still apply.

### Do I need sportID if I already have leagueID? [#do-i-need-sportid-if-i-already-have-leagueid]

No. Each league belongs to exactly one sport, so `sportID` is redundant when `leagueID` is set.

### How do I get team colors? [#how-do-i-get-team-colors]

On the teams object under `colors`, where the source carries them (many Australian sources don't yet, in which case the fields are empty strings).

### Does the cancelled flag work at the event level or the odds level? [#does-the-cancelled-flag-work-at-the-event-level-or-the-odds-level]

Both exist. Use `status.cancelled` on the event; the odds-level flag describes the period the market settles on.

### How do I grade or settle a bet from the API? [#how-do-i-grade-or-settle-a-bet-from-the-api]

When `status.finalized` is true, read the stat at `results.{periodID}.{statEntityID}.{statID}` for the market's grammar and compare it to the line. `scoringSupported` says whether the source can grade that market. [Handling odds →](https://sockodds.com/docs/guides/handling-odds/)

## Troubleshooting [#troubleshooting]

### Why am I getting a 401 error? [#why-am-i-getting-a-401-error]

The key is missing, mistyped, has leading/trailing whitespace, or has been deactivated. Send it as `x-api-key` (case-insensitive) or `apiKey`.

### Why am I getting a 403 error? [#why-am-i-getting-a-403-error]

The key exists but has been deactivated. Email support with the `keyID`.

### Why am I getting a 429 error? [#why-am-i-getting-a-429-error]

You've exceeded your per-minute limit. The response carries `Retry-After`; the rejected call is still counted for the minute but never billed.

### Why am I seeing an odds value like -10000? [#why-am-i-seeing-an-odds-value-like--10000]

That is a real last-seen price from the book, usually on a side that has effectively settled. Check `available` and `lastUpdatedAt` before acting on it.

### What happens when a game is postponed, delayed or cancelled? [#what-happens-when-a-game-is-postponed-delayed-or-cancelled]

`status.delayed` and `status.cancelled` flip, `status.previousStartsAt` keeps the earlier kick-off times, and if the source stops writing the event is flagged `info.stale` after 45 minutes. [Read more →](https://sockodds.com/blog/postponed-delayed-cancelled-events-odds-api/)

### How should I handle errors in my code? [#how-should-i-handle-errors-in-my-code]

Retry 5xx once after a short delay with jitter; never retry 4xx except 429 after `Retry-After`. Every error body carries `success: false` and an `error` string. [Errors →](https://sockodds.com/docs/info/errors/)

## Support [#support]

### What if I need a league or bookmaker you don't currently support? [#what-if-i-need-a-league-or-bookmaker-you-dont-currently-support]

Tell us. Coverage is driven by the same pipeline that prices Australian markets, and most additions the source can reach land within a couple of weeks.

### Do you cover racing or esports? [#do-you-cover-racing-or-esports]

Not in this feed. Horse and greyhound racing are deliberately out of scope; esports prices appear only where a covered book carries them on a covered league.

### Do you offer custom or enterprise plans? [#do-you-offer-custom-or-enterprise-plans]

Yes — the Platform plan is a dedicated key per environment with no bookmaker cap and the highest request rate. [Talk to us →](https://sockodds.com/contact-us/)

### Can I get a bulk or annual discount? [#can-i-get-a-bulk-or-annual-discount]

Annual billing on Base is 10 months for twelve. Volume pricing on Platform is agreed per customer.

### Do you offer real-time streaming or webhook-style updates? [#do-you-offer-real-time-streaming-or-webhook-style-updates]

Not yet. Polling every ~2 minutes matches the source cadence; the streaming endpoint is reserved for when the source can push.

### How do I report a data issue or request a feature? [#how-do-i-report-a-data-issue-or-request-a-feature]

Email [api@sockodds.com](mailto:api@sockodds.com) with the full request URL, the response and what you expected. Typical response within one business day.

### What level of support do you provide? [#what-level-of-support-do-you-provide]

Email support on every plan; paid plans are prioritised; Platform customers get a direct channel. [Contact us →](https://sockodds.com/contact-us/)

## Partners [#partners]

### Do you have an affiliate or partner program? [#do-you-have-an-affiliate-or-partner-program]

Yes — a referral program for developers and content creators who bring customers to SockOdds. [Partner program →](https://sockodds.com/partner/)

### Is the commission recurring? [#is-the-commission-recurring]

Yes, for as long as the referred customer stays subscribed. The rate is set out when you join.

### How do I get my referral link? [#how-do-i-get-my-referral-link]

Apply on the partner page; you receive a link and a dashboard when approved.

### How should I promote SockOdds? [#how-should-i-promote-sockodds]

Blog posts, forums, videos, podcasts, newsletters — anywhere developers building on Australian odds are. Honest promotion only: no misleading claims, spam or brand bidding.

### How do I track my earnings and referrals? [#how-do-i-track-my-earnings-and-referrals]

Your dashboard shows clicks, referrals, conversions and earnings.

> Need help?[FAQ](https://sockodds.com/docs/faq/) · [Email](mailto:api@sockodds.com) · [Contact](https://sockodds.com/contact-us/)
