---
title: "Get Odds Batch"
method: POST
path: "/v1/odds/batch"
tags: ["events", "odds"]
---

# Get Odds Batch

`POST /v1/odds/batch`

## Request

- Base URL: `https://api.infersports.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://api.infersports.dev/v1/odds/batch`
- Auth: none declared

Odds for up to 20 fixtures in ONE request — the batched form of `/events/{id}/odds`.

A slate sweep is otherwise N calls, which is what drives callers into the per-minute limit. This
counts as a single request against both budgets, so batching is strictly cheaper than looping.

Requires an API key: the whole point is a large multiplier on one request, and handing that to
anonymous callers would undo the keyless daily cap. A free key (no card) is enough.

Filters (`bookmakers` / `markets` / `period` / `format`) apply to every entry, and tier gating is
identical to the single-fixture route — Free still sees no sharp books here. Ids that don't
resolve fail their own entry only; the rest of the batch still returns.

## Request body

- BatchOddsRequest
  - `event_ids` string[], required: Event ids to fetch, 1-20 per call. Order is preserved and each id gets exactly one entry back, so the response lines up with what you sent.
  - `bookmakers` string, nullable: comma-separated bookmaker keys
  - `markets` string, nullable: comma-separated market types
  - `period` string, nullable: full_time | half_time
  - `format` string: odds format for every entry

## Response `200`

Successful Response

- BatchOddsResponse
  - `count` integer, required: Entries returned — always equals the number of ids you sent.
  - `ok_count` integer, required: How many entries carry odds rather than an error.
  - `data` BatchOddsEntry[], required
    - `event_id` string, required
    - `odds` OddsBlock
      - `event_id` string, required
      - `as_of` string, required
      - `stale` boolean, required
      - `odds` OddsQuote[], required
        - `bookmaker` string, required
        - `market_type` string, required
        - `period` string, required
        - `line` number, nullable
        - `handicap_components` number[], nullable
        - `prices` object, required
        - `format` string
        - `status` string, required
        - `as_of` string, required
    - `error` BatchOddsError: Per-entry failure, mirroring the top-level error envelope's shape.
      - `code` string, required
      - `message` string, required
      - `fix` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/infersports/apis/infersports-api.md) · [All operations](https://skmtc.dev/infersports/apis/infersports-api/llms.txt) · [OpenAPI document](https://skmtc.dev/infersports/apis/infersports-api/revisions/1a1c3b357ea7?raw)
