Skip to content

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 and job_ 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).

NameTypeRequiredDescription
idstringRequiredThe project id. It starts with prj_.
kindstringRequiredThe 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.
titlestringRequiredThe name of the project.
statusstringRequireddraft 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.
sourceAssetIdstring or nullRequiredThe 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.
compositionIdstring or nullRequiredThe 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.
settingsobject or nullRequiredThe settings of an Auto Clip project; null for every other kind.
settings.languagestring or nullRequiredThe language spoken in the video: en, it, or auto to detect it. null until it is chosen. One of auto, it, en.
settings.clipCountinteger or nullRequiredHow many clips the analysis proposes. null until it is chosen.
settings.minDurationSecnumber or nullRequiredThe shortest clip the analysis may propose, in seconds. null until it is chosen.
settings.maxDurationSecnumber or nullRequiredThe longest clip the analysis may propose, in seconds. null until it is chosen.
settings.objectivestring or nullRequiredWhat 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.captionStylestring or nullRequiredThe 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.reframestring or nullRequiredHow 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.instructionsstring or nullRequiredFree 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.vocabularystring or nullRequiredNames, 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.
missingSettingsarray of stringsRequiredThe settings still to choose before the project can be analyzed. Empty when nothing is missing, and for every kind other than autoclip.
splitScreenobject or nullRequiredThe choices of a split screen project; null for every other kind.
splitScreen.mainAssetIdstring or nullRequiredThe 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.backgroundAssetIdstring or nullRequiredThe background video, shown under the main video. null when the file no longer exists or cannot be used through the API.
splitScreen.layoutstringRequiredHow 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.captionStylestring or nullRequiredThe caption style; null when the video has no captions. One of bold-karaoke, word-pop, boxed, outline.
splitScreen.languagestringRequiredThe language spoken in the main video: en, it, or auto to detect it. One of auto, it, en.
splitScreen.backgroundStartSecnumber or nullRequiredWhere the background video starts, in seconds; null until the first build chooses a random start, which is then kept.
splitScreen.vocabularystring or nullRequiredNames, brands and jargon the transcription should spell right, separated by commas; null when there are none.
streamerobject or nullRequiredThe choices of a streamer project; null for every other kind.
streamer.sourceAssetIdstring or nullRequiredThe clip the project is made from. null when the file no longer exists or cannot be used through the API.
streamer.headlinestringRequiredThe line shown over the clip; empty for none.
streamer.languagestringRequiredThe language spoken in the clip: en, it, or auto to detect it. One of auto, it, en.
streamer.captionStylestringRequiredThe caption style. One of bold-karaoke, word-pop, boxed, outline.
streamer.reframestringRequiredHow the video follows the speaker: face follows the face, center keeps the middle of the frame. One of face, center.
streamer.vocabularystring or nullRequiredNames, brands and jargon the transcription should spell right, separated by commas; null when there are none.
redditStoryobject or nullRequiredThe post, the voice and the choices of a Reddit story project; null for every other kind.
redditStory.postTitlestringRequiredThe title of the post, shown on the title card.
redditStory.postBodystringRequiredThe text of the post, read by the voice.
redditStory.authorstringRequiredThe author shown on the title card.
redditStory.subredditstringRequiredThe community shown on the title card.
redditStory.voicestring or nullRequiredThe 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.languagestringRequiredThe language of the story and of its voice. One of en, it.
redditStory.backgroundAssetIdstring or nullRequiredThe background video. null when the file no longer exists or cannot be used through the API.
redditStory.captionStylestringRequiredThe caption style. One of bold-karaoke, word-pop, boxed, outline.
redditStory.vocabularystring or nullRequiredNames, brands and jargon the transcription should spell right, separated by commas; null when there are none.
fakeTextobject or nullRequiredThe choices of a fake text project; null for every other kind.
fakeText.themestringRequiredHow the chat looks: imessage or whatsapp. One of imessage, whatsapp.
fakeText.languagestringRequiredThe language of the story and of its voices. One of en, it.
fakeText.voiceoverbooleanRequiredtrue when create_fake_text_voices (POST /v1/projects/{projectId}/story/voices) makes voices for the lines.
fakeText.backgroundAssetIdstring or nullRequiredThe background video behind the chat. null when the file no longer exists or cannot be used through the API.
fakeText.storyIdstring or nullRequiredThe story of the project, read with get_fake_text_story (GET /v1/projects/{projectId}/story); null until the project has one.
vibeEditobject or nullRequiredThe choices of a Vibe Editing project; null for every other kind.
vibeEdit.sourceAssetIdstring or nullRequiredThe video the edit starts from. null when the file no longer exists or cannot be used through the API.
vibeEdit.languagestringRequiredThe language spoken in the video: en, it, or auto to detect it. One of auto, it, en.
vibeEdit.captionStylestringRequiredThe caption style the edit starts with. One of bold-karaoke, word-pop, boxed, outline.
vibeEdit.aspectstringRequiredThe shape the edit starts with: source keeps the shape of the video. One of source, 9:16, 1:1, 16:9.
vibeEdit.vocabularystring or nullRequiredNames, brands and jargon the transcription should spell right, separated by commas; null when there are none.
vibeEdit.preparedbooleanRequiredtrue once prepare_timeline (POST /v1/projects/{projectId}/timeline/prepare) has prepared the edit; an edit is never prepared or charged again.
errorMessagestring or nullRequiredWhy the last analysis failed, in one sentence; null unless the status is failed.
createdAtstringRequiredAn ISO 8601 time in UTC.
updatedAtstringRequiredAn 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}).

