---
title: "Start a new video upload"
method: POST
path: "/v1/video_upload_requests"
tags: ["Video Upload Requests"]
---

# Start a new video upload

`POST /v1/video_upload_requests`

## Request body

- CreateVideoUploadRequestInput
  - `visit_id` string, required
  - `file_name` string, required
  - `file_size_bytes` integer, required

## Response `200`

OK

- CreateVideoUploadRequestResponse
  - `video_upload_request` VideoUploadRequestWithUploadUrlExternalSchema, required — Extended schema that includes a presigned upload URL. Used for create and single-resource GET responses where the caller needs the URL to upload to S3. The presigned URL must be passed explicitly — it is never generated inside the schema.
    - `id` string, required
    - `status` 'pending' | 'started' | 'done' | 'failed' | 'ignored' | 'cancelled', required — Customer-facing upload request statuses, lowercase for external API consistency.
    - `file_name` string, nullable, required — Original file name of the upload.
    - `file_size_bytes` integer, required — Declared file size in bytes.
    - `created_at` string, date-time, required
    - `completed_at` string, date-time, nullable, required — When the upload was marked as completed, if applicable.
    - `upload_url` string, nullable, required — Presigned S3 PUT URL for uploading the file. Expires after 24 hours. Null for completed or cancelled upload requests.

---

[API](https://skmtc.net/navigateai/apis/navigateai-api.md) · [All operations](https://skmtc.net/navigateai/apis/navigateai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/navigateai/navigateai-api/revisions/5fb236d03a88/schema)
