Get Project Clips
curl --request GET \
--url https://public.reap.video/api/v1/automation/get-project-clips \
--header 'Authorization: Bearer <token>'import requests
url = "https://public.reap.video/api/v1/automation/get-project-clips"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.reap.video/api/v1/automation/get-project-clips', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public.reap.video/api/v1/automation/get-project-clips",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public.reap.video/api/v1/automation/get-project-clips"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public.reap.video/api/v1/automation/get-project-clips")
.header("Authorization", "Bearer <token>")
.asString();{
"clips": [
{
"id": "<string>",
"projectId": "<string>",
"clipUrl": "<string>",
"startTime": 123,
"endTime": 123,
"duration": 123,
"topic": "<string>",
"title": "<string>",
"caption": "<string>",
"language": "<string>",
"translateTranscription": true,
"translationLanguages": [
"<string>"
],
"transcriptionScript": "native",
"viralityScore": 123,
"exportResolution": 123,
"exportOrientation": "landscape",
"captionsPreset": "<string>",
"enableCaptions": true,
"enableEmojis": true,
"enableHighlights": true,
"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>"
},
"createdAt": 123,
"updatedAt": 123
}
],
"currentPage": 123,
"totalPages": 123,
"totalClips": 123
}Track & Retrieve
Get Project Clips
Retrieve all clips generated from a video project
GET
/
automation
/
get-project-clips
Get Project Clips
curl --request GET \
--url https://public.reap.video/api/v1/automation/get-project-clips \
--header 'Authorization: Bearer <token>'import requests
url = "https://public.reap.video/api/v1/automation/get-project-clips"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://public.reap.video/api/v1/automation/get-project-clips', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://public.reap.video/api/v1/automation/get-project-clips",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://public.reap.video/api/v1/automation/get-project-clips"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public.reap.video/api/v1/automation/get-project-clips")
.header("Authorization", "Bearer <token>")
.asString();{
"clips": [
{
"id": "<string>",
"projectId": "<string>",
"clipUrl": "<string>",
"startTime": 123,
"endTime": 123,
"duration": 123,
"topic": "<string>",
"title": "<string>",
"caption": "<string>",
"language": "<string>",
"translateTranscription": true,
"translationLanguages": [
"<string>"
],
"transcriptionScript": "native",
"viralityScore": 123,
"exportResolution": 123,
"exportOrientation": "landscape",
"captionsPreset": "<string>",
"enableCaptions": true,
"enableEmojis": true,
"enableHighlights": true,
"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>"
},
"createdAt": 123,
"updatedAt": 123
}
],
"currentPage": 123,
"totalPages": 123,
"totalClips": 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
Get all clips generated from a completed video project. This endpoint returns downloadable URLs for each clip, along with metadata like virality scores, titles, and captions.Rate Limiting
This endpoint is rate limited to 10 requests per minute per API key.Response
array
Array of clip objects
Show Clip Object
Show Clip Object
string
Unique identifier for the clip
string
ID of the parent project
string
Direct download URL for the final clip (includes captions if enabled)
number
Start time of the clip in the original video (seconds)
number
End time of the clip in the original video (seconds)
number
Duration of the clip in seconds
string
Primary topic or theme of the clip
string
AI-generated title for the clip
string
AI-generated caption/description for the clip
string
Language of the clip content
boolean
Whether transcription is translated
array
Array of languages for translation
string
Target dubbing language (for dubbing projects)
string
Script format for transcription (“native” or “roman”)
number
AI-predicted virality score (0-10, higher is better)
integer
Resolution of the exported clip
string
Orientation of the exported clip (“landscape”, “portrait”, “square”)
string
Caption style preset used for this clip
boolean
Whether captions are enabled for this clip
boolean
Whether emojis are added to captions
boolean
Whether keyword highlighting is enabled
object
Clip metadata including technical details
integer
Unix timestamp when the clip was created
integer
Unix timestamp when the clip was last updated
integer
Current page number
integer
Total number of pages available
integer
Total number of clips in the project
Example Request
curl -X GET "https://public.reap.video/api/v1/automation/get-project-clips?projectId=65f1a2b3c4d5e6f7a8b9c0d2&page=1&pageSize=10" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
const projectId = '65f1a2b3c4d5e6f7a8b9c0d2';
const response = await fetch(`https://public.reap.video/api/v1/automation/get-project-clips?projectId=${projectId}&page=1&pageSize=10`, {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(`Found ${data.totalClips} clips`);
data.clips.forEach(clip => {
console.log(`${clip.title} (Score: ${clip.viralityScore})`);
});
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
project_id = '65f1a2b3c4d5e6f7a8b9c0d2'
response = requests.get(
f'https://public.reap.video/api/v1/automation/get-project-clips?projectId={project_id}&page=1&pageSize=10',
headers=headers
)
data = response.json()
print(f"Found {data['totalClips']} clips")
for clip in data['clips']:
print(f"{clip['title']} (Score: {clip['viralityScore']})")
<?php
$projectId = '65f1a2b3c4d5e6f7a8b9c0d2';
$url = 'https://public.reap.video/api/v1/automation/get-project-clips?projectId=' . $projectId . '&page=1&pageSize=10';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo 'Found ' . $data['totalClips'] . " clips\n";
foreach ($data['clips'] as $clip) {
echo $clip['title'] . ' (Score: ' . $clip['viralityScore'] . ")\n";
}
?>
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type Clip struct {
Title string `json:"title"`
ViralityScore float64 `json:"viralityScore"`
}
type Response struct {
TotalClips int `json:"totalClips"`
Clips []Clip `json:"clips"`
}
func main() {
projectId := "65f1a2b3c4d5e6f7a8b9c0d2"
url := fmt.Sprintf("https://public.reap.video/api/v1/automation/get-project-clips?projectId=%s&page=1&pageSize=10", projectId)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
var result Response
json.Unmarshal(body, &result)
fmt.Printf("Found %d clips\n", result.TotalClips)
for _, clip := range result.Clips {
fmt.Printf("%s (Score: %.1f)\n", clip.Title, clip.ViralityScore)
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class GetProjectClipsExample {
public static void main(String[] args) throws Exception {
String projectId = "65f1a2b3c4d5e6f7a8b9c0d2";
URL url = new URL("https://public.reap.video/api/v1/automation/get-project-clips?projectId=" + projectId + "&page=1&pageSize=10");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer YOUR_API_KEY");
conn.setRequestProperty("Content-Type", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
br.close();
System.out.println(response.toString());
}
}
Example Response
Virality Score
The virality score is an AI-predicted metric (0-10) that indicates how likely a clip is to perform well on social media:- 9-10: Exceptional content with viral potential
- 7-8: High-quality content likely to perform well
- 5-6: Good content suitable for regular posting
- 3-4: Average content that may need optimization
- 1-2: Lower-quality content requiring review
Clip Status
Clips are only returned when the parent project status iscompleted. If the project is still processing, this endpoint will return an empty clips array.
Use Cases
Content Distribution
Download clips for posting across social platforms
Performance Analysis
Use virality scores to prioritize high-potential content
Batch Processing
Retrieve all clips for automated publishing workflows
Quality Control
Review clip titles and captions before publishing
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Unique identifier of the project
Page number for pagination
Number of clips per page (max 100)
Was this page helpful?