NameTypeRequiredDescription
idstringRequiredThe job id. It starts with job_.
kindstringRequiredWhat 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.
statusstringRequiredqueued and running are still working; done, failed and cancelled are final. One of queued, running, done, failed, cancelled.
progressnumberRequiredHow far the job is, from 0 to 1. From 0 to 1.
errorMessagestring or nullRequiredWhy the job failed or stopped, in one sentence; null otherwise.
projectIdstring or nullRequiredThe project the job works on, when it has one.
compositionIdstring or nullRequiredThe composition the job works on, when it has one.
exportIdstring or nullRequiredThe export this job renders, for an export job; null otherwise.
assetIdstring or nullRequiredThe 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.
toolRunIdstring or nullRequiredThe tool run a tool job carries out, to read with get_tool_run (GET /v1/tool-runs/{toolRunId}); null for every other job.
turnIdstring or nullRequiredThe 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.
createdAtstringRequiredAn ISO 8601 time in UTC.
startedAtstring or nullRequiredAn ISO 8601 time in UTC.
finishedAtstring or nullRequiredAn 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).

NameTypeRequiredDescription
idstringRequiredThe clip id. It starts with cnd_.
projectIdstringRequiredThe project the clip was found in.
sourceAssetIdstringRequiredThe source video the clip is cut from.
statusstringRequiredproposed is waiting for a decision, accepted has a composition, rejected was set aside and can be restored. One of proposed, accepted, rejected.
rankintegerRequiredThe 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.
startSecnumberRequiredWhere the clip starts in the source video, in seconds.
endSecnumberRequiredWhere the clip ends in the source video, in seconds.
durationSecnumberRequiredHow long the clip is, in seconds.
titlestringRequiredA short title for the clip.
hookstringRequiredWhat the first seconds of the clip promise the viewer.
summarystringRequiredWhat the clip is about, in a sentence or two.
reasonstringRequiredWhy this moment was picked.
scorenumberRequiredA 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.
scoreBreakdownarray of objectsRequiredOne 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[].factorstringRequiredWhich quality of the clip this entry judges. One of hook, payoff, clarity, emotion, novelty, selfContained, quotability, dialogue.
scoreBreakdown[].labelstringRequiredThe name of the factor, as the GPT-Video app shows it.
scoreBreakdown[].scorenumberRequiredHow the clip does on this factor, from 0 to 10. From 0 to 10.
scoreBreakdown[].notestringRequiredWhy the clip got this score on this factor.
tagsarray of stringsRequiredTopics of the clip.
transcriptExcerptstringRequiredWhat is said in the clip, taken from the transcript.
socialobjectRequiredA suggested title, caption and hashtags for posting the clip.
social.titlestringRequired
social.captionstringRequired
social.hashtagsarray of stringsRequired
compositionIdstring or nullRequiredThe composition made when the clip was accepted; null until then.
createdAtstringRequiredAn 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).

NameTypeRequiredDescription
idstringRequiredThe composition id. It starts with cmp_.
projectIdstringRequired
clipIdstring or nullRequiredThe clip this composition was made from, when it comes from a clip.
kindstringRequiredOne of autoclip, splitscreen, faketext, redditstory, streamer, vibeedit.
titlestringRequired
revisionintegerRequiredGrows by one at every change; an export renders one revision.
durationSecnumberRequired
widthintegerRequired
heightintegerRequired
fpsintegerRequired
sourceobject or nullRequiredThe 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.assetIdstringRequired
source.startSecnumberRequired
source.endSecnumberRequired
hookstring or nullRequiredThe hook text shown at the start: filled for Auto Clip compositions only, null for every other kind.
captionsobject or nullRequiredThe caption style and how many words the captions have; null without captions.
captions.stylestringRequiredOne of bold-karaoke, word-pop, boxed, outline.
captions.wordCountintegerRequired
framingobjectRequiredHow 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.statusstringRequiredOne of tracked, centered, tracking, none.
framing.jobIdstring or nullRequired
createdAtstringRequiredAn ISO 8601 time in UTC.
updatedAtstringRequiredAn 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}).

