---
title: "Export Project"
method: POST
path: "/project/{project_id}/export"
tags: ["accepts-api-key"]
---

# Export Project

`POST /project/{project_id}/export`

## Request

- Base URL: `https://api.tellers.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tellers.ai/project/{project_id}/export`
- Auth: none declared

Start async export of project to MP4 at one or more resolutions. Creates the export asset
in the API, then enqueues a task that browser-encodes the highest requested resolution.
Smaller renditions are enqueued as downscaling_task jobs (not chained). The export
appears as a new video asset in the project's export folder (project name + date + .mp4).

``track_ids`` renders only those tracks; every track is rendered without it.

``start_time`` / ``end_time`` (timeline seconds, either optional) render only
``[start_time, end_time)``; the file starts at 0. 400 when either is negative,
when ``end_time`` is not after ``start_time``, or when ``start_time`` is at or
past the end of the timeline. A long range is rendered in parts cut on whole
frames, so its start is rounded up to the next 1/30 s.

``hdr`` encodes HLG HDR video (VP9 profile 2, 10-bit, BT.2020, in MP4) rather
than SDR H.264. It is refused (400) with more than one rendition: the smaller
renditions are made by re-encoding the master, which tone-maps it to SDR H.264,
so they would not be HDR. Ask for each size as its own HDR export instead. It
is refused at 4k too, and renders far slower than an SDR export (about 40
times at 1080p).

Returns task_id and asset_id. Poll GET /users/tasks/{task_id} for completion; result includes asset_id.

## Path parameters

- `project_id` string, uuid, required

## Query parameters

- `track_ids` string[], nullable: Ids of the timeline tracks to render (repeat the parameter for each). Every other track is left out of this export only; the project is not changed. A video track carries no sound: its audio sits on its own audio track, which is left out unless listed too. Omit to render every track.
- `start_time` number, nullable: Timeline time, in seconds, the export starts at. Omit to start at the beginning of the timeline.
- `end_time` number, nullable: Timeline time, in seconds, the export ends at (excluded). Omit to end with the timeline; a time past its end stops there.
- `hdr` boolean: Encode the video as HDR (HLG, BT.2020, VP9 10-bit in MP4) instead of SDR H.264. Takes a single rendition, at most 1080p. Plays in Chrome, Firefox, VLC and YouTube, not in QuickTime.

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Request body

- string[]: List of resolutions to export (e.g. ["720p", "1080p"])

## Response `200`

Successful Response

- ExportProjectResponse: Response for POST /project/{project_id}/export: task_id and the new export asset_id.
  - `task_id` string, required
  - `asset_id` string, required

## Other responses

- `422`: Validation Error

---

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