---
title: "Prepare recording"
method: POST
path: "/api/v1/projects/{projectId}/prepare"
tags: ["Jobs"]
---

# Prepare recording

`POST /api/v1/projects/{projectId}/prepare`

## Request

- Base URL: `https://prismclip.com`
- URL: `https://prismclip.com/api/v1/projects/{projectId}/prepare`
- Auth: HTTP bearer

Prepare an uploaded or imported recording entirely inside PrismClip. Probes media, transcribes speech with word timings, and optionally indexes visual scenes. No local codecs, provider keys, or browser required. Returns a durable job; poll get_workflow.

## Path parameters

- `projectId` string, uuid, required

## Headers

- `Idempotency-Key` string, required

## Request body

- object
  - `transcript` boolean, required: Prepare a timed transcript internally; silent media produces an empty transcript
  - `visual` boolean, required: Also prepare a visual scene index for visual or mixed moment selection

## Response `202`

Durable workflow state; poll get_workflow until terminal.

- object
  - `job` object, required
    - `id` string, uuid, required
    - `projectId` string, uuid, required
    - `kind` 'prepare' | 'framing' | 'generate', required
    - `status` string, required
    - `stage` string, required
    - `errorCategory` string, nullable, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `replayed` boolean, required
    - `pollAfterSeconds` integer, required
    - `result` object, required
      - `analysisId` string, uuid
      - `candidates` object[]
        - `id` string, uuid, required
        - `momentSetId` string, uuid, required
        - `title` string, required
        - `startMs` number, required
        - `endMs` number, required
        - `captions` boolean, required
      - `renders` object[]
        - `id` string, uuid, required
        - `momentSetId` string, uuid, required
        - `status` string, required
        - `downloadUrl` string, nullable, required
        - `previewUrl` string, nullable, required

## Other responses

- `400`: Invalid input.
- `401`: Authentication required.
- `402`: Source allowance exhausted.
- `403`: Required scope missing.
- `404`: Owned resource not found.
- `409`: Prerequisite unavailable or idempotency key reused with changed inputs.
- `429`: Rate limit exceeded.
- `503`: Processing unavailable.

---

[API](https://skmtc.dev/prismclip/apis/prismclip-api.md) · [All operations](https://skmtc.dev/prismclip/apis/prismclip-api/llms.txt) · [OpenAPI document](https://skmtc.dev/prismclip/apis/prismclip-api/revisions/05eda9436f1d?raw)