NameTypeRequiredDescription
idstringRequiredThe tool run id. It starts with run_.
toolstringRequiredOne of voiceover, audio_separation, brainstorm.
statusstringRequiredqueued and running are still working; done and failed are final. One of queued, running, done, failed.
progressnumberRequiredHow far the run is, from 0 to 1. From 0 to 1.
errorMessagestring or nullRequiredWhy the run failed, in one sentence; null otherwise.
voiceoverobject or nullRequiredWhat a voiceover was asked to read; null for the other tools.
voiceover.titlestringRequired
voiceover.scriptstringRequired
voiceover.voicestring or nullRequiredThe voice, as list_voices (GET /v1/reference/voices) names it; null for a voice that is not available through the API.
voiceover.languagestringRequiredOne of en, it.
separationobject or nullRequiredWhat an audio separation works on; null for the other tools.
separation.sourceAssetIdstring or nullRequiredThe video whose sound is separated. null when the file no longer exists or cannot be used through the API.
separation.keepstringRequiredvocals keeps the voices, instrumental keeps everything else. One of vocals, instrumental.
brainstormobject or nullRequiredWhat a brainstorm was asked; null for the other tools.
brainstorm.topicstringRequired
brainstorm.tonestringRequired
brainstorm.audiencestringRequired
brainstorm.videoTypestringRequiredOne of story, fake_text, split_screen, any.
brainstorm.languagestringRequiredOne of en, it.
brainstorm.countintegerRequired
fileobject or nullRequiredThe audio file a voiceover or a separation made, once the run is done; null otherwise.
file.assetIdstringRequired
file.mimeTypestringRequired
file.durationSecnumber or nullRequired
file.sizeBytesintegerRequired
file.downloadUrlstring or nullRequiredA link to download the file, on a read of a finished run; null otherwise.
file.downloadUrlExpiresAtstring or nullRequiredAn ISO 8601 time in UTC.
ideasarray of objects or nullRequiredThe ideas of a finished brainstorm; null otherwise.
ideas[].titlestringRequired
ideas[].hookstringRequired
ideas[].outlinestringRequired
ideas[].formatstringRequired
ideas[].whyItWorksstringRequired
jobIdstring or nullRequiredThe job that carries out the run, to follow with get_job (GET /v1/jobs/{jobId}); null once it is gone.
createdAtstringRequiredAn ISO 8601 time in UTC.
finishedAtstring or nullRequiredAn 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).

NameTypeRequiredDescription
idstringRequiredThe edit id. It starts with tml_.
projectIdstringRequired
compositionIdstring or nullRequiredThe composition the edit compiles to, to export with create_export (POST /v1/compositions/{compositionId}/exports); null until the edit is first compiled.
revisionintegerRequiredGrows by one at every change; send it as expectedRevision with the next change.
durationSecnumberRequiredHow long the video that comes out lasts, in seconds.
aspectstringRequiredOne of source, 9:16, 1:1, 16:9.
reframestringRequiredHow the video follows the speaker: off keeps the frame, face follows the face, center keeps the middle. One of off, face, center.
captionsobjectRequired
captions.enabledbooleanRequired
captions.stylestringRequiredOne of bold-karaoke, word-pop, boxed, outline.
musicobject or nullRequiredThe music under the edit; null without music.
music.assetIdstring or nullRequiredThe music file. null when the file no longer exists or cannot be used through the API.
music.volumenumberRequired
fadeInSecnumberRequiredThe fade from black at the start, in seconds; 0 for none.
fadeOutSecnumberRequiredThe fade to black at the end, in seconds; 0 for none.
clipsarray of objectsRequiredThe videos the edit uses.
clips[].assetIdstring or nullRequiredThe video. null when the file no longer exists or cannot be used through the API.
clips[].titlestringRequired
clips[].durationSecnumberRequired
clips[].statestringRequiredready 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.
segmentsarray of objectsRequiredThe pieces of video, in the order they play.
segments[].idstringRequiredThe segment id. It starts with seg_.
segments[].assetIdstring or nullRequiredThe video the segment comes from. null when the file no longer exists or cannot be used through the API.
segments[].sourceStartSecnumberRequired
segments[].sourceEndSecnumberRequired
segments[].outputStartSecnumberRequired
segments[].outputEndSecnumberRequired
segments[].zoomnumberRequired
segments[].mutedbooleanRequired
segments[].volumenumberRequired
textsarray of objectsRequired
texts[].idstringRequiredThe text id. It starts with ovl_.
texts[].textstringRequired
texts[].presetstringRequiredOne of headline, hook, caption-note.
texts[].outputStartSecnumberRequired
texts[].durationSecnumberRequired
texts[].xPercentnumber or nullRequired
texts[].yPercentnumber or nullRequired
brollarray of objectsRequired
broll[].idstringRequiredThe b-roll id. It starts with brl_.
broll[].assetIdstring or nullRequiredThe video shown over the edit. null when the file no longer exists or cannot be used through the API.
broll[].outputStartSecnumberRequired
broll[].durationSecnumberRequired
broll[].fitstringRequiredOne of cover, contain.
diagnosticsarray of objectsRequiredWhat the edit cannot do as it is, in one sentence each; empty when nothing.
diagnostics[].codestringRequired
diagnostics[].messagestringRequired

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}).

