REST API ReferenceEndpointsProjects

Get project export

Returns the current status of a project export started via `POST /v1/projects/{projectId}/export`, and — once `status` is `succeeded` — the signed download/thumbnail URLs and the hydrated export `file`. Poll this endpoint until `status` is `succeeded`, `failed`, or `cancelled`. The signed URLs are private and valid for 7 days; this endpoint automatically re-signs them when they are within an hour of expiring, so a caller always receives a URL valid long enough to use. Every endpoint that returns hydrated files auto-rehydrates this way — only the file endpoints (`GET /v1/files/{fileId}` and `POST /v1/files/{fileId}/hydrate`) are the explicit, on-demand hydration paths. Use `exportFileId` with `POST /v1/files/{fileId}/hydrate` if you need to re-sign the export file directly later.

Authentication

AuthorizationBearer
API key from [app.videogen.io/api](https://app.videogen.io/api). The full key is only shown once when you create it.

Path parameters

projectIdstringRequired

The project id (e.g. vg_proj_...).

exportIdstringRequired

The export id (e.g. vg_expo_...) returned by POST /v1/projects/{projectId}/export.

Response

Export status.
exportIdstring

Opaque export id (e.g. vg_expo_...) matching the original request.

projectIdstring

Id of the exported project (e.g. vg_proj_...).

statusenum

Lifecycle status shared by every asynchronous job (tool executions, workflow runs, remix actions, project exports, and timeline interchange jobs). pending and running are in-progress; succeeded, failed, and cancelled are terminal.

progressPercentagedouble0-100

Completion progress for the current attempt (0-100). Always 100 when status is succeeded.

attemptIndexinteger>=0

Zero-based index of the current or most recent export attempt.

downloadUrlstring or nullformat: "uri"

Private signed MP4 download URL, valid for 7 days from when it was signed. Always present as a field; null until status is succeeded. This endpoint automatically re-signs the URL when it is within an hour of expiring, so a fresh call to get the export always returns a URL valid long enough to use. See downloadUrlExpiresAt for the exact expiry. To fetch a fresh URL directly from the underlying file at any time, use exportFileId with the hydrate-file endpoint.

downloadUrlExpiresAtinteger or null

Seconds since epoch (Unix timestamp) when downloadUrl expires. null while downloadUrl is null.

thumbnailUrlstring or nullformat: "uri"

Private signed thumbnail URL, valid for 7 days from when it was signed. Always present as a field; null until status is succeeded (and when no thumbnail is available). Re-signed automatically on the same terms as downloadUrl.

thumbnailUrlExpiresAtinteger or null

Seconds since epoch (Unix timestamp) when thumbnailUrl expires. null while thumbnailUrl is null.

exportFileIdstring or null

File id (e.g. vg_file_...) of the exported MP4. Always present as a field; null until status is succeeded. Pass it to POST /v1/files/{fileId}/hydrate to fetch fresh signed URLs directly from the file at any time, which is useful once the 24-hour URLs above have expired.

fileobject or null

Hydrated export file metadata with signed download URLs. Always present as a field; null until status is succeeded. Its signed URLs follow the same 24-hour validity and automatic re-signing as downloadUrl.

errorobject or null

Error details. Always present as a field; null unless status is failed.