Is there an API for Instagram First Draft? Sume job for each step
The pages we read describe First Draft as an in-app feature, not an API. Each action maps to a Sume job and price, plus the one step that stays manual.

None of the pages we read describe a public API for Instagram's First Draft; they describe an in-app feature on iPhone that you open from the camera or the Reels gallery. You can reproduce the steps with Sume jobs, except the judgment about which take is best, which stays with you.
TechCrunch says First Draft takes the clips you selected, cuts pauses, trims them, and returns a first pass in under ten seconds (TechCrunch, read 2026-10-07). The table maps each of those actions to the closest documented Sume job.
Step-by-step mapping
Sume has no single auto-cut endpoint. The route is a few small jobs, each with its own price from the docs.
| What First Draft does | Closest Sume job | Public rate |
|---|---|---|
| Hears where the speech is | Video inspect with transcribe and sentence segments | $0.01 per audio minute plus compute |
| Cuts pauses and weak starts | Your code picks ranges; video trim cuts them | $0.02 per trim |
| Assembles clips into one cut | Timeline 1.0 render | $0.10 per started output minute |
| Leaves the audio alone or replaces it | Audio detach for the track; Music for a bed | $0.01 per detach; $0.125 per music |
| Adds captions | Video captions | $0.20 per job up to 60 s |
| Chooses the best take | Not automated; you choose | - |
Where the manual step belongs
Auto-cut tools make a judgment about which parts are worth keeping. Segments from a transcript tell you where sentences start and stop, not whether the take was good. Write the pick as a small piece of your own code, such as drop any segment under one second and keep the last full take of each sentence, and log it.
That log is what makes the pipeline repeatable. When a cut is wrong you can see the rule that made it and change one number.
The shortest working version
- Import each clip with
POST /v1/media-imports. - Inspect with
transcribe: trueandsegmentation.mode: "sentence". - Trim the ranges you keep. Default
precision: exactre-encodes frame-accurately. - Join them with
POST /v1/timeline-1.0/render. RunPOST /v1/timeline-1.0/planfirst; it is unbilled. - Burn captions last, on the final cut.
What to prepare
Check Jobs and results for the four communication modes. For a pipeline, use async plus a webhook and keep a poll as the fallback. Every write needs an Idempotency-Key, so a retry cannot render twice.
A sample rule set
A cut rule can be three lines: drop segments shorter than one second, drop a segment that repeats the previous one within the same take, and keep a 0.15-second lead before each sentence so words do not start on a hard cut. Nothing here is special to Sume; the transcript gives you the times and your code applies the rule.
Keep the rule in a file and put the file in version control. When someone asks why a Reel feels clipped, the answer is a number in a commit, not a mystery.
When to use First Draft anyway
If you are the only person making one or two Reels a week on an iPhone, use First Draft and skip all of this. The API route is for teams and batches, where the same decision has to be made the same way fifty times.
Sources
Related posts
More in Developers
- Japanese speech to text API: Sume STT with language_code ja
Transcribe Japanese audio with Sume STT: send language_code ja, read word times, and test a sample first. $0.01 per audio minute, 10 minute jobs.
- Java HttpClient: POST /v1/images on Sume with a 40-second timeout
A single-file Java program that calls Sume's image API with java.net.http, branches on 200, 202 and errors, and sets a timeout longer than the 30-second wait.
- Date.now() is milliseconds: the Sume webhook timestamp is seconds
A Node webhook verifier that compares Date.now() to x-sume-webhook-timestamp rejects every delivery. The one-line fix and a four-case test around 300 s.
- A job id is not a run id: poll image and video generation via /v1/jobs
Image and video generate routes create jobs, not runs. Poll GET /v1/jobs/:id/status until terminal is true. waitForRun is for run ids only.
Written by Sume