---
title: "Submit Video"
method: POST
path: "/api/v1/videos"
tags: ["Videos"]
---

# Submit Video

`POST /api/v1/videos`

Submit a video for AI processing.

When VIDEO_ENDPOINTS_LIVE is False, returns a preview response without DB writes.

## Headers

- `x-api-key` string, nullable
- `League` string, nullable

## Request body

- union — Request schema for Glory League video submission (POST /api/v1/videos).
  - object
    - `video_uuid` string, uuid, nullable — Client-provided video UUID (auto-generated if omitted)
    - `org_id` string, nullable — Optional organization id retained for future organization-level billing. It is not the billing key while billing is per user.
    - `org_name` string, nullable — Optional organization or account display name retained for future organization-level billing.
    - `jwt` string, nullable — Short-lived token Glory League issued for this user; stored for reference when the account is first seen.
    - `user_id` string, uuid, nullable, required — Glory League user UUID. This is the current billing key: the user's wallet is charged and topped up using this value. New integrations must send it; org_id-only requests remain accepted temporarily for backward compatibility.
    - `video_url` string, required — URL to retrieve the video
    - `home_team_uuid` string, uuid, nullable — Home team UUID (optional for URL-only submissions)
    - `home_team_name` string — Home team name
    - `home_team_score` integer, nullable — Home team score
    - `home_team_roster` GLRosterItem[], nullable — Home team roster
      - `jersey_number` string, required — Player jersey number
    - `away_team_uuid` string, uuid, nullable — Away team UUID (optional for URL-only submissions)
    - `away_team_name` string — Away team name
    - `away_team_score` integer, nullable — Away team score
    - `away_team_roster` GLRosterItem[], nullable — Away team roster
      - `jersey_number` string, required — Player jersey number
    - `billing_tier` string, nullable — Billing tier identifier
    - `game_date` string, nullable — Game date (YYYY-MM-DD)
    - `description` string — Game/venue description
    - `home_team_color` string — Home team jersey color (hex, e.g. '#FF0000')
    - `away_team_color` string — Away team jersey color (hex, e.g. '#0000FF')
  - object
    - `video_uuid` string, uuid, nullable — Client-provided video UUID (auto-generated if omitted)
    - `org_id` string, nullable, required — Optional organization id retained for future organization-level billing. It is not the billing key while billing is per user.
    - `org_name` string, nullable — Optional organization or account display name retained for future organization-level billing.
    - `jwt` string, nullable — Short-lived token Glory League issued for this user; stored for reference when the account is first seen.
    - `user_id` string, uuid, nullable — Glory League user UUID. This is the current billing key: the user's wallet is charged and topped up using this value. New integrations must send it; org_id-only requests remain accepted temporarily for backward compatibility.
    - `video_url` string, required — URL to retrieve the video
    - `home_team_uuid` string, uuid, nullable — Home team UUID (optional for URL-only submissions)
    - `home_team_name` string — Home team name
    - `home_team_score` integer, nullable — Home team score
    - `home_team_roster` GLRosterItem[], nullable — Home team roster
      - `jersey_number` string, required — Player jersey number
    - `away_team_uuid` string, uuid, nullable — Away team UUID (optional for URL-only submissions)
    - `away_team_name` string — Away team name
    - `away_team_score` integer, nullable — Away team score
    - `away_team_roster` GLRosterItem[], nullable — Away team roster
      - `jersey_number` string, required — Player jersey number
    - `billing_tier` string, nullable — Billing tier identifier
    - `game_date` string, nullable — Game date (YYYY-MM-DD)
    - `description` string — Game/venue description
    - `home_team_color` string — Home team jersey color (hex, e.g. '#FF0000')
    - `away_team_color` string — Away team jersey color (hex, e.g. '#0000FF')

## Response `200`

Successful Response

- GLVideoSubmitResponse — Response schema for Glory League video submission.
  - `success` boolean, required — Whether the submission was successful
  - `video_uuid` string, required — Stable video identifier for status/results calls. Echoes the caller's video_uuid, or contains the server-generated UUID when it was omitted.
  - `message` string, required — Status message
  - `status` string, required — Current processing status
  - `created_at` string, date-time, required — Timestamp of submission

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/preciser/apis/preciser-data-management-api.md) · [All operations](https://skmtc.net/preciser/apis/preciser-data-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/preciser/preciser-data-management-api/revisions/16e2b6a1c2bb/schema)
