Get Project Status
curl --request GET \
--url https://public.reap.video/api/v1/automation/get-project-status \
--header 'Authorization: Bearer <token>'import requests
url = "https://public.reap.video/api/v1/automation/get-project-status"
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-status', 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-status",
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-status"
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-status")
.header("Authorization", "Bearer <token>")
.asString();{
"projectId": "<string>",
"projectType": "clipping",
"source": "Upload",
"status": "queued"
}Track & Retrieve
Get Project Status
Check the current processing status of a video project
GET
/
automation
/
get-project-status
Get Project Status
curl --request GET \
--url https://public.reap.video/api/v1/automation/get-project-status \
--header 'Authorization: Bearer <token>'import requests
url = "https://public.reap.video/api/v1/automation/get-project-status"
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-status', 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-status",
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-status"
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-status")
.header("Authorization", "Bearer <token>")
.asString();{
"projectId": "<string>",
"projectType": "clipping",
"source": "Upload",
"status": "queued"
}
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 the current processing status of a video project. This is a lightweight endpoint that returns essential status information for monitoring project progress without fetching full project details.Response
string
The unique identifier of the project
string
Type of project (“clipping”, “captions”, “reframe”, “dubbing”, or “transcription”)
string
Source of the original video (“Youtube”, “Upload”, or “Generic”)
string
Current processing status of the project
Project Status Values
status
Project is queued and waiting to be processed
status
Project is currently being processed by our AI systems
status
Project has finished processing successfully - clips are ready
status
Project processing failed due to an error
status
Project was cancelled before completion
Project Type Values
project-type
AI-powered short clip generation from long-form videos
project-type
Caption generation and styling for videos
project-type
Video reframing for different aspect ratios
project-type
Voice dubbing and translation services
project-type
Audio transcription for videos
Example Request
curl -X GET "https://public.reap.video/api/v1/automation/get-project-status?projectId=65f1a2b3c4d5e6f7a8b9c0d1" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
const projectId = '65f1a2b3c4d5e6f7a8b9c0d1';
const response = await fetch(`https://public.reap.video/api/v1/automation/get-project-status?projectId=${projectId}`, {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const status = await response.json();
console.log('Project status:', status.status);
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
project_id = '65f1a2b3c4d5e6f7a8b9c0d1'
response = requests.get(
'https://public.reap.video/api/v1/automation/get-project-status',
headers=headers,
params={'projectId': project_id}
)
status = response.json()
print(f"Project {status['projectId']} is {status['status']}")
<?php
$projectId = '65f1a2b3c4d5e6f7a8b9c0d1';
$url = 'https://public.reap.video/api/v1/automation/get-project-status?projectId=' . $projectId;
$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);
$status = json_decode($response, true);
echo 'Project status: ' . $status['status'] . "\n";
?>
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
projectId := "65f1a2b3c4d5e6f7a8b9c0d1"
url := "https://public.reap.video/api/v1/automation/get-project-status?projectId=" + 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)
fmt.Println(string(body))
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class GetProjectStatusExample {
public static void main(String[] args) throws Exception {
String projectId = "65f1a2b3c4d5e6f7a8b9c0d1";
URL url = new URL("https://public.reap.video/api/v1/automation/get-project-status?projectId=" + projectId);
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
Polling Example
Prefer webhooks over polling. Set up webhooks to get notified automatically when projects reach a final state, instead of polling this endpoint in a loop.
async function waitForCompletion(projectId) {
const pollInterval = 5000; // 5 seconds
while (true) {
const response = await fetch(`https://public.reap.video/api/v1/automation/get-project-status?projectId=${projectId}`, {
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
});
const status = await response.json();
if (status.status === 'completed') {
console.log('Project completed successfully!');
break;
} else if (status.status === 'failed') {
console.log('Project failed');
break;
}
console.log('Still processing...');
await new Promise(resolve => setTimeout(resolve, pollInterval));
}
}
Processing Times
Typical processing times by project type:Clipping Projects
5-15 minutes depending on video length and complexity
Caption Projects
2-5 minutes for most video lengths
Reframe Projects
3-8 minutes depending on video length
Dubbing Projects
10-20 minutes depending on video length and language pair
Rate Limiting
This endpoint is subject to the standard rate limit of 10 requests per minute.Best Practices
Polling Guidelines:
- Poll every 5-10 seconds for active monitoring
- Use exponential backoff for long-running projects
- Handle rate limits gracefully in your polling logic
- Consider using webhooks for production applications instead of polling
Common Use Cases
Progress Monitoring
Track project progress in real-time user interfaces
Automated Workflows
Build automated systems that wait for project completion
Status Dashboards
Create monitoring dashboards for multiple projects
Error Handling
Detect and handle failed projects in your applications
Next Steps
Based on the project status:- Processing: Continue monitoring or check Get Project Details
- Completed: Retrieve results with Get Project Clips
- Failed: Review project details and retry if needed
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Unique identifier of the project
Response
200 - application/json
Successful response
Available options:
clipping, captions, reframe, dubbing, transcription Available options:
Upload, Youtube, Vimeo, TwitchVod, Twitter, RumbleEmbed, Generic Available options:
queued, prepped, draft, processing, finalizing, completed, invalid, expired, failed, error Was this page helpful?