Skip to main content
POST
/
automation
/
create-clips
Create Clips
curl --request POST \
  --url https://public.reap.video/api/v1/automation/create-clips \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "sourceUrl": "<string>",
  "uploadId": "<string>",
  "reframeClips": false,
  "exportOrientation": "landscape",
  "exportResolution": 720,
  "captionsPreset": "<string>",
  "enableEmojis": false,
  "enableHighlights": false,
  "language": "<string>",
  "translationLanguage": "<string>",
  "transcriptionScript": "native",
  "genre": "talking",
  "selectedStart": 123,
  "selectedEnd": 123,
  "clipDurations": [],
  "topics": [],
  "prompt": ""
}
'
{
  "id": "<string>",
  "title": "<string>",
  "thumbnail": "<string>",
  "billedDuration": 123,
  "genre": "talking",
  "topics": [
    "<string>"
  ],
  "clipDurations": [
    [
      123
    ]
  ],
  "selectedStart": 123,
  "selectedEnd": 123,
  "reframeClips": true,
  "exportResolution": 123,
  "captionsPreset": "<string>",
  "enableCaptions": true,
  "enableEmojis": true,
  "enableHighlights": true,
  "language": "<string>",
  "dubbingLanguage": "<string>",
  "translateTranscription": true,
  "translationLanguages": [
    "<string>"
  ],
  "transcriptionScript": "native",
  "metadata": {
    "width": 123,
    "height": 123,
    "aspectRatio": "<string>",
    "size": 123,
    "bitrate": 123,
    "fps": 123,
    "duration": 123,
    "rotation": 123,
    "resolution": 123,
    "codec": "<string>",
    "codecFullName": "<string>",
    "codecTag": "<string>",
    "format": "<string>",
    "formatFullName": "<string>"
  },
  "urls": {},
  "createdAt": 123,
  "updatedAt": 123
}
For AI agents: a documentation index is at /llms.txt. Every page is also available as markdown, just append .md to the URL.

Overview

Transform long-form videos into engaging short clips using AI. This endpoint analyzes your video content and automatically extracts the most engaging moments, creating viral-ready clips optimized for social media platforms. For finer editorial control, pass a natural-language prompt describing what kinds of clips you want — clip count, duration, focus, exclusions, editorial mode, and tone are all under your direction. Without a prompt, the AI falls back to virality-driven selection. See Prompt below for capabilities and examples.

Rate Limiting

This endpoint is rate limited to 10 requests per minute per API key.
You must provide either sourceUrl or uploadId, but not both.

Video Requirements

Duration

Minimum: 2 minutes
Maximum: 3 hours

File Size

Maximum: 5 GB

Format

MP4 or MOV with valid video streams

Content Type

Works best with dialogue-rich content

Plan Limits

PlanMax ResolutionConcurrent Projects
Creator1080p3
Studio4K (2160p)10
Higher-tier plans allow you to process more videos simultaneously and export at higher resolutions.
The Automation API requires an active subscription. View pricing to compare plans.
Preview feature. prompt is available for general use but is still being refined. The field itself, its name, and its 1000-character limit are stable — what may shift is how the AI interprets a given instruction and the set of directives it honors. We recommend treating prompt as production-ready for experimentation and internal tooling, and pinning critical workflows to specific prompts you have tested end-to-end.See Prompt below for capabilities and examples.

Response

id
string
Unique project identifier
title
string
Project title (usually the filename)
thumbnail
string
Thumbnail URL for the project
billedDuration
number
Duration in seconds that will be billed to your account
status
string
Current processing status
  • processing - Video is being analyzed and clips are being generated
  • completed - All clips have been generated successfully
  • failed - Processing failed due to an error
projectType
string
Type of project (always “clipping” for this endpoint)
source
string
Source of the video content
  • Upload - Uploaded file
  • Youtube - YouTube URL