NameTypeRequiredDescription
idstringRequiredThe upload id. It starts with upl_.
filenamestringRequiredThe name of the file as it will be shown, without any folder in it.
contentTypestringRequiredThe type of the file, such as video/mp4.
sizeBytesintegerRequiredThe size of the whole file, in bytes.
partSizeBytesintegerRequiredThe size of every part except the last one, in bytes.
partCountintegerRequiredHow many parts the file is split into. Parts are numbered from 1 to partCount.
receivedPartsarray of integersRequiredThe numbers of the parts that arrived whole, in order.
createdAtstringRequiredAn ISO 8601 time in UTC.
expiresAtstringRequiredWhen 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).

NameTypeRequiredDescription
idstringRequiredThe turn id. It starts with agm_.
projectIdstringRequired
statusstringRequiredqueued and running are still working; done, failed and cancelled are final. One of queued, running, done, failed, cancelled.
messagestringRequiredThe message the turn answers.
replystring or nullRequiredWhat the Editor Assistant answered; null until the turn ends.
outcomestring or nullRequiredHow 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.
questionstring or nullRequiredThe question the Editor Assistant asks, when outcome is needs_input; null otherwise.
optionsarray of stringsRequiredThe answers the Editor Assistant offers to its question; empty when there are none.
actionsarray of objectsRequiredThe changes the turn made, in order.
actions[].idstringRequiredThe action id. It starts with tc_.
actions[].toolstringRequiredWhat the action did, as a short name.
actions[].statusstringRequiredOne of done, failed, undone.
actions[].summarystringRequiredThe action in one sentence.
actions[].undoablebooleanRequiredtrue when undo_assistant_action (POST /v1/assistant/turns/{turnId}/actions/{actionId}/undo) can undo it.
actions[].creditsReturnedintegerRequiredThe credits given back when the action was undone; 0 otherwise.
jobIdstring or nullRequiredThe job that runs the turn; null once it is gone.
errorMessagestring or nullRequiredWhy the turn failed or stopped, in one sentence; null otherwise.
createdAtstringRequiredAn ISO 8601 time in UTC.
finishedAtstring or nullRequiredAn 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}).

NameTypeRequiredDescription
idstringRequiredThe export id. It starts with rnd_.
compositionIdstringRequiredThe composition this export renders.
projectIdstringRequiredThe project of the composition.
jobIdstring or nullRequiredThe 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.
revisionintegerRequiredThe 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.
statusstringRequiredqueued and rendering are still working; done, failed and cancelled are final. One of queued, rendering, done, failed, cancelled.
progressnumberRequiredHow far the export is, from 0 to 1. From 0 to 1.
errorMessagestring or nullRequiredFor a failed or cancelled export, a short message that says what happened; null otherwise.
createdAtstringRequiredAn ISO 8601 time in UTC.
finishedAtstring or nullRequiredWhen the export ended, done or not; null while it is still working.
fileobject or nullRequiredThe exported MP4, once the export is done; null before. It stays described after the file is deleted (see fileDeletedAt).
file.mimeTypestringRequired
file.sizeBytesintegerRequired
file.durationSecnumber or nullRequired
file.widthinteger or nullRequired
file.heightinteger or nullRequired
downloadUrlstring or nullRequiredA 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.
downloadUrlExpiresAtstring or nullRequiredWhen downloadUrl stops working; null when there is no link.
fileDeletesAtstring or nullRequiredThe 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.
fileDeletedAtstring or nullRequiredWhen 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.

PrefixWhat it isReturned byTaken by
ast_A file in the account, such as an uploaded videocomplete_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 assetNoneNone
prj_Projectlist_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 projectlist_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_Compositionlist_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_Exportcreate_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_Jobanalyze_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_Uploadcreate_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 projectget_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 timelineget_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 timelineget_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 timelineget_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 storyupdate_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 turncreate_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 turnget_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 runcreate_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})