Skip to main content
POST
/
automation
/
create-reframe
Create Reframe
curl --request POST \
  --url https://public.reap.video/api/v1/automation/create-reframe \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "uploadId": "<string>",
  "genre": "talking",
  "orientation": "portrait",
  "disableAutoSplit": false
}
'
{
  "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

Automatically reframe videos from landscape to portrait or square formats using AI. Perfect for adapting content for TikTok, Instagram Stories, and other vertical video platforms.

Rate Limiting

This endpoint is rate limited to 10 requests per minute per API key.

Video Requirements

Duration

Minimum: 3 seconds
Maximum: 15 minutes

File Size

Maximum: 5 GB

Format

MP4 or MOV with valid video streams

Source Format

Works best with landscape (16:9) source videos

Plan Limits

Reframe is only available on Studio plans. Creator and Free plans cannot use this endpoint.
PlanConcurrent Projects
Studio15
The Automation API requires an active Studio 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 reframed
  • completed - Reframing completed successfully
  • failed - Processing failed due to an error
projectType
string
Type of project (always “reframe” for this endpoint)
source
string
Source of the video content (always “Upload” for this endpoint)
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 are automatically reframed (always true for reframe projects)
exportResolution
integer
Output resolution for the reframed video
exportOrientation
string
Output orientation for the reframed video
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
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-reframe" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "uploadId": "65f1a2b3c4d5e6f7a8b9c0d1",
    "genre": "talking",
    "orientation": "portrait",
    "disableAutoSplit": false
  }'

Example Response

Processing Workflow

  1. Upload Analysis - Video is analyzed for speakers, objects, and key visual elements
  2. Smart Cropping - AI automatically crops and reframes to keep important content in view
  3. Motion Tracking - Follows speakers and maintains optimal framing throughout the video
  4. Segmentation - Optionally splits longer videos into optimal segments (unless disabled)
  5. Output Generation - Creates reframed video in the target aspect ratio

Reframing Features

  • Speaker Tracking: Automatically follows speakers and keeps them centered
  • Object Recognition: Identifies and tracks important visual elements
  • Smart Cropping: Maintains optimal composition throughout the video
  • Smooth Transitions: Ensures natural camera movements between focus points
  • Auto-Segmentation: Intelligently splits content into engaging segments

Use Cases

Multi-Platform Distribution

Automatically adapt content for YouTube, TikTok, Instagram, and more

Content Management Systems

Generate all aspect ratio variants on upload for any platform

Video Hosting Platforms

Offer automatic reframing as a feature to your users

Marketing Automation

Scale ad creative production across different placements

Best Practices

  • Source Quality: Use high-resolution landscape videos for best results
  • Speaker Positioning: Videos with centered speakers reframe more effectively
  • Content Type: Works best with talking head videos and presentations
  • Duration: Shorter videos (under 5 minutes) process faster and more accurately

Authorizations

Authorization
string
header
required

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

Body

application/json
uploadId
string
required

Upload ID from a previously uploaded file

genre
enum<string>
default:talking

Video genre for better AI analysis

Available options:
talking,
screenshare,
gaming
orientation
enum<string>
default:portrait

Target orientation

Available options:
portrait,
square
disableAutoSplit
boolean
default:false

Whether to disable automatic splitting into segments

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