">
Turn any video into perfect TikTok, Reels & Shorts – AI auto-reframes, tracks, and focuses on the main subject in videos.
✨ Managed SaaS API service for B2B (Business-to-Business)
Advanced AI automatically detects and tracks subjects, intelligently adjusting the frame to keep important elements in focus.
Reframe videos for any aspect ratio or device - from vertical mobile videos to widescreen cinematic formats.
Maintains professional composition rules like rule of thirds, ensuring your reframed videos look polished and balanced.
Process videos quickly with our optimized AI pipeline, delivering reframed results in minutes, not hours.
Smooth frame adjustments that maintain visual continuity, avoiding jarring cuts or sudden movements.
Intelligently tracks multiple subjects, ensuring all important elements remain visible and well-framed throughout the video.
Reframe to any aspect ratio you need - 16:9, 9:16, 1:1, 4:3, or custom dimensions for your specific use case.
Easy-to-use REST API for seamless integration into your existing workflows and applications.
Maintains original video quality while reframing, ensuring your content looks professional and crisp.
Pay only for what you use with our flexible credit system
£0.10 per minute of video
Minimum £0.10 per video
Pay only for what you use
Enterprise plans available
Parameters:
callback_url - URL to receive job completion notification.video_url - Public URL to the video file (required)api_key - Your API access key (required)Response: Returns JSON with either job_id or error field.
Parameters:
job_id - The job ID returned from the reframe API (required)api_key - Your API access key (required)Response Fields:
job_id - The unique job identifierstatus - Current job status (in_queue, processing, success, or failed)callback_url - The callback URL you providedjob_started_unix - Unix timestamp when job started processingjob_completed_unix - Unix timestamp when job completederror_message - Error message if job failed (null otherwise)reframed_video_url - URL to download the reframed video (if successful)callback_response_error - Error returned by your callback endpoint (null if no error)failed_callbacks_count - Number of failed webhook delivery attemptslast_callback_unix - Unix timestamp of last webhook attemptStatus Values:
in_queue - Job is waiting to be processedprocessing - Job is currently being processedsuccess - Job completed successfullyfailed - Job failedWhen you provide a callback_url in your reframe request, we will send a POST request to that URL when the job completes (either successfully or with an error).
Webhook Behavior:
Webhook Payload:
The POST request body contains the same JSON fields as the Job Status API response:
status - Current job status (in_queue, success, or failed)job_id - The unique job identifiercallback_url - The callback URL you providedjob_started_unix - Unix timestamp when job started processingjob_completed_unix - Unix timestamp when job completederror_message - Error message if job failed (null otherwise)reframed_video_url - URL to download the reframed video (if successful)Your Response Format:
Your callback endpoint should always return HTTP 200 to acknowledge receipt. You can optionally return a JSON response to report processing errors:
success - boolean - true if you processed the callback successfullyerror - string (optional) - error code if success is falseerror_message - string (optional) - human-readable error messageNote: We record your error response for debugging purposes but do not retry the webhook.
Example Webhook Handler (Node.js):
app.post('/webhook/croply', async (req, res) => {
const { status, job_id, reframed_video_url, error_message } = req.body;
try {
if (status === 'success') {
console.log(`Job ${job_id} completed: ${reframed_video_url}`);
// Download and process the reframed video
await downloadVideo(reframed_video_url);
} else if (status === 'failed') {
console.error(`Job ${job_id} failed: ${error_message}`);
}
// Return 200 OK with success
res.status(200).json({ success: true });
} catch (err) {
// Return 200 OK but report the error (Croply will record it)
res.status(200).json({
success: false,
error: 'processing_failed',
error_message: err.message
});
}
});
Example Webhook Handler (PHP):
<?php
// Always return 200 to acknowledge receipt
http_response_code(200);
header('Content-Type: application/json');
$payload = json_decode(file_get_contents('php://input'), true);
$jobId = $payload['job_id'] ?? null;
$status = $payload['status'] ?? null;
try {
if ($status === 'success') {
// Download the reframed video
$videoUrl = $payload['reframed_video_url'];
// ... your download logic
}
echo json_encode(['success' => true]);
} catch (Exception $e) {
// Report error but don't change HTTP status (still 200)
echo json_encode([
'success' => false,
'error' => 'processing_failed',
'error_message' => $e->getMessage()
]);
}
Yes, absolutely. You retain full ownership and commercial rights to all videos processed through our platform. Whether you are an agency, business, or creator, you are free to use, distribute, and monetize your reframed content without any restrictions.
We operate on a simple pay-as-you-go model. You top up your account balance, and we deduct £0.10 for every minute of video processed. There is a minimum charge of £0.10 per video. Your balance never expires.
Yes! For businesses with high-volume needs, we offer custom enterprise plans with dedicated support, SLA guarantees, and volume-based pricing. Contact our sales team to discuss your specific requirements.
Security is our top priority. All video data is processed in secure, isolated environments and is automatically deleted after processing. We use enterprise-grade encryption for all data in transit and at rest.
Absolutely. Croply was built API-first. Our robust REST API allows you to seamlessly integrate our video reframing capabilities directly into your applications, workflows, or content management systems.