Build integrations on top of ClipForge. Upload videos, manage clips, and track processing jobs programmatically.
https://api.clipforge.appLocal development uses http://localhost:8000.
Authenticated endpoints require a Clerk session token in the Authorization header:
Authorization: Bearer <clerk-session-token>Use the getToken() helper from @clerk/nextjs on the client, or a valid Clerk JWT from your backend.
Upload long-form videos, list them, manage captions, and trigger processing.
/api/v1/videos/presigned-upload?filename={name}AUTHGet a presigned URL to upload the source video directly to object storage.
/api/v1/videosAUTHRegister a new video after the file has been uploaded to storage.
Body: { title, source_key, source_language, target_language, subtitle_*, audio_mode, voice }/api/v1/videosAUTHList all videos for the authenticated user.
/api/v1/videos/{video_id}/completeAUTHMark the upload as complete and queue the split/processing job.
/api/v1/videos/{video_id}/clipsAUTHList clips generated for a specific video.
/api/v1/videos/{video_id}/transcriptAUTHGet the transcript/captions for a video.
/api/v1/videos/{video_id}/transcriptAUTHUpdate the transcript/captions for a video.
Body: { segments: [{ start, end, text }] }/api/v1/videos/{video_id}AUTHDelete a video and all its clips from storage and the database.
Manage generated vertical clips: download, edit timing, regenerate, or delete.
/api/v1/clips/{clip_id}/downloadAUTHGet a temporary presigned download URL for a finished clip.
/api/v1/clips/{clip_id}AUTHUpdate a clip's start/end time and caption style.
Body: { start_time, end_time, subtitle_* }/api/v1/clips/{clip_id}/regenerateAUTHRe-process a clip with updated timing or caption settings.
/api/v1/clips/{clip_id}AUTHDelete a single clip from storage and the database.
Track the status and progress of background processing jobs.
/api/v1/jobs/{job_id}AUTHGet the current status, progress, and error message for a job.
Access the current user's profile and activity feed.
/api/v1/users/meAUTHGet the current authenticated user.
/api/v1/users/me/activity?limit=20AUTHGet a combined feed of recent uploads and job updates.
Unauthenticated endpoints for demos and public clip sharing.
/api/v1/public/demo-clips?limit=3Return a small set of finished clips for landing-page demos.
/api/v1/public/clips/{clip_id}Return a single finished clip for public sharing pages.
/api/v1/waitlistJoin the waitlist with an email address.
Body: { email, source? }Subscription portal and Paddle webhook handling.
/api/v1/billing/portalAUTHCreate a Paddle customer portal session for self-service billing.
/api/v1/billing/subscriptionAUTHGet the current user's active subscription details.
/api/v1/billing/webhookReceive Paddle webhook events (subscription lifecycle, customer updates).
Successful responses return JSON with the requested resource. Errors use standard HTTP status codes: