---
title: "Create Video Job"
method: POST
path: "/v1/video-jobs"
tags: ["video-jobs"]
---

# Create Video Job

`POST /v1/video-jobs`

Create a placeholder `interview_templates` row (status='processing')
AND a `video_template_jobs` row pointing at it, in a single transaction.

Returns both the new template_id (for the UI to navigate to) and the
job row (for the progress page's initial state).

## Request body

- CreateJobRequest
  - `source_kind` string — One of 'youtube', 'upload', 'gdrive', 'direct_url'. Defaults to 'upload'.
  - `sources` SourceSpec[] — Multi-source corpus: several already-uploaded files of any kind (videos, PDFs, docs, existing SOPs). When provided, supersedes the single source_* fields. Each file is classified and processed by type, then synthesized together into one template.
    - `s3_key` string, required
    - `filename` string
    - `content_type` string
  - `source_url` string, nullable
  - `source_s3_key` string, nullable
  - `job_slug` string, nullable — Optional kebab-case slug. Auto-derived from the source if omitted. Also used as the default template name fragment.
  - `template_name` string, nullable — Optional friendly template name. Defaults to 'Template from <slug>'.
  - `source_instruction` string, nullable — Optional focusing instruction ('extract the process for doing X'). Scopes synthesis to the requested process; recording content outside that scope is treated as noise. Empty => no scoping.
  - `run_evals` boolean — Whether to run the 3 eval scenarios after template creation.

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
