---
title: "Export project transcript"
method: POST
path: "/export/transcript"
tags: ["API Endpoints"]
---

# Export project transcript

`POST /export/transcript`

Export the transcript from a project composition.

Supports plain text, Markdown, HTML, RTF, DOCX, and SRT (SubRip subtitle) formats.
Options include speaker labels, timecodes, and markers.

The response body is the raw transcript file (binary for `docx`,
text otherwise) with a `Content-Disposition: attachment` header and
an `X-Composition-Id` header identifying the exported composition.

## Request body

- object — Request to export the transcript from a project composition.
  - `project_id` string, uuid, required — The ID of the project to export from.
  - `composition_id` string, uuid — The ID of the composition to export. Defaults to the first composition.
  - `format` 'txt' | 'markdown' | 'html' | 'rtf' | 'docx' | 'srt', required — Transcript file format. The response body is the raw transcript file in the requested format (binary for `docx`, plain text otherwise). The `srt` format exports a SubRip subtitle file with timed captions.
  - `include_speaker_labels` 'off' | 'changes' | 'every_paragraph' — Speaker label mode. - `off`: No speaker labels - `changes`: Show speaker label when the speaker changes - `every_paragraph`: Show speaker label on every paragraph
  - `include_markers` boolean — Include markers in the transcript.
  - `timecodes` object — Timecode options. When provided, timecodes are included in the output.
    - `frequency_seconds` number — Interval in seconds for timecode insertion.
    - `on_paragraphs` boolean — Show timecodes at paragraph breaks.
    - `on_speakers` boolean — Show timecodes at speaker changes.
    - `on_markers` boolean — Show timecodes at markers.
    - `offset_seconds` number — Offset in seconds applied to all timecodes.

## Response `200`

Transcript exported successfully. The response body is the raw
transcript file with the appropriate Content-Type for the
requested format.

The `X-Composition-Id` response header contains the composition
UUID that was exported.

## Other responses

- `400` — Invalid input
- `401` — Unauthorized
- `403` — Forbidden
- `429` — Too many requests - rate limit exceeded. Use the `Retry-After` header to determine when to retry.

---

[API](https://skmtc.dev/descriptapi/apis/descript-api.md) · [All operations](https://skmtc.dev/descriptapi/apis/descript-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/descriptapi/descript-api/revisions/04c0005aef70/schema)