genre
string
Video genre used for AI analysis
topics
array
Array of identified topics in the video
clipDurations
array
Array of clip duration preferences
selectedStart
number
Start time in seconds for processing (null if entire video)
selectedEnd
number
End time in seconds for processing (null if entire video)
reframeClips
boolean
Whether clips will be automatically reframed
exportResolution
integer
Output resolution for the clips
exportOrientation
string
Output orientation for the clips
captionsPreset
string
Caption style preset ID (null if captions disabled)
enableCaptions
boolean
Whether captions are enabled
enableEmojis
boolean
Whether emojis are added to captions
enableHighlights
boolean
Whether keyword highlighting is enabled
language
string
Primary language of the video content
dubbingLanguage
string
Target dubbing language (null if not applicable)
translateTranscription
boolean
Whether transcription will be translated
translationLanguages
array
Array of languages for translation
transcriptionScript
string
Script format for transcription (“native” or “roman”)
metadata
object
Video file metadata including duration, resolution, format, etc.
urls
object
Project URLs and assets (populated when processing completes)
createdAt
integer
Unix timestamp when the project was created
updatedAt
integer
Unix timestamp when the project was last updated

Example Request

curl -X POST "https://public.reap.video/api/v1/automation/create-clips" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "uploadId": "65f1a2b3c4d5e6f7a8b9c0d1",
    "genre": "talking",
    "exportResolution": 1080,
    "exportOrientation": "portrait",
    "reframeClips": true,
    "captionsPreset": "system_beasty",
    "enableEmojis": true,
    "enableHighlights": true,
    "language": "en",
    "clipDurations": [[30, 60], [60, 90]],
    "topics": ["product launch", "customer testimonials"],
    "prompt": "Highlight reel of the most quotable founder moments — keep clips under 60 seconds and skip any segments about pricing."
  }'

Example Response

Processing Workflow

  1. Upload Analysis - Video is analyzed for content, speakers, and key moments
  2. AI Clipping - Our AI identifies the most engaging segments for clips
  3. Processing - Clips are generated with your specified settings
  4. Completion - Use Get Project Status to monitor progress
  5. Download - Retrieve clips using Get Project Clips

Best Practices

  • Content Quality: Videos with clear speech and engaging content produce better clips
  • Duration: Longer videos (10+ minutes) typically yield more clip options
  • Genre Selection: Choose the correct genre for optimal AI analysis
  • Caption Presets: Use captions for better engagement on social platforms
  • Resolution: Higher resolutions are better for professional content but take longer to process
  • Clip Durations: Combine multiple ranges (e.g. [[30,60],[60,90]]) to get a variety of clip lengths suited to different platforms. Use shorter for Reels/TikTok, longer for YouTube Shorts
  • Prompt: Reach for prompt when you have specific editorial intent — clip count, duration caps, focus, exclusions, or tone. Topics is the lighter-weight choice for “just bias toward these themes.” Keep prompts concrete (1–3 sentences); pin a tested prompt for production workflows since AI interpretation may evolve while the field is in preview
  • Topics: Be specific with topic strings to get more relevant clips; broad topics like "highlights" cast a wider net while narrow ones like "pricing breakdown" are more precise

Clip Duration Ranges

Use clipDurations to control the length of generated clips. Each value is a [min, max] pair in seconds.
ValueLabel
[0, 30]Under 30 seconds
[30, 60]30s – 60s
[60, 90]60s – 90s
[90, 180]90s – 3 minutes
[180, 300]3 – 5 minutes
You can pass multiple ranges to get a mix of clip lengths. When omitted, the AI determines optimal durations based on the content.

Topics

Use topics to steer the AI toward specific subjects in your video. Pass an array of short topic strings (e.g. ["product demo", "pricing"]) and the AI will prioritize segments that match those themes. When omitted, the AI selects the most engaging topics automatically. For richer control — clip count, duration caps, editorial modes, exclusions, and tone — use the Prompt field instead.

Prompt

