Edit project
edit_projectEdit an existing project in place, with the same tools as the assistant in the Revid editor. Send every change for one video in one call as edits: they run in order and save as one revision. Either all apply or none, unless a paid edit already ran. Changing words in a motion graphic: list_composition_text to read them, then replace_composition_text ({ mediaId, replacements: [{ find, replace }] }). Free, instant, nothing else in the scene moves, wherever the words live. Other free edits: update_text, set_caption_text, translate_captions (every caption line into another language in one call, the audio untouched), set_caption_style, apply_caption_preset, set_media_props, set_animation, set_transition, move_media, trim_media, split_media, remove_media, close_gap, duplicate_media, add_text_media, add_image_media, add_video_media, add_audio_media, add_music, rename_project. Paid, charged like in the editor, and needing an active plan: edit_composition (rebuild a motion graphic's design, layout or motion from a prompt: 5 credits, several minutes and up to 15 on a long scene; do it before split_media, since a rebuilt piece restarts its animation; it retypes the whole scene, so read sourceChanges when it lands, and restore_composition undoes it for free), generate_motion_graphic, generate_video (replaceMediaId redoes a clip), generate_image, edit_image, generate_voiceover, generate_music, generate_sound_effect. Long ones return a jobId: follow it with get_edit_job. At most one of generate_image, edit_image, create_ingredient, generate_title_graphic, generate_music, generate_voiceover, generate_sound_effect per call: each takes up to 90 seconds, so split a batch with more and send the parts in order. While a paid edit runs on a project, other edits to it answer 409 EDIT_IN_PROGRESS: if a call times out, wait, then call get_timeline before trying again, never resend a paid edit blind. dryRun: true returns the credit estimate of a batch and saves nothing. describe_edit_tools gives every tool and its schema; an invalid call answers with the schema too. Check the result with view_frames. It does not change any mp4 already exported: call export_video when the edit is right.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"pid": "<pid>",
"edits": "<edits>"
},
"name": "edit_project"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | Revid project id. | |
| edits | Yes | The changes, in order. | |
| dryRun | No | Validate and price the batch without saving or charging. | |
| baseRevision | No | The editRevision you read from get_timeline. If the project changed since, the call is refused and nothing is overwritten. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | ||
| data | No | ||
| error | No | ||
| method | Yes | ||
| status | Yes | ||
| endpoint | Yes | ||
| retryAfterSeconds | No |