Video Cut API¶
Pricing¶
35 credits per request
Fixed cost regardless of video length or number of cuts.
Overview¶
The Video Cut API allows you to extract multiple segments from a media file (video or audio) and merge them into a single output file. Perfect for creating highlights, removing unwanted sections, or combining specific parts of your media files.
Domain: api.revidapi.com
Endpoint¶
POST https://revidapi.com/v1/video/cut
Authentication: Required - Header x-api-key
Request¶
Headers¶
x-api-key: Required. Your API key for authentication.Content-Type: Required. Must beapplication/json.
Body Parameters¶
Required Parameters¶
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
media_url |
string (URI) | ✅ Yes | - | URL of the media file to be cut |
cuts |
array | ✅ Yes | - | Array of cut segments [{start, end}, ...] |
Optional Parameters¶
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
video_codec |
string | ❌ No | libx264 |
Video codec for encoding output |
video_preset |
string | ❌ No | medium |
Video preset for encoding |
video_crf |
number | ❌ No | 23 |
Constant Rate Factor (0-51, lower = better quality) |
audio_codec |
string | ❌ No | aac |
Audio codec for encoding output |
audio_bitrate |
string | ❌ No | 128k |
Audio bitrate for encoding |
webhook_url |
string (URI) | ❌ No | - | URL to receive the result when processing is complete |
id |
string | ❌ No | - | Custom identifier for tracking the request |
cuts Format¶
Each cut segment must specify start and end times:
[
{
"start": "00:00:10.000", // Start time (hh:mm:ss.ms)
"end": "00:00:20.000" // End time (hh:mm:ss.ms)
},
{
"start": "00:00:30.000",
"end": "00:00:40.000"
}
]
Time Format: hh:mm:ss.ms (hours:minutes:seconds.milliseconds)
Video Cutting Illustration¶
Below is a visual representation of how multiple cuts are processed:
Response¶
Immediate Response (Task Created)¶
{
"code": 200,
"id": "unique-request-id",
"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"response": {
"file_url": "https://example.com/output.mp4"
},
"message": "success",
"run_time": 5.234,
"queue_time": 0.012,
"total_time": 5.246,
"pid": 12345,
"queue_id": 1234567890,
"queue_length": 0,
"build_number": "1.0.0"
}
Error Responses¶
400 Bad Request¶
Returned when the request payload is missing or invalid.
{
"code": 400,
"message": "Invalid request payload"
}
401 Unauthorized¶
Returned when the x-api-key header is missing or invalid.
{
"code": 401,
"message": "Unauthorized"
}
500 Internal Server Error¶
Returned when an unexpected error occurs on the server.
{
"code": 500,
"message": "Internal Server Error"
}
Example Requests¶
Example 1: Basic Cut (Single Segment)¶
curl -X POST \
https://revidapi.com/v1/video/cut \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"media_url": "https://example.com/video.mp4",
"cuts": [
{
"start": "00:00:10.000",
"end": "00:00:20.000"
}
]
}'
Example 2: Multiple Cuts with Custom Encoding¶
curl -X POST \
https://revidapi.com/v1/video/cut \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"media_url": "https://example.com/video.mp4",
"cuts": [
{
"start": "00:00:10.000",
"end": "00:00:20.000"
},
{
"start": "00:00:30.000",
"end": "00:00:40.000"
}
],
"video_codec": "libx264",
"video_preset": "medium",
"video_crf": 23,
"audio_codec": "aac",
"audio_bitrate": "128k",
"webhook_url": "https://example.com/webhook",
"id": "unique-request-id"
}'
Processing Time¶
| Video Length | Number of Cuts | Processing Time |
|---|---|---|
| < 5 minutes | 1-3 cuts | ~10-30 seconds |
| 5-15 minutes | 3-5 cuts | ~30-60 seconds |
| 15-30 minutes | 5-10 cuts | ~1-3 minutes |
| > 30 minutes | 10+ cuts | ~3-10 minutes |
Times may vary based on video resolution, number of cuts, encoding settings, and server load.
Use Cases¶
1. Video Highlights¶
Extract the best moments from a longer video to create highlight reels.
2. Remove Unwanted Sections¶
Cut out commercials, pauses, or unwanted content from videos.
3. Create Montages¶
Combine multiple segments from different parts of a video into a single montage.
4. Audio Editing¶
Extract specific audio segments from podcasts or music files.
5. Content Repurposing¶
Create shorter versions of long-form content for social media.
Best Practices¶
- Time Format:
- Always use
hh:mm:ss.msformat for start and end times - Ensure end time is after start time for each cut
-
Avoid overlapping cuts if you want clean segments
-
Encoding Settings:
- Use
video_crfvalues between 18-28 (lower = better quality) mediumpreset provides good balance between speed and quality-
Default settings are optimized for most use cases
-
Multiple Cuts:
- Cuts are extracted and merged in the order specified
- Segments can come from any part of the original video
-
Total output length = sum of all cut durations
-
Webhooks:
- Use
webhook_urlfor async processing - Monitor
queue_lengthto manage API load -
Use
idparameter for request tracking -
File URLs:
- Ensure
media_urlis accessible and points to valid media file - Supported formats: MP4, AVI, MOV, MKV, MP3, WAV, etc.
Limitations¶
- Max file size: Typically 500 MB (check server limits)
- Supported formats: Any format supported by FFmpeg (MP4, AVI, MOV, MKV, MP3, WAV, etc.)
- Time format: Must use
hh:mm:ss.msformat exactly - Processing timeout: 10 minutes per request
- Maximum cuts: No hard limit, but more cuts = longer processing time
Troubleshooting¶
Error: Invalid request payload¶
Cause: Missing required parameters or invalid format
Solution: Ensure media_url and cuts array are provided with correct format
Error: Invalid time format¶
Cause: Time format not in hh:mm:ss.ms
Solution: Use exact format: 00:00:10.000 (hours:minutes:seconds.milliseconds)
Error: End time before start time¶
Cause: End time is earlier than start time in a cut segment
Solution: Ensure end time is after start time for each cut
Error: File not accessible¶
Cause: media_url is invalid or not accessible
Solution: Verify URL is valid and file is publicly accessible (or use signed URLs)
Processing timeout¶
Cause: Video too long or too many cuts
Solution:
- Split into smaller batches
- Reduce video resolution before cutting
- Reduce number of cuts per request
Get Job Status¶
After submitting a job, you can check its status using the job_id returned in the response.
Endpoint¶
URL Path: https://revidapi.com/v1/job/status
HTTP Method: POST
Request¶
Headers¶
x-api-key(required): API key for authentication.Content-Type:application/json
Body Parameters¶
{
"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
}
Example Request¶
curl -X POST \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"}' \
https://revidapi.com/v1/job/status
Response¶
Success Response¶
{
"endpoint": "/v1/toolkit/job/status",
"code": 200,
"id": null,
"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"response": {
"job_status": "done",
"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"queue_id": 140368864456064,
"process_id": 123456,
"response": {
"endpoint": "/v1/endpoint/name",
"code": 200,
"id": "request-123",
"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"response": "https://cloud-storage.example.com/output.mp4",
"message": "success",
"pid": 123456,
"queue_id": 140368864456064,
"run_time": 2.345,
"queue_time": 0.123,
"total_time": 2.468,
"queue_length": 0,
"build_number": "1.0.0"
}
},
"message": "success",
"pid": 123456,
"queue_id": 140368864456064,
"run_time": 0.001,
"queue_time": 0.0,
"total_time": 0.001,
"queue_length": 0,
"build_number": "1.0.0"
}
Error Responses¶
- 404 Not Found: If the job with the provided
job_idis not found:
{
"error": "Job not found",
"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
}
- 500 Internal Server Error: If an unexpected error occurs:
{
"error": "Failed to retrieve job status: <error_message>",
"code": 500
}