Prepare a new video
prepare_video, in Changes: A connection or key that may make changes. None spends credits; prepare_* and stage tools (research, brainstorm, write_script, review, generate_clip, voice, storyboard) prepare paid work for confirm_spend.
Create a video from a brief, with its attachments and settings, as a draft, and prepare its first run. Nothing is spent: the preview says its price (quote, when work is charged at fixed prices) and whether the organization's credits cover it, and confirming starts it. Show the person the preview. If the connection may spend, call confirm_spend with the confirmationId once they agree; otherwise send them the confirmUrl to confirm it in the studio. It expires in 15 minutes. Pass a new requestKey; repeating one returns the same draft and confirmation.
apiKeyAuthorizationBearer <token>An API key (prb_…) from Settings → Connections.
application/json- body
spaceId*string^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidbrief*string10 <= length <= 20000name?string1 <= length <= 120objective?string"retention""reach""retention""follows""clicks""conversions"platform?string"tiktok""tiktok""instagram-reels""both"aspect?string"portrait""portrait""square""landscape"lengthSeconds*numberHow long the video runs, in seconds, which its scenes divide and its price counts
15304560motion?string"text-only""text-only""reference"format?stringThe format to make it in, by its ID from list_formats; without one, UGC
length <= 64mode?stringautonomous decides for the person and goes on; interactive asks first: it waits at its storyboard and its listen before any clip (get_video's waitingOnYou, answered with approve_storyboard, approve_listen and the like), and may ask an essential question
"autonomous""autonomous""interactive"voice?string"studio""studio""seedance"captions?attachments?array<||>items <= 45requestKey*string^[\w.:-]+$8 <= length <= 64The tool's answer.
application/json- response
videoId*string^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidconfirmationId*string^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidexpiresAt*stringpreview*||||||confirmUrl*|nullcurl -X POST 'https://studio.probably.co/api/v1/tools/prepare_video' \ -H "Authorization: Bearer $PROBABLY_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "spaceId": "a330a273-e64a-4183-aedb-f3152797a9a5", "brief": "stringstri", "lengthSeconds": 15, "requestKey": "stringst"}'{ "videoId": "3524e86f-1bba-489a-bf6b-386ea1abbac0", "confirmationId": "40b00753-949e-4f8e-a4cc-6b64ed5887e1", "expiresAt": "string", "preview": { "kind": "run", "fits": true, "availableCredits": 0, "freeDraft": true, "quote": null, "estimatedCredits": 0, "sandbox": false }, "confirmUrl": "http://example.com"}