prompt is a preview feature — see the Preview note at the top of this page. The field schema is stable; how the AI interprets a given prompt may evolve.
Use prompt to describe in plain language what kinds of clips you want. The instruction (max 1000 characters) is parsed by an LLM into a structured plan that drives clip count, duration, content focus, exclusions, and editorial style. When the prompt and a candidate moment conflict, the prompt wins over generic virality scoring.

What you can do

  • Set how many clips to produce — “give me 5 clips”, “just one highlight reel”
  • Cap clip length — “each under 30 seconds”, “5-minute deep dives”
  • Focus on specific topics, speakers, or themes — “only the section about pricing”, “moments where the host disagrees with the guest”
  • Exclude segments — “skip the intro and sponsor reads”, “no tangents about politics”
  • Pick an editorial mode — highlight reel, trailer, compilation, hooks-only, quotes, Q&A, listicle, storytelling, educational, stats and facts, tips and advice, reaction moments, controversy, topic-focused
  • Steer tone and style — “prefer high-energy delivery”, “open each clip with the key claim”

Example prompts

The 14 prompts below cover the supported editorial modes. Use them verbatim, edit them to fit your video, or write your own.
Build a highlight reel of the very best moments in the video — peak energy, the strongest reactions, the most quotable lines, and the biggest emotional or visual climaxes. Prioritize moments that would still feel powerful out of context, and skip filler, intros, or set-up.
Generate a teaser-style trailer — pick suspenseful, attention-grabbing moments that hook the viewer without giving everything away. Look for cliffhangers, intriguing questions, bold setups, and emotional peaks that make viewers want to watch the full video.
Create a compilation of similar moments from across the video — clips that share a common theme, tone, or topic. Group them so they feel cohesive when watched back-to-back as a single themed reel.
Find clips centered on a single topic or theme. Focus on moments where the speaker discusses one specific subject in depth, and skip tangents or unrelated digressions.
Extract only the strongest hooks — the opening lines, bold statements, or attention-grabbing moments designed to stop a viewer mid-scroll. Look for surprising claims, questions, or pattern-interrupts.
Pull out the most quotable lines — punchy one-liners, memorable phrases, or sharp insights that work as standalone soundbites and would read well as text overlays or pull-quotes.
Find educational moments — clear explanations, lessons, frameworks, or insights that teach the viewer something new. Prioritize clips that deliver real value or impart knowledge concisely.
Build a listicle-style breakdown — moments where the speaker enumerates points, steps, reasons, or tips in order. Look for “first…”, “second…”, “three reasons…”, and similar list-driven structures.
Pick out storytelling moments — narrative arcs with setup, conflict, and payoff. Look for personal anecdotes, case studies, or any segment where the speaker takes the viewer on a journey.
Find clear question-and-answer exchanges — interview questions paired with strong responses, or moments where the speaker fields and addresses a specific question. Each clip should make sense as a standalone Q&A pair.
Surface moments containing notable statistics, data points, or factual claims. Look for numbers, percentages, comparisons, or verified facts that lend credibility and would catch a viewer’s attention.
Extract practical tips and advice — short, actionable recommendations the audience can apply immediately. Each clip should deliver one concrete piece of guidance, not vague philosophy.
Find strong reaction moments — surprise, shock, laughter, awe, or visible emotional responses from anyone on screen. Look for facial expressions and unfiltered reactions that capture the moment’s energy.
Surface controversial or polarizing moments — strong opinions, callouts, or statements likely to spark debate. Look for clips that take a clear stance or make claims people would react to in the comments.

Using prompt and topics together

You can send either field, both, or neither:
  • prompt only — full natural-language control. Drives clip count, duration, focus, exclusions, and mode.
  • topics only — the AI auto-maps to a topic-focused mode and prioritizes the listed themes.
  • Both — the prompt wins on conflict; topics act as additional guidance the prompt can refine or override.
  • Neither — the AI falls back to baseline virality-driven selection.

