Objects
Many operations return the same kinds of objects. Reading, creating and updating a project all return the same project object. This page describes each shared object once. The page of an operation shows its own example and links here when its response contains one of these objects.
How objects behave
- Ids start with a prefix that tells you what they are, for example
prj_for a project andjob_for a job. Treat an id as plain text and send it back as you received it. - Times are ISO 8601 strings in UTC.
- A field that does not apply is
null. It is not left out, so a program can read the same fields every time. - New fields can appear in responses at any time. Ignore the ones you do not know.
- An id that belongs to another account answers
NOT_FOUND, the same as an id that does not exist.
IDs, at the end of this page, lists every prefix with the operations that return each kind of id and the ones that take it.
The objects
Each object below lists its fields, with the type and what the field means, and the operations that return it.
Project
Returned in the field project by create_project (POST /v1/projects), update_project (PATCH /v1/projects/{projectId}), create_split_screen_project (POST /v1/projects/split-screen), update_split_screen_project (PATCH /v1/projects/{projectId}/split-screen), create_streamer_project (POST /v1/projects/streamer), update_streamer_project (PATCH /v1/projects/{projectId}/streamer), create_reddit_story_project (POST /v1/projects/reddit-story), update_reddit_story_project (PATCH /v1/projects/{projectId}/reddit-story), create_fake_text_project (POST /v1/projects/fake-text), update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text) and create_vibe_edit_project (POST /v1/projects/vibe-edit).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The project id. It starts with prj_. |
kind | string | Required | The kind of project: autoclip finds clips in a long video, splitscreen, streamer and redditstory build one video, faketext shows a chat story, vibeedit is an edit of a video. Each kind has its own operations; projects made in the GPT-Video app are listed too. One of autoclip, splitscreen, faketext, redditstory, streamer, vibeedit. |
title | string | Required | The name of the project. |
status | string | Required | draft has not been analyzed yet, processing is being analyzed, ready has clips, failed means the last analysis failed and errorMessage says why. One of draft, processing, ready, failed. |
sourceAssetId | string or null | Required | The video the project is made from: the source of an Auto Clip, streamer or Vibe Editing project, the main video of a split screen project. null for Reddit story and fake text projects, whose background video is in their block, until an Auto Clip project has a source, and when the file no longer exists or cannot be used through the API. |
compositionId | string or null | Required | The composition of a split screen, streamer, Reddit story, fake text or Vibe Editing project, to export with create_export (POST /v1/compositions/{compositionId}/exports). null for an Auto Clip project, whose compositions belong to its accepted clips, and for a project that has no composition yet. |
settings | object or null | Required | The settings of an Auto Clip project; null for every other kind. |
settings.language | string or null | Required | The language spoken in the video: en, it, or auto to detect it. null until it is chosen. One of auto, it, en. |
settings.clipCount | integer or null | Required | How many clips the analysis proposes. null until it is chosen. |
settings.minDurationSec | number or null | Required | The shortest clip the analysis may propose, in seconds. null until it is chosen. |
settings.maxDurationSec | number or null | Required | The longest clip the analysis may propose, in seconds. null until it is chosen. |
settings.objective | string or null | Required | What the clips should be good at. get_setting_options (GET /v1/reference/setting-options) lists every objective with what it means. null until it is chosen. One of viral, educational, entertaining, emotional, controversial, howto, business. |
settings.captionStyle | string or null | Required | The caption style of the clips. get_setting_options (GET /v1/reference/setting-options) lists every style with what it looks like. null until it is chosen. One of bold-karaoke, word-pop, boxed, outline. |
settings.reframe | string or null | Required | How a clip follows the speaker: face follows the face of the speaker, center keeps the middle of the frame. null until it is chosen. One of face, center. |
settings.instructions | string or null | Required | Free text that tells the analysis what to look for, such as only the moments where a given person speaks. null when there are none. |
settings.vocabulary | string or null | Required | Names, brands and jargon the transcription should spell right, separated by commas. It is used when the video is transcribed, so set it before the first analysis. null when there is none. |
missingSettings | array of strings | Required | The settings still to choose before the project can be analyzed. Empty when nothing is missing, and for every kind other than autoclip. |
splitScreen | object or null | Required | The choices of a split screen project; null for every other kind. |
splitScreen.mainAssetId | string or null | Required | The main video, shown on top and transcribed for the captions. null when the file no longer exists or cannot be used through the API. |
splitScreen.backgroundAssetId | string or null | Required | The background video, shown under the main video. null when the file no longer exists or cannot be used through the API. |
splitScreen.layout | string | Required | How the screen is split: 50-50 gives each video half the screen, 60-40 gives the main video more. One of 50-50, 60-40. |
splitScreen.captionStyle | string or null | Required | The caption style; null when the video has no captions. One of bold-karaoke, word-pop, boxed, outline. |
splitScreen.language | string | Required | The language spoken in the main video: en, it, or auto to detect it. One of auto, it, en. |
splitScreen.backgroundStartSec | number or null | Required | Where the background video starts, in seconds; null until the first build chooses a random start, which is then kept. |
splitScreen.vocabulary | string or null | Required | Names, brands and jargon the transcription should spell right, separated by commas; null when there are none. |
streamer | object or null | Required | The choices of a streamer project; null for every other kind. |
streamer.sourceAssetId | string or null | Required | The clip the project is made from. null when the file no longer exists or cannot be used through the API. |
streamer.headline | string | Required | The line shown over the clip; empty for none. |
streamer.language | string | Required | The language spoken in the clip: en, it, or auto to detect it. One of auto, it, en. |
streamer.captionStyle | string | Required | The caption style. One of bold-karaoke, word-pop, boxed, outline. |
streamer.reframe | string | Required | How the video follows the speaker: face follows the face, center keeps the middle of the frame. One of face, center. |
streamer.vocabulary | string or null | Required | Names, brands and jargon the transcription should spell right, separated by commas; null when there are none. |
redditStory | object or null | Required | The post, the voice and the choices of a Reddit story project; null for every other kind. |
redditStory.postTitle | string | Required | The title of the post, shown on the title card. |
redditStory.postBody | string | Required | The text of the post, read by the voice. |
redditStory.author | string | Required | The author shown on the title card. |
redditStory.subreddit | string | Required | The community shown on the title card. |
redditStory.voice | string or null | Required | The voice that reads the story, as list_voices (GET /v1/reference/voices) names it; null when the project uses a voice that is not available through the API. |
redditStory.language | string | Required | The language of the story and of its voice. One of en, it. |
redditStory.backgroundAssetId | string or null | Required | The background video. null when the file no longer exists or cannot be used through the API. |
redditStory.captionStyle | string | Required | The caption style. One of bold-karaoke, word-pop, boxed, outline. |
redditStory.vocabulary | string or null | Required | Names, brands and jargon the transcription should spell right, separated by commas; null when there are none. |
fakeText | object or null | Required | The choices of a fake text project; null for every other kind. |
fakeText.theme | string | Required | How the chat looks: imessage or whatsapp. One of imessage, whatsapp. |
fakeText.language | string | Required | The language of the story and of its voices. One of en, it. |
fakeText.voiceover | boolean | Required | true when create_fake_text_voices (POST /v1/projects/{projectId}/story/voices) makes voices for the lines. |
fakeText.backgroundAssetId | string or null | Required | The background video behind the chat. null when the file no longer exists or cannot be used through the API. |
fakeText.storyId | string or null | Required | The story of the project, read with get_fake_text_story (GET /v1/projects/{projectId}/story); null until the project has one. |
vibeEdit | object or null | Required | The choices of a Vibe Editing project; null for every other kind. |
vibeEdit.sourceAssetId | string or null | Required | The video the edit starts from. null when the file no longer exists or cannot be used through the API. |
vibeEdit.language | string | Required | The language spoken in the video: en, it, or auto to detect it. One of auto, it, en. |
vibeEdit.captionStyle | string | Required | The caption style the edit starts with. One of bold-karaoke, word-pop, boxed, outline. |
vibeEdit.aspect | string | Required | The shape the edit starts with: source keeps the shape of the video. One of source, 9:16, 1:1, 16:9. |
vibeEdit.vocabulary | string or null | Required | Names, brands and jargon the transcription should spell right, separated by commas; null when there are none. |
vibeEdit.prepared | boolean | Required | true once prepare_timeline (POST /v1/projects/{projectId}/timeline/prepare) has prepared the edit; an edit is never prepared or charged again. |
errorMessage | string or null | Required | Why the last analysis failed, in one sentence; null unless the status is failed. |
createdAt | string | Required | An ISO 8601 time in UTC. |
updatedAt | string | Required | An ISO 8601 time in UTC. |
Job
Returned in the field job by analyze_project (POST /v1/projects/{projectId}/analyze), reframe_composition (POST /v1/compositions/{compositionId}/reframe), build_split_screen_video (POST /v1/projects/{projectId}/split-screen/build), build_streamer_video (POST /v1/projects/{projectId}/streamer/build), build_reddit_story_video (POST /v1/projects/{projectId}/reddit-story/build), generate_fake_text_story (POST /v1/projects/{projectId}/story/generate), create_fake_text_voices (POST /v1/projects/{projectId}/story/voices), prepare_timeline (POST /v1/projects/{projectId}/timeline/prepare) and get_job (GET /v1/jobs/{jobId}).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The job id. It starts with job_. |
kind | string | Required | What the job does. analysis finds the clips of an Auto Clip project, or prepares a Vibe Editing project. build makes the video of a split screen, streamer or Reddit story project. export renders a composition to a file. framing follows the face in a clip. import brings in a video from a link. story writes the story of a fake text project. voices makes the voices of a fake text story. tool runs a voiceover, an audio separation or a brainstorm. assistant_turn is one turn of the Editor Assistant. One of analysis, build, export, framing, import, story, voices, tool, assistant_turn. |
status | string | Required | queued and running are still working; done, failed and cancelled are final. One of queued, running, done, failed, cancelled. |
progress | number | Required | How far the job is, from 0 to 1. From 0 to 1. |
errorMessage | string or null | Required | Why the job failed or stopped, in one sentence; null otherwise. |
projectId | string or null | Required | The project the job works on, when it has one. |
compositionId | string or null | Required | The composition the job works on, when it has one. |
exportId | string or null | Required | The export this job renders, for an export job; null otherwise. |
assetId | string or null | Required | The video an import job brought in, once the job is done; null for every other job, and when that video no longer exists or cannot be used through the API. |
toolRunId | string or null | Required | The tool run a tool job carries out, to read with get_tool_run (GET /v1/tool-runs/{toolRunId}); null for every other job. |
turnId | string or null | Required | The Editor Assistant turn an assistant_turn job carries out, to read with get_assistant_turn (GET /v1/assistant/turns/{turnId}); null for every other job. |
createdAt | string | Required | An ISO 8601 time in UTC. |
startedAt | string or null | Required | An ISO 8601 time in UTC. |
finishedAt | string or null | Required | An ISO 8601 time in UTC. |
Clip
Returned in the field clip by get_clip (GET /v1/clips/{clipId}), accept_clip (POST /v1/clips/{clipId}/accept), reject_clip (POST /v1/clips/{clipId}/reject) and restore_clip (POST /v1/clips/{clipId}/restore).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The clip id. It starts with cnd_. |
projectId | string | Required | The project the clip was found in. |
sourceAssetId | string | Required | The source video the clip is cut from. |
status | string | Required | proposed is waiting for a decision, accepted has a composition, rejected was set aside and can be restored. One of proposed, accepted, rejected. |
rank | integer | Required | The place of the clip in the project, from 0, in the order the analysis ranked the clips. A new analysis puts the accepted clips it keeps first. |
startSec | number | Required | Where the clip starts in the source video, in seconds. |
endSec | number | Required | Where the clip ends in the source video, in seconds. |
durationSec | number | Required | How long the clip is, in seconds. |
title | string | Required | A short title for the clip. |
hook | string | Required | What the first seconds of the clip promise the viewer. |
summary | string | Required | What the clip is about, in a sentence or two. |
reason | string | Required | Why this moment was picked. |
score | number | Required | A priority score from 0 to 100, explained factor by factor in scoreBreakdown. It ranks the clips of a project against each other; it is not a probability of going viral. From 0 to 100. |
scoreBreakdown | array of objects | Required | One entry per factor of the score. Factors are added over time, so an older clip can have fewer entries: read each entry by its factor, never by its position. |
scoreBreakdown[].factor | string | Required | Which quality of the clip this entry judges. One of hook, payoff, clarity, emotion, novelty, selfContained, quotability, dialogue. |
scoreBreakdown[].label | string | Required | The name of the factor, as the GPT-Video app shows it. |
scoreBreakdown[].score | number | Required | How the clip does on this factor, from 0 to 10. From 0 to 10. |
scoreBreakdown[].note | string | Required | Why the clip got this score on this factor. |
tags | array of strings | Required | Topics of the clip. |
transcriptExcerpt | string | Required | What is said in the clip, taken from the transcript. |
social | object | Required | A suggested title, caption and hashtags for posting the clip. |
social.title | string | Required | |
social.caption | string | Required | |
social.hashtags | array of strings | Required | |
compositionId | string or null | Required | The composition made when the clip was accepted; null until then. |
createdAt | string | Required | An ISO 8601 time in UTC. |
Composition
Returned in the field composition by accept_clip (POST /v1/clips/{clipId}/accept), get_composition (GET /v1/compositions/{compositionId}), edit_composition (POST /v1/compositions/{compositionId}/edit) and replace_caption_words (POST /v1/compositions/{compositionId}/captions/replace).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The composition id. It starts with cmp_. |
projectId | string | Required | |
clipId | string or null | Required | The clip this composition was made from, when it comes from a clip. |
kind | string | Required | One of autoclip, splitscreen, faketext, redditstory, streamer, vibeedit. |
title | string | Required | |
revision | integer | Required | Grows by one at every change; an export renders one revision. |
durationSec | number | Required | |
width | integer | Required | |
height | integer | Required | |
fps | integer | Required | |
source | object or null | Required | The part of the source video this composition shows: filled for Auto Clip and streamer compositions, null for every other kind, and when the video no longer exists or cannot be used through the API. |
source.assetId | string | Required | |
source.startSec | number | Required | |
source.endSec | number | Required | |
hook | string or null | Required | The hook text shown at the start: filled for Auto Clip compositions only, null for every other kind. |
captions | object or null | Required | The caption style and how many words the captions have; null without captions. |
captions.style | string | Required | One of bold-karaoke, word-pop, boxed, outline. |
captions.wordCount | integer | Required | |
framing | object | Required | How the video follows the speaker: tracked follows the face, centered keeps the middle, tracking is still being computed by the job in jobId, none has no source video to frame. |
framing.status | string | Required | One of tracked, centered, tracking, none. |
framing.jobId | string or null | Required | |
createdAt | string | Required | An ISO 8601 time in UTC. |
updatedAt | string | Required | An ISO 8601 time in UTC. |
Tool run
Returned in the field toolRun by create_voiceover (POST /v1/voiceovers), separate_audio (POST /v1/audio-separations), brainstorm_ideas (POST /v1/brainstorms) and get_tool_run (GET /v1/tool-runs/{toolRunId}).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The tool run id. It starts with run_. |
tool | string | Required | One of voiceover, audio_separation, brainstorm. |
status | string | Required | queued and running are still working; done and failed are final. One of queued, running, done, failed. |
progress | number | Required | How far the run is, from 0 to 1. From 0 to 1. |
errorMessage | string or null | Required | Why the run failed, in one sentence; null otherwise. |
voiceover | object or null | Required | What a voiceover was asked to read; null for the other tools. |
voiceover.title | string | Required | |
voiceover.script | string | Required | |
voiceover.voice | string or null | Required | The voice, as list_voices (GET /v1/reference/voices) names it; null for a voice that is not available through the API. |
voiceover.language | string | Required | One of en, it. |
separation | object or null | Required | What an audio separation works on; null for the other tools. |
separation.sourceAssetId | string or null | Required | The video whose sound is separated. null when the file no longer exists or cannot be used through the API. |
separation.keep | string | Required | vocals keeps the voices, instrumental keeps everything else. One of vocals, instrumental. |
brainstorm | object or null | Required | What a brainstorm was asked; null for the other tools. |
brainstorm.topic | string | Required | |
brainstorm.tone | string | Required | |
brainstorm.audience | string | Required | |
brainstorm.videoType | string | Required | One of story, fake_text, split_screen, any. |
brainstorm.language | string | Required | One of en, it. |
brainstorm.count | integer | Required | |
file | object or null | Required | The audio file a voiceover or a separation made, once the run is done; null otherwise. |
file.assetId | string | Required | |
file.mimeType | string | Required | |
file.durationSec | number or null | Required | |
file.sizeBytes | integer | Required | |
file.downloadUrl | string or null | Required | A link to download the file, on a read of a finished run; null otherwise. |
file.downloadUrlExpiresAt | string or null | Required | An ISO 8601 time in UTC. |
ideas | array of objects or null | Required | The ideas of a finished brainstorm; null otherwise. |
ideas[].title | string | Required | |
ideas[].hook | string | Required | |
ideas[].outline | string | Required | |
ideas[].format | string | Required | |
ideas[].whyItWorks | string | Required | |
jobId | string or null | Required | The job that carries out the run, to follow with get_job (GET /v1/jobs/{jobId}); null once it is gone. |
createdAt | string | Required | An ISO 8601 time in UTC. |
finishedAt | string or null | Required | An ISO 8601 time in UTC. |
Timeline
Returned in the field timeline by get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips) and restore_timeline (POST /v1/projects/{projectId}/timeline/restore).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The edit id. It starts with tml_. |
projectId | string | Required | |
compositionId | string or null | Required | The composition the edit compiles to, to export with create_export (POST /v1/compositions/{compositionId}/exports); null until the edit is first compiled. |
revision | integer | Required | Grows by one at every change; send it as expectedRevision with the next change. |
durationSec | number | Required | How long the video that comes out lasts, in seconds. |
aspect | string | Required | One of source, 9:16, 1:1, 16:9. |
reframe | string | Required | How the video follows the speaker: off keeps the frame, face follows the face, center keeps the middle. One of off, face, center. |
captions | object | Required | |
captions.enabled | boolean | Required | |
captions.style | string | Required | One of bold-karaoke, word-pop, boxed, outline. |
music | object or null | Required | The music under the edit; null without music. |
music.assetId | string or null | Required | The music file. null when the file no longer exists or cannot be used through the API. |
music.volume | number | Required | |
fadeInSec | number | Required | The fade from black at the start, in seconds; 0 for none. |
fadeOutSec | number | Required | The fade to black at the end, in seconds; 0 for none. |
clips | array of objects | Required | The videos the edit uses. |
clips[].assetId | string or null | Required | The video. null when the file no longer exists or cannot be used through the API. |
clips[].title | string | Required | |
clips[].durationSec | number | Required | |
clips[].state | string | Required | ready can be cut, preparing is still being prepared, failed could not be prepared and is not prepared again by itself. One of ready, preparing, failed. |
segments | array of objects | Required | The pieces of video, in the order they play. |
segments[].id | string | Required | The segment id. It starts with seg_. |
segments[].assetId | string or null | Required | The video the segment comes from. null when the file no longer exists or cannot be used through the API. |
segments[].sourceStartSec | number | Required | |
segments[].sourceEndSec | number | Required | |
segments[].outputStartSec | number | Required | |
segments[].outputEndSec | number | Required | |
segments[].zoom | number | Required | |
segments[].muted | boolean | Required | |
segments[].volume | number | Required | |
texts | array of objects | Required | |
texts[].id | string | Required | The text id. It starts with ovl_. |
texts[].text | string | Required | |
texts[].preset | string | Required | One of headline, hook, caption-note. |
texts[].outputStartSec | number | Required | |
texts[].durationSec | number | Required | |
texts[].xPercent | number or null | Required | |
texts[].yPercent | number or null | Required | |
broll | array of objects | Required | |
broll[].id | string | Required | The b-roll id. It starts with brl_. |
broll[].assetId | string or null | Required | The video shown over the edit. null when the file no longer exists or cannot be used through the API. |
broll[].outputStartSec | number | Required | |
broll[].durationSec | number | Required | |
broll[].fit | string | Required | One of cover, contain. |
diagnostics | array of objects | Required | What the edit cannot do as it is, in one sentence each; empty when nothing. |
diagnostics[].code | string | Required | |
diagnostics[].message | string | Required |
Upload
Returned in the field upload by create_upload (POST /v1/uploads), upload_part (PUT /v1/uploads/{uploadId}/parts/{partNumber}) and get_upload (GET /v1/uploads/{uploadId}).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The upload id. It starts with upl_. |
filename | string | Required | The name of the file as it will be shown, without any folder in it. |
contentType | string | Required | The type of the file, such as video/mp4. |
sizeBytes | integer | Required | The size of the whole file, in bytes. |
partSizeBytes | integer | Required | The size of every part except the last one, in bytes. |
partCount | integer | Required | How many parts the file is split into. Parts are numbered from 1 to partCount. |
receivedParts | array of integers | Required | The numbers of the parts that arrived whole, in order. |
createdAt | string | Required | An ISO 8601 time in UTC. |
expiresAt | string | Required | When the upload is removed if nothing arrives before then. Every part that arrives moves it later. |
Assistant turn
Returned in the field turn by create_assistant_turn (POST /v1/projects/{projectId}/assistant/turns), get_assistant_turn (GET /v1/assistant/turns/{turnId}) and undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The turn id. It starts with agm_. |
projectId | string | Required | |
status | string | Required | queued and running are still working; done, failed and cancelled are final. One of queued, running, done, failed, cancelled. |
message | string | Required | The message the turn answers. |
reply | string or null | Required | What the Editor Assistant answered; null until the turn ends. |
outcome | string or null | Required | How the turn ended: done did what was asked, partial did part of it, blocked could not, needs_input asks a question; null until the turn ends. One of done, partial, blocked, needs_input. |
question | string or null | Required | The question the Editor Assistant asks, when outcome is needs_input; null otherwise. |
options | array of strings | Required | The answers the Editor Assistant offers to its question; empty when there are none. |
actions | array of objects | Required | The changes the turn made, in order. |
actions[].id | string | Required | The action id. It starts with tc_. |
actions[].tool | string | Required | What the action did, as a short name. |
actions[].status | string | Required | One of done, failed, undone. |
actions[].summary | string | Required | The action in one sentence. |
actions[].undoable | boolean | Required | true when undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo) can undo it. |
actions[].creditsReturned | integer | Required | The credits given back when the action was undone; 0 otherwise. |
jobId | string or null | Required | The job that runs the turn; null once it is gone. |
errorMessage | string or null | Required | Why the turn failed or stopped, in one sentence; null otherwise. |
createdAt | string | Required | An ISO 8601 time in UTC. |
finishedAt | string or null | Required | An ISO 8601 time in UTC. |
Export
Returned in the field export by create_export (POST /v1/compositions/{compositionId}/exports) and get_export (GET /v1/exports/{exportId}).
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The export id. It starts with rnd_. |
compositionId | string | Required | The composition this export renders. |
projectId | string | Required | The project of the composition. |
jobId | string or null | Required | The job that renders this export, to read with get_job (GET /v1/jobs/{jobId}). It starts with job_; null while the export has no job yet. |
revision | integer | Required | The revision of the composition in this export. The render reads the composition when it starts, so a change saved while the export waits in the queue is in the file. Until the export is done this is the revision it was asked at; once it is done it is the revision the file holds. |
status | string | Required | queued and rendering are still working; done, failed and cancelled are final. One of queued, rendering, done, failed, cancelled. |
progress | number | Required | How far the export is, from 0 to 1. From 0 to 1. |
errorMessage | string or null | Required | For a failed or cancelled export, a short message that says what happened; null otherwise. |
createdAt | string | Required | An ISO 8601 time in UTC. |
finishedAt | string or null | Required | When the export ended, done or not; null while it is still working. |
file | object or null | Required | The exported MP4, once the export is done; null before. It stays described after the file is deleted (see fileDeletedAt). |
file.mimeType | string | Required | |
file.sizeBytes | integer | Required | |
file.durationSec | number or null | Required | |
file.width | integer or null | Required | |
file.height | integer or null | Required | |
downloadUrl | string or null | Required | A link that downloads the MP4 with no API key, for 15 minutes and for this file only. Only get_export (GET /v1/exports/{exportId}) and list_exports (GET /v1/projects/{projectId}/exports) give one, once the export is done and while the file is kept; every read gives a new link. create_export (POST /v1/compositions/{compositionId}/exports) always answers null. |
downloadUrlExpiresAt | string or null | Required | When downloadUrl stops working; null when there is no link. |
fileDeletesAt | string or null | Required | The first time the MP4 may be deleted to free space: export files are kept for a limited time. null when nothing deletes it, and once it is deleted. |
fileDeletedAt | string or null | Required | When the MP4 was deleted to free space; export the composition again for a new file. null while the file is kept. |
IDs
Each id starts with a prefix that says what it is. The table lists the operations that return each kind of id and the ones that take it.
| Prefix | What it is | Returned by | Taken by |
|---|---|---|---|
ast_ | A file in the account, such as an uploaded video | complete_upload (POST /v1/uploads/{uploadId}/complete), list_assets (GET /v1/assets), get_asset (GET /v1/assets/{assetId}), get_transcript (GET /v1/assets/{assetId}/transcript), list_projects (GET /v1/projects), create_project (POST /v1/projects), get_project (GET /v1/projects/{projectId}), update_project (PATCH /v1/projects/{projectId}), list_clips (GET /v1/projects/{projectId}/clips), get_clip (GET /v1/clips/{clipId}), accept_clip (POST /v1/clips/{clipId}/accept), reject_clip (POST /v1/clips/{clipId}/reject), restore_clip (POST /v1/clips/{clipId}/restore), get_composition (GET /v1/compositions/{compositionId}), list_compositions (GET /v1/projects/{projectId}/compositions), edit_composition (POST /v1/compositions/{compositionId}/edit), replace_caption_words (POST /v1/compositions/{compositionId}/captions/replace), delete_composition (DELETE /v1/compositions/{compositionId}), create_split_screen_project (POST /v1/projects/split-screen), update_split_screen_project (PATCH /v1/projects/{projectId}/split-screen), create_streamer_project (POST /v1/projects/streamer), update_streamer_project (PATCH /v1/projects/{projectId}/streamer), create_reddit_story_project (POST /v1/projects/reddit-story), update_reddit_story_project (PATCH /v1/projects/{projectId}/reddit-story), create_fake_text_project (POST /v1/projects/fake-text), update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text), separate_audio (POST /v1/audio-separations), get_tool_run (GET /v1/tool-runs/{toolRunId}), list_tool_runs (GET /v1/tool-runs), create_vibe_edit_project (POST /v1/projects/vibe-edit), get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore) | get_asset (GET /v1/assets/{assetId}), get_transcript (GET /v1/assets/{assetId}/transcript), create_project (POST /v1/projects), create_split_screen_project (POST /v1/projects/split-screen), create_streamer_project (POST /v1/projects/streamer), create_reddit_story_project (POST /v1/projects/reddit-story), update_reddit_story_project (PATCH /v1/projects/{projectId}/reddit-story), create_fake_text_project (POST /v1/projects/fake-text), update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text), separate_audio (POST /v1/audio-separations), create_vibe_edit_project (POST /v1/projects/vibe-edit), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips) |
trn_ | Transcript of an asset | None | None |
prj_ | Project | list_ledger_entries (GET /v1/credits/ledger), list_projects (GET /v1/projects), create_project (POST /v1/projects), get_project (GET /v1/projects/{projectId}), update_project (PATCH /v1/projects/{projectId}), analyze_project (POST /v1/projects/{projectId}/analyze), list_clips (GET /v1/projects/{projectId}/clips), get_clip (GET /v1/clips/{clipId}), accept_clip (POST /v1/clips/{clipId}/accept), reject_clip (POST /v1/clips/{clipId}/reject), restore_clip (POST /v1/clips/{clipId}/restore), get_composition (GET /v1/compositions/{compositionId}), list_compositions (GET /v1/projects/{projectId}/compositions), edit_composition (POST /v1/compositions/{compositionId}/edit), replace_caption_words (POST /v1/compositions/{compositionId}/captions/replace), reframe_composition (POST /v1/compositions/{compositionId}/reframe), delete_composition (DELETE /v1/compositions/{compositionId}), create_export (POST /v1/compositions/{compositionId}/exports), get_export (GET /v1/exports/{exportId}), list_exports (GET /v1/projects/{projectId}/exports), create_split_screen_project (POST /v1/projects/split-screen), update_split_screen_project (PATCH /v1/projects/{projectId}/split-screen), build_split_screen_video (POST /v1/projects/{projectId}/split-screen/build), create_streamer_project (POST /v1/projects/streamer), update_streamer_project (PATCH /v1/projects/{projectId}/streamer), build_streamer_video (POST /v1/projects/{projectId}/streamer/build), create_reddit_story_project (POST /v1/projects/reddit-story), update_reddit_story_project (PATCH /v1/projects/{projectId}/reddit-story), build_reddit_story_video (POST /v1/projects/{projectId}/reddit-story/build), create_fake_text_project (POST /v1/projects/fake-text), update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text), get_fake_text_story (GET /v1/projects/{projectId}/story), update_fake_text_story (PUT /v1/projects/{projectId}/story), generate_fake_text_story (POST /v1/projects/{projectId}/story/generate), create_fake_text_voices (POST /v1/projects/{projectId}/story/voices), create_vibe_edit_project (POST /v1/projects/vibe-edit), prepare_timeline (POST /v1/projects/{projectId}/timeline/prepare), get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore), create_assistant_turn (POST /v1/projects/{projectId}/assistant/turns), get_assistant_turn (GET /v1/assistant/turns/{turnId}), list_assistant_turns (GET /v1/projects/{projectId}/assistant/turns), undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo), get_job (GET /v1/jobs/{jobId}) | get_project (GET /v1/projects/{projectId}), update_project (PATCH /v1/projects/{projectId}), analyze_project (POST /v1/projects/{projectId}/analyze), estimate_analysis (POST /v1/projects/{projectId}/analyze/estimate), list_clips (GET /v1/projects/{projectId}/clips), list_compositions (GET /v1/projects/{projectId}/compositions), list_exports (GET /v1/projects/{projectId}/exports), update_split_screen_project (PATCH /v1/projects/{projectId}/split-screen), build_split_screen_video (POST /v1/projects/{projectId}/split-screen/build), update_streamer_project (PATCH /v1/projects/{projectId}/streamer), build_streamer_video (POST /v1/projects/{projectId}/streamer/build), update_reddit_story_project (PATCH /v1/projects/{projectId}/reddit-story), build_reddit_story_video (POST /v1/projects/{projectId}/reddit-story/build), update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text), get_fake_text_story (GET /v1/projects/{projectId}/story), update_fake_text_story (PUT /v1/projects/{projectId}/story), generate_fake_text_story (POST /v1/projects/{projectId}/story/generate), create_fake_text_voices (POST /v1/projects/{projectId}/story/voices), prepare_timeline (POST /v1/projects/{projectId}/timeline/prepare), get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), list_timeline_revisions (GET /v1/projects/{projectId}/timeline/revisions), restore_timeline (POST /v1/projects/{projectId}/timeline/restore), create_assistant_turn (POST /v1/projects/{projectId}/assistant/turns), list_assistant_turns (GET /v1/projects/{projectId}/assistant/turns) |
cnd_ | Clip of a project | list_clips (GET /v1/projects/{projectId}/clips), get_clip (GET /v1/clips/{clipId}), accept_clip (POST /v1/clips/{clipId}/accept), reject_clip (POST /v1/clips/{clipId}/reject), restore_clip (POST /v1/clips/{clipId}/restore), get_composition (GET /v1/compositions/{compositionId}), list_compositions (GET /v1/projects/{projectId}/compositions), edit_composition (POST /v1/compositions/{compositionId}/edit), replace_caption_words (POST /v1/compositions/{compositionId}/captions/replace), delete_composition (DELETE /v1/compositions/{compositionId}) | get_clip (GET /v1/clips/{clipId}), accept_clip (POST /v1/clips/{clipId}/accept), reject_clip (POST /v1/clips/{clipId}/reject), restore_clip (POST /v1/clips/{clipId}/restore) |
cmp_ | Composition | list_clips (GET /v1/projects/{projectId}/clips), accept_clip (POST /v1/clips/{clipId}/accept), get_composition (GET /v1/compositions/{compositionId}), list_compositions (GET /v1/projects/{projectId}/compositions), edit_composition (POST /v1/compositions/{compositionId}/edit), replace_caption_words (POST /v1/compositions/{compositionId}/captions/replace), reframe_composition (POST /v1/compositions/{compositionId}/reframe), delete_composition (DELETE /v1/compositions/{compositionId}), create_export (POST /v1/compositions/{compositionId}/exports), get_export (GET /v1/exports/{exportId}), list_exports (GET /v1/projects/{projectId}/exports), update_split_screen_project (PATCH /v1/projects/{projectId}/split-screen), update_streamer_project (PATCH /v1/projects/{projectId}/streamer), update_reddit_story_project (PATCH /v1/projects/{projectId}/reddit-story), update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text), get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore), get_job (GET /v1/jobs/{jobId}) | get_composition (GET /v1/compositions/{compositionId}), get_composition_captions (GET /v1/compositions/{compositionId}/captions), edit_composition (POST /v1/compositions/{compositionId}/edit), replace_caption_words (POST /v1/compositions/{compositionId}/captions/replace), reframe_composition (POST /v1/compositions/{compositionId}/reframe), delete_composition (DELETE /v1/compositions/{compositionId}), create_export (POST /v1/compositions/{compositionId}/exports), list_exports (GET /v1/projects/{projectId}/exports) |
rnd_ | Export | create_export (POST /v1/compositions/{compositionId}/exports), get_export (GET /v1/exports/{exportId}), list_exports (GET /v1/projects/{projectId}/exports), get_job (GET /v1/jobs/{jobId}) | get_export (GET /v1/exports/{exportId}) |
job_ | Job | analyze_project (POST /v1/projects/{projectId}/analyze), estimate_analysis (POST /v1/projects/{projectId}/analyze/estimate), accept_clip (POST /v1/clips/{clipId}/accept), reframe_composition (POST /v1/compositions/{compositionId}/reframe), create_export (POST /v1/compositions/{compositionId}/exports), get_export (GET /v1/exports/{exportId}), list_exports (GET /v1/projects/{projectId}/exports), build_split_screen_video (POST /v1/projects/{projectId}/split-screen/build), build_streamer_video (POST /v1/projects/{projectId}/streamer/build), build_reddit_story_video (POST /v1/projects/{projectId}/reddit-story/build), generate_fake_text_story (POST /v1/projects/{projectId}/story/generate), create_fake_text_voices (POST /v1/projects/{projectId}/story/voices), create_voiceover (POST /v1/voiceovers), separate_audio (POST /v1/audio-separations), brainstorm_ideas (POST /v1/brainstorms), get_tool_run (GET /v1/tool-runs/{toolRunId}), list_tool_runs (GET /v1/tool-runs), prepare_timeline (POST /v1/projects/{projectId}/timeline/prepare), create_assistant_turn (POST /v1/projects/{projectId}/assistant/turns), get_assistant_turn (GET /v1/assistant/turns/{turnId}), list_assistant_turns (GET /v1/projects/{projectId}/assistant/turns), undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo), get_job (GET /v1/jobs/{jobId}) | get_job (GET /v1/jobs/{jobId}) |
upl_ | Upload | create_upload (POST /v1/uploads), upload_part (PUT /v1/uploads/{uploadId}/parts/{partNumber}), get_upload (GET /v1/uploads/{uploadId}), cancel_upload (DELETE /v1/uploads/{uploadId}) | upload_part (PUT /v1/uploads/{uploadId}/parts/{partNumber}), get_upload (GET /v1/uploads/{uploadId}), complete_upload (POST /v1/uploads/{uploadId}/complete), cancel_upload (DELETE /v1/uploads/{uploadId}) |
tml_ | Timeline of a Vibe Editing project | get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore) | None |
seg_ | Segment of a timeline | get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore) | apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips) |
ovl_ | Text on a timeline | get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore) | apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations) |
brl_ | B-roll on a timeline | get_timeline (GET /v1/projects/{projectId}/timeline), apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations), add_timeline_clip (POST /v1/projects/{projectId}/timeline/clips), restore_timeline (POST /v1/projects/{projectId}/timeline/restore) | apply_timeline_operations (POST /v1/projects/{projectId}/timeline/operations) |
cnv_ | Fake text story | update_fake_text_project (PATCH /v1/projects/{projectId}/fake-text), get_fake_text_story (GET /v1/projects/{projectId}/story), update_fake_text_story (PUT /v1/projects/{projectId}/story) | None |
agm_ | Editor Assistant turn | create_assistant_turn (POST /v1/projects/{projectId}/assistant/turns), get_assistant_turn (GET /v1/assistant/turns/{turnId}), list_assistant_turns (GET /v1/projects/{projectId}/assistant/turns), undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo) | get_assistant_turn (GET /v1/assistant/turns/{turnId}), undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo) |
tc_ | Action of an Editor Assistant turn | get_assistant_turn (GET /v1/assistant/turns/{turnId}), list_assistant_turns (GET /v1/projects/{projectId}/assistant/turns), undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo) | undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo) |
run_ | Tool run | create_voiceover (POST /v1/voiceovers), separate_audio (POST /v1/audio-separations), brainstorm_ideas (POST /v1/brainstorms), get_tool_run (GET /v1/tool-runs/{toolRunId}), list_tool_runs (GET /v1/tool-runs) | get_tool_run (GET /v1/tool-runs/{toolRunId}) |