> ## Documentation Index
> Fetch the complete documentation index at: https://docs.uplift.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Game Tracking

> Returns every player and the ball per frame for one period, at the video's frame rate. Because a period is large (a 45-minute half at 30 fps is about 1.9 million rows), the response is a redirect to a zstd-compressed Parquet file.

> [!WARNING]
>
> The Game Data API is in preview. Endpoints, fields and limits may change before release, and it is not yet available to call.

The response is a redirect to a temporary download link for the period's file. The link expires 30 minutes after the request; call the endpoint again for a new one.

### File contents

One row per player, or the ball, per frame.

**frame** `integer`

Video frame number.

**time\_s** `number`

Seconds from the start of the period.

**object\_id** `string`

`player_id`, or `ball`.

**team\_id** `string`

The player's team; empty for the ball.

**x** `number`

Pitch metres along the length, from the centre spot. Tracking uses the fixed pitch: coordinates are not turned to each team's attacking direction.

**y** `number`

Pitch metres across the width, from the centre spot.

**z** `number`

Ball height in metres; empty for players.

**speed\_mps** `number`

Speed in metres per second.

**in\_frame** `boolean`

`false` when the position is estimated while the player was off screen.


## OpenAPI

````yaml api-reference/game-data/openapi.json GET /games/{game_id}/tracking
openapi: 3.0.0
info:
  title: Uplift Game Data API (Preview)
  version: v1
  description: >-
    Events, phases, possessions, physical summaries and tracking from match
    video. In preview: not yet available.
servers:
  - url: https://api.uplift.ai/v1
security: []
paths:
  /games/{game_id}/tracking:
    get:
      tags:
        - Game Data
      summary: Get Game Tracking
      description: >-
        Returns every player and the ball per frame for one period, at the
        video's frame rate. Because a period is large (a 45-minute half at 30
        fps is about 1.9 million rows), the response is a redirect to a
        zstd-compressed Parquet file.
      parameters:
        - name: game_id
          in: path
          required: true
          description: Game identifier. The game must belong to your organization.
          schema:
            type: string
            format: uuid
        - name: period
          in: query
          required: true
          description: The period to return.
          schema:
            type: integer
            minimum: 1
            maximum: 5
      responses:
        '302':
          description: >-
            Redirect to a temporary download link for the period's Parquet file.
            The link expires 30 minutes after the request; call the endpoint
            again for a new one. One row per player or ball per frame with
            columns `frame`, `time_s`, `object_id`, `team_id`, `x`, `y`, `z`,
            `speed_mps` and `in_frame`.
          headers:
            Location:
              description: Pre-signed link to the Parquet file.
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: NotFound
                message: >-
                  The specified game_id was not found, or the period has no
                  tracking.
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  responses:
    BadRequest:
      description: Invalid request parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: BadRequest
            message: >-
              The request parameters are invalid. Please review the request and
              try again.
    Unauthorized:
      description: Unauthorized. Bearer token is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized
            message: Bearer token is missing or invalid.
    Forbidden:
      description: Forbidden. You do not have permission to access this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Forbidden
            message: You do not have permission to access this resource.
    TooManyRequests:
      description: Too Many Requests. The rate limit has been exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: TooManyRequests
            message: The rate limit has been exceeded. Please wait and try again later.
    InternalServerError:
      description: Internal Server Error. Something went wrong on the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: InternalServerError
            message: >-
              An unexpected error occurred on the server. Please try again
              later.
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: A short error code representing the type of error.
        message:
          type: string
          description: A detailed message explaining the error.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.