Skip to content
CutConvert

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.

request.json
{
  "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"]
}
Terminal
curl -sS https://cutconvert.com/api/edit/export \
  -H "Content-Type: application/json" \
  --data @request.json \
  -o edit.zip
edit.zip
capcut/
  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.json

What 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
CaptionsCapCut captions on a caption track, each in its own look
TitlesText
Stroke and boxBoth
BoldCarried
Audio fadesThe clip's fade in and fade out
Sound under a cross dissolveThe two sounds overlap, each fading: CapCut has no crossfade
Media with no pathThe file by name: CapCut's Link media window lists it on opening
Picture and soundOne 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 lowerVolume 0
Track namesNot shown: CapCut's tracks have no names
Start timecodeNot carried: CapCut timelines start at 00:00:00:00 (edit-capcut-start-timecode); drop-frame display is kept

Compare all four editors

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 openingTo 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.

Questions about the Edit API: [email protected]