---
title: "Preview a project"
method: GET
path: "/projects/{id}/preview"
tags: ["Rendering"]
---

# Preview a project

`GET /projects/{id}/preview`

## Request

- Base URL: `https://api.vidmoat.com/v1`
- URL: `https://api.vidmoat.com/v1/projects/{id}/preview`
- Auth: HTTP bearer

Metadata and layout lint (default), approximate composition HTML, or an exact rendered frame. For live playback with the app compositor, use the embedded player described in the video-preview guide.

format=json without `at` is cheap and starts no browser. A frame (format=image, or any request with `at`) launches Chromium and carries its own limit of 10 a minute per key, on top of your plan rate.

## Path parameters

- `id` string, required

## Query parameters

- `format` 'json' | 'image' | 'html'
- `at` number
- `resolution` 'full' | 'half'

## Response `200`

Preview a project

- object
  - `projectId` string: The project.
  - `durationSec` number: Timeline length.
  - `canvas` object: `{ width, height, fps }`.
  - `composition` object: `{ url, contentType, timelineHandle, seekExample }`: the HTML composition and how to seek it.
  - `frame` object: Without `at`: `{ url, imageUrl, note }`. With `at`: `{ at, url, dataUri, width, height }`.
  - `lint` unknown[]: Layout warnings: `{ severity: "warn" | "note", time, message }`.
    - unknown
  - `suggestedPreviewTimes` number[]: Timestamps worth looking at with the preview endpoint before you render.

## Other responses

- `400`: `invalid_request`: A frame was asked for but the project has no clips, or `at` is negative.
- `404`: `not_found`: No such project, or it is not yours. The two are indistinguishable on purpose.
- `429`: `rate_limited`: More than 10 frames a minute on this key. `retryAfterSec` says how long to wait.
- `502`: `provider_error`: The frame failed to render.

---

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