Approve a video plan
approve_studio_video_planApprove the plan the director put up — the only step that makes anything. Send pending_plan.proposal_id and its quoted_credits as expected_credit_cost; a mismatch is refused. Plans quoted at 0 (captions, end cards, trims, library music) are free; drawn beats, a custom music track, text behind the speaker and re-voicing are priced on the plan. A paid plan spends Creative Credits against this connection's daily cap: NEVER approve one without the user's explicit go-ahead on that price. Optional resolution picks one of pending_plan.alternatives — then send that alternative's credits. A plan with pack: true is separate shots: optional shots (its shots[].shot_id values) approves only those, and expected_credit_cost is then the sum of their credits; unchosen shots are not made or charged. If the plan cannot be applied (request_failed), its message says why, anything it charged is refunded, and the plan stays waiting to be approved again. Afterwards poll get_studio_video until ready.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| shots | No | Pack plans only: pending_plan.shots[].shot_id values to make. Omit for every shot | |
| user_goal | No | Optional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details. | |
| project_id | Yes | Project id from create_motion_project. The bare project id or the library id ("studio-video:<uuid>" from list_creations / find_creation) both work. | |
| resolution | No | One of pending_plan.alternatives[].resolution, to take that size instead | |
| proposal_id | Yes | pending_plan.proposal_id from get_studio_video or studio_video_message | |
| expected_credit_cost | Yes | pending_plan.quoted_credits (0 for a free plan) |