---
title: "Queue a cloud render"
method: POST
path: "/api/v1/projects/{projectId}/renders"
tags: ["Rendering"]
---

# Queue a cloud render

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

## Request

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

Queue a durable MP4 render from any ready owned moment set. Choose aspect ratio, framing and camera motion, caption style and appearance, saved branding, intro/outro cards, audio visualization, and an optional ordered passage subset. Use idempotency_key for safe retries.

## Path parameters

- `projectId` string, uuid, required

## Headers

- `Idempotency-Key` string: Stable retry key; reusing it with different settings is rejected

## Request body

- object
  - `moment_set_id` string, uuid, required: Owned ready moment-set ID; active selection is not required
  - `aspect_ratio` 'original' | '16:9' | '1:1' | '9:16', required
  - `framing` 'full-frame' | 'background-fill' | 'tracked', required
  - `captions` boolean, required
  - `caption_style` 'progressive' | 'page' | 'scroll', required
  - `caption_size` 'standard' | 'large'
  - `caption_appearance` object
    - `font` 'Inter' | 'Arial' | 'Georgia' | 'Impact' | 'Montserrat' | 'Verdana'
    - `text_color` string
    - `accent_color` string
    - `outline_color` string
  - `style_preset_id` string: Owned saved preset ID, or default
  - `tracking_motion` 'cut' | 'fast-pan' | 'smooth-follow', required
  - `transition` 'hard-cut' | 'fade', required
  - `intro_enabled` boolean
  - `outro_enabled` boolean
  - `audio_motion` 'waveform' | 'bars' | 'pulse'
  - `audio_background_color` string
  - `audio_waveform_color` string
  - `crop_analysis_id` string, uuid: Completed framing analysis ID returned by analyze_framing
  - `segment_ids` string[]: Ordered subset of passage IDs; omit to render every passage
  - `idempotency_key` string: Stable retry key; reusing it with different settings is rejected

## Response `202`

Queued render state, media URLs, and provenance identifiers.

- object
  - `render` object, required
    - `id` string, uuid, required
    - `projectId` string, uuid, required
    - `momentSetId` string, uuid, required
    - `aspectRatio` string, required
    - `framing` string, required
    - `cropAnalysisId` string, uuid, nullable, required
    - `captions` boolean, required
    - `captionStyle` string, required
    - `transition` string, required
    - `renderTarget` 'cloud', required
    - `segmentIds` string[], required
    - `status` string, required
    - `progressPercent` integer, required
    - `error` string, nullable, required
    - `createdAt` string, required: ISO 8601 timestamp
    - `updatedAt` string, required: ISO 8601 timestamp
    - `rendererVersion` string, nullable, required
    - `downloadUrl` string, nullable, required
    - `previewUrl` string, nullable, required
    - `provenance` object, required
      - `projectId` string, uuid, required
      - `momentSetId` string, uuid, required
      - `segmentIds` string[], required
      - `rendererVersion` string, nullable, required

## Other responses

- `400`: Render settings or selected passages are invalid.
- `401`: The API key is missing or invalid.
- `403`: The API key lacks renders:write.
- `404`: The owned project or moment set was not found.
- `409`: The project, moment set, framing analysis, transcript, or source is not ready.
- `429`: The API-key rate limit was exceeded.
- `503`: Background rendering or storage is 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)
