---
title: "Render the clip (MP4) with its current edit"
method: POST
path: "/api/clips/{id}/export"
tags: ["clips"]
---

# Render the clip (MP4) with its current edit

`POST /api/clips/{id}/export`

## Request

- Base URL: `https://cliponit.app`
- URL: `https://cliponit.app/api/clips/{id}/export`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `session`
  - OAuth 2 (authorization code, authorization URL `https://cliponit.app/oauth/authorize`, token URL `https://cliponit.app/oauth/token`, scopes: `clips`)

The edit row is created with the account subtitle preset if the clip was never edited; the export carries `eta_s`. Enqueues a render job and returns the export with `status: queued`. Poll `getExport` every ~5 s until `done` (then `url`) or `failed` (`error`). A 60 s clip renders in ~30-90 s. 403 on the free plan for the demo video.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `orientation` 'vertical' | 'horizontal' | 'square' | 'portrait45': vertical = 9:16 1080x1920 (TikTok/Reels/Shorts), horizontal = 16:9 1920x1080 (YouTube), square = 1:1 1080x1080 (feed), portrait45 = 4:5 1080x1350 (Instagram feed). auto-reframe supports vertical|horizontal only.

## Response `200`

Export (queued)

- Export
  - `id` string, uuid, required
  - `clip_id` string, uuid, required
  - `user_id` string, uuid
  - `orientation` 'vertical' | 'horizontal' | 'square' | 'portrait45', required: vertical = 9:16 1080x1920 (TikTok/Reels/Shorts), horizontal = 16:9 1920x1080 (YouTube), square = 1:1 1080x1080 (feed), portrait45 = 4:5 1080x1350 (Instagram feed). auto-reframe supports vertical|horizontal only.
  - `status` 'queued' | 'running' | 'done' | 'failed' | 'canceled', required
  - `progress` integer, required: Render progress in %
  - `eta_s` number, nullable: Estimated seconds left while `queued`/`running`: moving-average render ratio of the last 10 finished exports × (remaining clip seconds + clips ahead in the queue); null otherwise
  - `started_at` string, nullable
  - `finished_at` string, nullable
  - `url` string, nullable: `/files/exports/<id>.mp4` once `done` (relative to the server base URL)
  - `output_path` string, nullable
  - `error` string, nullable
  - `created_at` string, required

## Other responses

- `403`: Feature not included in the user's plan (upgrade at /billing)
- `404`: Resource not found or not owned by the user

---

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