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": []
}
'
{
  "id": "<string>",
  "title": "<string>",
  "thumbnail": "<string>",
  "billedDuration": 123,
  "status": "queued",
  "projectType": "clipping",
  "source": "Upload",
  "genre": "talking",
  "topics": [
    "<string>"
  ],
  "clipDurations": [
    [
      123
    ]
  ],
  "selectedStart": 123,
  "selectedEnd": 123,
  "reframeClips": true,
  "exportResolution": 123,
  "exportOrientation": "landscape",
  "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
}

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.

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
Creator1080p5
Studio4K (2160p)15
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.

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"]
  }'

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 — shorter for Reels/TikTok, longer for YouTube Shorts
  • 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.

Use Cases

Content Agencies

Scale video production for multiple clients with automated clipping workflows

Media Companies

Repurpose long-form content into platform-optimized clips automatically

EdTech Platforms

Extract key teaching moments from lectures at scale

SaaS Products

Add video clipping features to your product without building 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.

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