---
title: "Submit a Video Assistant Referee request"
method: POST
path: "/v1/edge/var-requests"
tags: ["Edge VAR Requests"]
---

# Submit a Video Assistant Referee request

`POST /v1/edge/var-requests`

## Request

- Base URL: `https://api.hify.club`
- URL: `https://api.hify.club/v1/edge/var-requests`
- Auth: API key in header `X-User-Token`

Accepts a recorded clip URL + camera id, persists a VarRequest, and enqueues a background job that calls the Intelligence DRS service (Modal-hosted, ~30-60s). The response returns immediately with {id, status:"pending"}.
Clients should then open a WebSocket connection to /cable and subscribe to VarRequestChannel with the returned id to receive every state transition (processing -> completed with playback_url, or failed with error). See the /cable path for the subscription contract.
The VarRequest is owned by the authenticated user. Only that user can subscribe to its channel.

## Request body

- object
  - `var_request` object, required
    - `playlist_url` string, required: HLS playlist (m3u8) URL of the recorded clip to analyze.
    - `camera_id` string, required

## Response `201`

VAR request accepted and queued for processing.

- VarRequest
  - `id` string, uuid: VarRequest identifier; used as the subscription id on the VarRequestChannel.
  - `status` 'pending' | 'processing' | 'completed' | 'failed'
  - `playback_url` string, nullable: Rendered overlay video URL. Present only when status is "completed".
  - `error` string, nullable: Failure reason (sourced from VarRequest.error_message). Present only when status is "failed".

## Other responses

- `400`: Missing var_request key in body.
- `401`: Unauthorized — missing or invalid X-User-Token.
- `403`: Forbidden — caller is not a player.

---

[API](https://skmtc.dev/hify/apis/hify-apis.md) - [All operations](https://skmtc.dev/hify/apis/hify-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/hify/apis/hify-apis/revisions/b5920403538d?raw)
