---
title: "Plays"
method: POST
path: "/v1/get_plays"
tags: ["Multi-table"]
---

# Plays

`POST /v1/get_plays`

## Request

- Base URL: `https://mcp.endzoneapi.com`
- URL: `https://mcp.endzoneapi.com/v1/get_plays`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Use for play-by-play with advanced metrics: EPA, WPA, win probability, success, CPOE, air yards, formation flags, and the players involved. Filter by game, or by season plus week/team/player, plus play type, down, quarter, win-probability band, red zone, third down. Returns a per-query EPA and success-rate summary. Paginate with offset. Costs 10 credits.

## Request body

- object
  - `game_id` string: Game id, e.g. 2025_01_KC_BUF
  - `season` union: Season year (required when game_id is not set)
    - string
    - number
  - `week` integer: Week
  - `posteam` string: Offense team code
  - `defteam` string: Defense team code
  - `play_type` 'pass' | 'run' | 'punt' | 'kickoff' | 'field_goal' | 'extra_point' | 'qb_kneel' | 'qb_spike' | 'no_play': Play type
  - `down` integer: Down
  - `quarter` integer: Quarter (5+ = overtime)
  - `passer_id` string: GSIS id of the passer
  - `rusher_id` string: GSIS id of the rusher
  - `receiver_id` string: GSIS id of the receiver
  - `min_wp` number: Minimum pre-play win probability for the offense
  - `max_wp` number: Maximum pre-play win probability
  - `red_zone` boolean: Only plays inside the 20
  - `third_down` boolean: Only third downs
  - `limit` integer: Max plays (default 200)
  - `offset` integer: Pagination offset

## Response `200`

The result, wrapped in data.

- object
  - `data` object, required
    - `plays` object[], required
      - `game_id` string, required
      - `play_id` number, required
      - `season` number, nullable
      - `week` number, nullable
      - `posteam` string, nullable
      - `defteam` string, nullable
      - `qtr` number, nullable
      - `down` number, nullable
      - `ydstogo` number, nullable
      - `yardline_100` number, nullable
      - `play_type` string, nullable
      - `desc` string, nullable
      - `yards_gained` number, nullable
      - `epa` number, nullable
      - `wpa` number, nullable
      - `wp` number, nullable
      - `success` number, nullable
      - `touchdown` number, nullable
      - `passer_player_name` string, nullable
      - `rusher_player_name` string, nullable
      - `receiver_player_name` string, nullable
    - `summary` object, required
    - `count` number, required
    - `next_offset` number, nullable, required
    - `note` string

## Other responses

- `400`: Invalid arguments.
- `401`: Missing or invalid API key.
- `402`: Not enough credits.
- `429`: Rate limited.

---

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