---
title: "Get Source Video"
method: GET
path: "/api/source/{job_id}"
---

# Get Source Video

`GET /api/source/{job_id}`

## Request

- Base URL: `https://api.openshorts.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openshorts.app/api/source/{job_id}`
- Auth: none declared

Stream a job's original source video for the live-analysis preview and
the clip editor's source monitor.

Uploaded sources are blob URLs in the browser and don't survive a reload,
so the recovered session points the preview here instead.

This one endpoint serves the untouched original, which for a URL job is the
file we downloaded. Left open it is a public downloader wearing a UUID, so
a cloud job with an owner needs either a signed URL from /api/source-url or
a bearer token on the request. Self-host and ownerless BYOK jobs are
unchanged: there is no owner to check and no secret to sign with.

## Path parameters

- `job_id` string, required

## Query parameters

- `exp` integer
- `sig` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/openshorts/apis/openshorts-api.md) - [All operations](https://skmtc.dev/openshorts/apis/openshorts-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openshorts/apis/openshorts-api/revisions/62b7629b5e88?raw)