Limits and validation

  • Length: up to 1000 characters. Longer prompts are rejected at request validation.
  • Sanitization: prompts are Unicode-normalized and stripped of zero-width, bidi, and other control characters. Multi-language printable text and emoji are preserved.
  • Rejection: prompts that attempt jailbreaks, ask for unsupported instructions, or otherwise can’t be processed return a 400 with a plain-language reason in the response body.

Use Cases

Content Agencies

Scale video production for multiple clients with automated, prompt-driven clipping workflows

Media Companies

Repurpose long-form content into platform-optimized clips with editorial prompts that match each show’s voice

EdTech Platforms

Extract key teaching moments from lectures at scale, steered by prompts that target concepts and learning objectives

SaaS Products

Add prompt-controlled video clipping to your product without building the AI selection layer from scratch

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
sourceUrl
string

YouTube URL to process (alternative to uploadId)

uploadId
string

Upload ID from a previously uploaded file (alternative to sourceUrl)

reframeClips
boolean
default:false

Whether to automatically reframe clips for different aspect ratios

exportOrientation
enum<string>
default:landscape

Output orientation for the clips

Available options:
landscape,
portrait,
square
exportResolution
enum<integer>
default:720

Output resolution for the clips

Available options:
720,
1080,
1440,
2160
captionsPreset
string | null

Caption style preset ID (null to disable captions)

enableEmojis
boolean
default:false

Whether to add emojis to captions

enableHighlights
boolean
default:false

Whether to highlight keywords in captions

language
string | null

Primary language of the video content (auto-detected if not provided)

translationLanguage
string | null

Language to translate captions to

transcriptionScript
enum<string>
default:native

Script format for transcription output

Available options:
native,
roman
genre
enum<string>
default:talking

Video genre for better AI analysis

Available options:
talking,
screenshare,
gaming
selectedStart
number | null

Start time in seconds for processing

selectedEnd
number | null

End time in seconds for processing

clipDurations
integer[][]

Preferred clip duration ranges as [min, max] pairs in seconds. Valid ranges: [0,30], [30,60], [60,90], [90,180], [180,300]. When omitted, the AI determines optimal durations.

topics
string[]

Topic preferences to guide the AI when selecting clip segments. For example: ["product launch", "customer testimonials"]. When omitted, the AI selects the most engaging topics automatically.

prompt
string
default:""

Preview feature — schema is stable, AI interpretation may evolve. Free-form natural-language instruction (max 1000 chars) that guides what kinds of clips the AI selects — for example 'highlight reel of the funniest moments' or 'only product-demo segments under 30 seconds'. Can control clip count, duration, content scope, exclusions, editorial mode, and tone. Overrides generic virality scoring when the prompt and a candidate moment conflict. When omitted, the AI uses standard virality-driven selection.

Maximum string length: 1000

Response

200 - application/json

Successful response

id
string
title
string
thumbnail
string
billedDuration
number
status
enum<string>
Available options:
queued,
prepped,
draft,
processing,
finalizing,
completed,
invalid,
expired,
failed,
error
projectType
enum<string>
Available options:
clipping,
captions,
reframe,
dubbing,
transcription
source
enum<string>
Available options:
Upload,
Youtube,
Vimeo,
TwitchVod,
Twitter,
RumbleEmbed,
Generic
genre
enum<string>
default:talking
Available options:
talking,
screenshare,
gaming
topics
string[]
clipDurations
integer[][]
selectedStart
number | null
selectedEnd
number | null
reframeClips
boolean
exportResolution
integer
exportOrientation
enum<string>
Available options:
landscape,
portrait,
square
captionsPreset
string | null
enableCaptions
boolean
enableEmojis
boolean
enableHighlights
boolean
language
string | null
dubbingLanguage
string | null
translateTranscription
boolean
translationLanguages
string[]
transcriptionScript
enum<string>
default:native
Available options:
native,
roman
metadata
object
urls
object
createdAt
integer
updatedAt
integer