Ssemble API

Introduction

Programmatically create AI-powered video shorts from YouTube videos or uploaded files using the Ssemble API.

Overview

The Ssemble API lets you create short-form video clips from long-form content programmatically. It provides the same AI clipping capabilities available in the Ssemble web app — but accessible via REST API for automation, integrations, and custom workflows.

With the API, you can automate your entire content repurposing pipeline: submit a video, let the AI identify the most engaging segments, and receive ready-to-publish short clips with captions, music, and overlays.

Base URL

https://aiclipping.ssemble.com/api/v1

All endpoints are relative to this base URL. For example, the templates endpoint is at https://aiclipping.ssemble.com/api/v1/templates.


What you can do

  • Create shorts from YouTube URLs or uploaded video files — the AI analyzes content and extracts the best segments
  • Customize output with caption templates, background music, gameplay overlays, meme hooks, and call-to-action text
  • Control clip length from under 30 seconds to under 10 minutes
  • Choose video layout — auto, fill, fit, or square framing for different platforms
  • Track progress of video processing in real-time with status polling
  • Retrieve results including video URLs, AI-generated titles, viral scores, and metadata
  • Browse assets — list available music tracks, game videos, and meme hooks to use in your shorts
  • Manage requests — list, filter, sort, and delete your creation requests

Quick start

1. Get your API key

Sign in to the Ssemble dashboard, click your profile icon in the top-right corner, and select API Keys to generate a new key.

2. Choose a template

Fetch available caption templates. Each template controls the style, font, color, and animation of your captions.

curl -H "X-API-Key: sk_ssemble_your_key" \
  https://aiclipping.ssemble.com/api/v1/templates
Hormozi 1
Hormozi 1
66e386d23b11d1a71b755e44
Hormozi 2
Hormozi 2
66fcc4c67769688a1d5ad08a
Karaoke
KaraokeDefault
660b8531aedb346bbe26eb43
Ali
Ali
66a8bc861029156127f6c89a
Mr Beast
Mr Beast
660b85be34b1eda55a6a7f86
Simple
Simple
660b859818784d713119fcc7
Iman
Iman
66c5cda587afa8f65d4b127e
Iman 2
Iman 2
66fcd14d7769688a1d5ad08d
Box
Box
68a848bc9526bfd0f3068334

Copy the templateId from the response and use it in the next step. If you skip this, the default Karaoke style is applied automatically. For a detailed explanation of all available templates, see the List Templates endpoint.

3. Create a short

curl -X POST https://aiclipping.ssemble.com/api/v1/shorts/create \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_ssemble_your_key" \
  -d '{
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
    "start": 0,
    "end": 600,
    "preferredLength": "under60sec",
    "language": "en",
    "templateId": "660b8531aedb346bbe26eb43"
  }'

This example shows the most common parameters. For the full list of options (background music, gameplay overlays, meme hooks, and more), see the Create Short endpoint.

4. Poll for completion

curl -H "X-API-Key: sk_ssemble_your_key" \
  https://aiclipping.ssemble.com/api/v1/shorts/REQUEST_ID/status

Poll every 10 seconds until status is completed. See the Get Status endpoint for all status values and response fields.

5. Download results

curl -H "X-API-Key: sk_ssemble_your_key" \
  https://aiclipping.ssemble.com/api/v1/shorts/REQUEST_ID

The response includes all generated clips with video URLs, titles, and viral scores. See the Get Shorts endpoint for the full response structure.


Full workflow

Here's the complete flow:

const API_KEY = 'sk_ssemble_your_key';
const BASE_URL = 'https://aiclipping.ssemble.com/api/v1';
 
// Step 1: Create a short
const createRes = await fetch(`${BASE_URL}/shorts/create`, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': API_KEY
  },
  body: JSON.stringify({
    url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
    start: 0,
    end: 600,
    preferredLength: 'under60sec',
    language: 'en'
  })
});
const { data: createData } = await createRes.json();
const requestId = createData.requestId;
 
// Step 2: Poll for completion
let status = 'processing';
while (status !== 'completed' && status !== 'failed') {
  await new Promise(r => setTimeout(r, 10000)); // Wait 10 seconds
  const statusRes = await fetch(`${BASE_URL}/shorts/${requestId}/status`, {
    headers: { 'X-API-Key': API_KEY }
  });
  const { data: statusData } = await statusRes.json();
  status = statusData.status;
  console.log(`Status: ${status} (${statusData.progress}%)`);
}
 
// Step 3: Get results
const shortsRes = await fetch(`${BASE_URL}/shorts/${requestId}`, {
  headers: { 'X-API-Key': API_KEY }
});
const { data: shortsData } = await shortsRes.json();
 
for (const short of shortsData.shorts) {
  console.log(`${short.title} — Score: ${short.viral_score}`);
  console.log(`  URL: ${short.video_url}`);
}

See Examples for complete working code.


API endpoints

MethodEndpointDescription
GET/templatesList available caption templates
POST/shorts/createCreate a new short from a video
GET/shorts/:id/statusCheck processing status
GET/shorts/:idRetrieve generated shorts
GET/shortsList all your requests
DELETE/shorts/:idDelete a request
GET/musicBrowse background music tracks
GET/game-videosBrowse gameplay video overlays
GET/meme-hooksBrowse meme hook clips

Requirements

  • An active Ssemble subscription with available credits
  • An API key (generated from the dashboard)
  • Each short creation consumes 1 credit

Response format

All responses follow a consistent structure:

Success:

{
  "data": {
    // Response payload
  }
}

Error:

{
  "error": {
    "code": "error_code",
    "message": "Human-readable description",
    "details": null
  }
}

See Errors for the full list of error codes and Rate Limits for usage limits.

On this page

Ssemble Logo
Copyright © 2026 Ssemble Inc.
All rights reserved