Generate a CapCut draft from code
To generate a CapCut draft programmatically, describe the edit in Edit JSON and send it to the Edit API with the target capcut. You get back a CapCut desktop project folder, with your captions as CapCut captions on a caption track.
CapCut 9.5.0 opened all nine test projects, and its own re-save matched every clip, speed, fade and caption.
Updated
3 exports a month without a key, 10 with a free one. API pricing
What you get for CapCut
The capcut/ folder of the zip holds the project folder and Open in CapCut.txt. To open it, quit CapCut, move the project folder into CapCut's projects folder, then open CapCut.
Media you send goes in capcut/, beside Open in CapCut.txt. The project asks for it by name, CapCut lists it in its Link media window, and you pick it there. Leave the media in that folder when you move the project.
The code
With the Edit API
The same call as on the overview, with only capcut in targets.
{
"edit": {
"cutconvert": "edit/1",
"name": "Edit 09 minimal",
"timeline": { "fps": 25, "width": 1280, "height": 720 },
"media": [
{ "id": "silent", "name": "silent-25.mp4", "duration": 30.0, "fps": 25, "width": 1280, "height": 720 }
],
"video": [
{ "clips": [{ "media": "silent", "start": 0, "in": 2, "out": 12 }] }
]
},
"targets": ["capcut"]
}curl -sS https://cutconvert.com/api/edit/export \
-H "Content-Type: application/json" \
--data @request.json \
-o edit.zipcapcut/
Open in CapCut.txt
Edit 09 minimal/ the CapCut project folder
draft_content.json
draft_info.json
draft_meta_info.json
timeline_layout.json
Timelines/…
silent-25.mp4 media you sent, beside Open in CapCut.txt
report.jsonWhat carries over to CapCut
When a loss depends on the document, report.json also warns, with a code and a sentence. A start timecode CapCut can't hold comes back as edit-capcut-start-timecode.
| CapCut | |
|---|---|
| Captions | CapCut captions on a caption track, each in its own look |
| Titles | Text |
| Stroke and box | Both |
| Bold | Carried |
| Audio fades | The clip's fade in and fade out |
| Sound under a cross dissolve | The two sounds overlap, each fading: CapCut has no crossfade |
Media with no path | The file by name: CapCut's Link media window lists it on opening |
| Picture and sound | One clip that plays its own sound, except at a cross dissolve or for media with no path, where the sound is a separate clip on an audio track |
| Sound at −96 dB or lower | Volume 0 |
| Track names | Not shown: CapCut's tracks have no names |
| Start timecode | Not carried: CapCut timelines start at 00:00:00:00 (edit-capcut-start-timecode); drop-frame display is kept |
Checked in CapCut 9.5.0
We opened the test documents' projects in the editor on October 29, 2026, on macOS, then read back what it kept from its own project file or export.
- Each caption kept its box and outline, and a caption with its own style kept it: yellow, larger and centred. They stay CapCut captions, with the caption icon on a caption track.
- The CapCut writer doesn't map font families yet. report.json warns with
capcut-write-title-fonts, so you can pick the fonts in CapCut.
Relinking media with no path
A document can name a file with no path. Each editor then opens the edit with that file's clips offline, under the file's name, until you link them. This is what CapCut 9.5.0 shows.
| On opening | To relink |
|---|---|
| A "Link media" window: "Couldn't find some of the imported media files. Link the media files then edit." It lists each file by name, with "Link media when selecting a folder" ticked. | Link media, then pick a file in the folder: the others in it link too (checked on CutConvert's iMovie to CapCut projects, not on these). |
Limits
- CapCut timelines start at 00:00:00:00, so CapCut drops a start timecode. report.json warns with
edit-capcut-start-timecode. - CapCut has no crossfade. Under a cross dissolve the two sounds overlap, each fading, and CapCut re-saves a 1.001 s dissolve as 1.0 s.
- CapCut tracks have no names, so the document's track names don't show.
- The open package doesn't write CapCut projects. Only the hosted API does.
- A call is at most 25 MB, media included, and the document on its own at most 8 MB. A document places up to 20,000 clips, captions and titles in all, and a video clip whose file has sound counts twice.
- Version 1 of the format leaves out variable speed, nested timelines, transitions other than cross dissolve, effects, colour, multicam, still images, scale or opacity keyframes, marker colours, and trimming media on the server.
FAQ
How do I open the CapCut project?
Follow Open in CapCut.txt in the zip's capcut/ folder: quit CapCut, move the project folder into CapCut's projects folder, then open CapCut. The project shows on CapCut's home screen.
Are the captions real CapCut captions?
Yes. They sit on a caption track, each in its own look. In CapCut 9.5.0 they kept their box and outline, and a caption with its own colour and size kept them. The writer doesn't map font families yet.
What happens to media with no path?
CapCut opens a Link media window that lists each file by name. Click Link media and pick one of the files. With "Link media when selecting a folder" ticked, CapCut links the others from the same folder. We checked that linking on CutConvert's iMovie to CapCut projects, not yet on these.
Can I write a CapCut draft without the API?
Not with CutConvert. The open package, @cutconvert/edit, writes Premiere Pro XML and FCPXML only. The CapCut writer runs on CutConvert's server, behind the Edit API.
Does CapCut keep the start timecode and track names?
No. CapCut timelines start at 00:00:00:00 and its tracks have no names. When it drops a start timecode, report.json warns with edit-capcut-start-timecode. CapCut keeps drop-frame display.
How do picture and sound come in?
A video clip is one CapCut clip that plays its own sound. At a cross dissolve, or for media with no path, the sound is a separate clip on an audio track.
More for developers
- Edit API overviewThe call, the four editors, the free tier and pricing.
- Write Premiere Pro XML from Node, the browser or one API callClips come in linked to their sound, and captions are Text generator clips you can edit.
- Create a DaVinci Resolve project from codeCaptions are Text+ clips with their outline and box, and track names are kept.
- Generate FCPXML for Final Cut Pro programmaticallyCaptions are Basic Titles with their outline, and audio fades are the clip's own fade handles.
- Edit JSON formatEvery field and rule of the document you send.
- API referenceThe call, the zip, report.json, errors and pricing.
Questions about the Edit API: [email protected]