> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.videogen.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.videogen.io/_mcp/server.

# Export a project as MP4

POST https://api.videogen.io/v1/projects/{projectId}/export
Content-Type: application/json

Starts an export of a project to MP4. Returns immediately with an export id; the file becomes available when the export task completes. Exporting requires a paid plan in the app, but the API lets you export for free with a VideoGen watermark and a short 'Made with VideoGen' end screen appended to the video. A Pro plan lets you remove both by setting `watermarkMode` and `endScreenMode` to `NONE`.

Reference: https://docs.videogen.io/rest-api-reference/projects/export-project

## Authentication

- `Authorization` header (bearer token, required) — API key from [app.videogen.io/api](https://app.videogen.io/api). The full key is only shown once when you create it.

## Request

### Path parameters

- `projectId` (string, required) — The project id (e.g. `vg_proj_...`).

### Body (application/json)

This endpoint expects an ExportProjectRequest.

- `quality` (enum, optional) — Vertical resolution tier for the rendered MP4.
  - Allowed values: `STANDARD`, `HIGH`, `FULL_HIGH`, `ULTRA_HIGH`
- `watermarkMode` (enum, optional, default: AUTO) — Controls whether the VideoGen watermark is applied to the output. `AUTO` applies the watermark unless you have a Pro plan. `VIDEO_GEN` always applies it. `NONE` removes the watermark (requires Pro; returns an error if you don't have it).
  - Allowed values: `NONE`, `VIDEO_GEN`, `AUTO`
- `endScreenMode` (enum, optional, default: AUTO) — Controls whether a short 'Made with VideoGen' end screen is appended to the output. `AUTO` appends it unless you have a Pro plan. `VIDEO_GEN` always appends it. `NONE` removes it (requires Pro; returns an error if you don't have it).
  - Allowed values: `NONE`, `VIDEO_GEN`, `AUTO`
- `deliveryDestinations` (list of ExportDeliveryDestination, optional) — Destinations to deliver the finished export to when it completes, in addition to any delivery destinations already saved for the team. Each destination references a connected integration.

## Response

### 202

Export accepted.

- `exportId` (string, required) — Opaque export id (e.g. `vg_expo_...`). Poll `GET /v1/projects/{projectId}/exports/{exportId}` or subscribe to webhooks for completion.

## Types

### ExportDeliveryDestination

- `integrationConnectionId` (string, required) — Id of the connected integration that will receive this export.
- `type` (enum, required) — Where to deliver the export within the connected integration.
  - Allowed values: `SLACK_CHANNEL`, `GOOGLE_DRIVE_FOLDER`
- `slackChannelId` (string, optional, nullable) — Target channel id. Required when `type` is `SLACK_CHANNEL`.
- `googleDriveFolderId` (string, optional, nullable) — Target folder id. Required when `type` is `GOOGLE_DRIVE_FOLDER`.

## Examples

**Request**

```json
{
  "quality": "FULL_HIGH",
  "watermarkMode": "AUTO"
}
```

**Response**

```json
{
  "exportId": "vg_expo_4bHn8pR2sY5xM1vL3tC7wd"
}
```

**SDK Code**

```typescript
import { VideoGen } from "@videogen/sdk";

const client = new VideoGen({ apiKey: "sk_videogen_live_..." });

await client.projects.exportProject({
  projectId: "vg_proj_9dTk3mQ1rZ7xP4vN2sB6wc",
  quality: "FULL_HIGH",
  watermarkMode: "AUTO",
});
```

```python
from videogen import VideoGen

client = VideoGen(api_key="sk_videogen_live_...")

client.projects.export_project(
    project_id="vg_proj_9dTk3mQ1rZ7xP4vN2sB6wc",
    quality="FULL_HIGH",
    watermark_mode="AUTO",
)
```