Retrieve available options for AI voices, avatars, background music, and video category tags. Call these endpoints to populate field values when creating a project.
Shuffll API (1.2.0)
The Shuffll API enables seamless automation and integration of Shuffll's AI-powered video creation platform into external workflows.
What is Shuffll?
Shuffll is an AI-powered platform designed to automate and streamline video content creation for businesses, marketers, and content creators. By leveraging machine learning, Shuffll enables users to generate high-quality videos efficiently, reducing production time and effort while maintaining creative control.
With Shuffll's API, developers can integrate automated video generation into their applications, enabling seamless video content production at scale. Whether it's for marketing, social media, training, or corporate communications, Shuffll simplifies the process of creating engaging and professional videos.
Key Features
- AI-Driven Video Creation – Generate videos automatically based on structured input, scripts, or templates.
- Smart Editing & Automation – Apply transitions, overlays, and effects without manual editing.
- Custom API Endpoints – Programmatically generate, edit, and manage video content.
- Brand Consistency – Ensure that videos align with predefined brand styles and messaging.
- Seamless Integrations – Connect with third-party tools, media libraries, and content management systems.
Shuffll's API empowers developers to automate video production, integrate AI-enhanced video workflows, and create personalized video content at scale—all with minimal effort.
Request
Create a new AI-powered video project from a prompt, URL, or script.
promptType | Description |
|---|---|
Prompt | A free-text description of the video topic (default) |
Link | A public URL — Shuffll scrapes the content and uses it as the basis for the script |
Docs | A Google Docs URL — Shuffll reads the document content |
Slides | A Google Slides URL — Shuffll reads the slide content |
Script | A pre-written script — AI generation is skipped, the script is used as-is |
For each scene, Shuffll fills in media content using the following priority order. If a source doesn't yield results, it automatically tries the next one.
- Your videos (
customTemplate.scenes[].videosToAdd) — Videos you explicitly provide are always used first. - Stock footage — Shuffll searches stock video libraries for footage matching the scene content.
- Workspace assets — Shuffll looks in your workspace asset library for relevant clips.
- Image → Video animation — A still image is generated (via Stability AI) and animated into a short clip.
- AI video generation — A full video clip is generated from scratch based on the scene script.
You can override this default order using videoSourcesPipeline. For example, to use only workspace assets and then generate from text, set:
"videoSourcesPipeline": ["workspace_assets", "generate_from_text"]The same fallback logic applies to still images in scene overlays, controlled by imagesSourcePipeline.
Scene templates can have image slots in their dynamic values. If you don't fill those slots:
toGenerateMissingImages: true→ Shuffll generates a contextually relevant image using Stability AI.toGenerateMissingImages: false→ The slot is left empty (scene renders without the image).
Set aiAvatarSettings.avatarId to use an AI avatar presenter in the video. Get available avatars from GET /auth/config/ai_avatar_options.
Set webhook to a URL that Shuffll will call when the export completes. The payload sent to your URL will be:
{
"type": "export",
"payload": {
"projectId": "...",
"projectName": "...",
"urls": { "uploadPath": "...", "dashPath": "..." },
"additionalParams": { }
}
}Use additionalParams to embed any custom data (IDs, metadata) you want returned in the webhook payload.
Set toAutoEnhance: true and toAutoExport: true to fully automate the pipeline: create → enhance → export → webhook, with no polling required.
Project creation is asynchronous. Poll GET /auth/project/{projectId}/create/status until the project is ready. Enhancement runs automatically. Monitor progress with GET /auth/project/{projectId}/edit/status/enhance. When enhancement is complete, trigger export with POST /auth/project/{projectId}/edit/export.
The content/topic for your video
How Shuffll should interpret the prompt field.
Prompt— Free-text topic description (default)Link— A public URL; Shuffll scrapes the page contentDocs— A Google Docs URL; Shuffll reads the documentSlides— A Google Slides URL; Shuffll reads the slidesScript— A fully written script; AI script generation is skipped
Language for the video script and voiceover. Use auto to detect the language automatically from the prompt text. Defaults to en when omitted.
Target video duration in minutes. 0.5 → ~30 sec · 1 → ~1 min · 2 → ~2 min · 3 → ~3 min
Storytelling structure for the script. Use the technique value from GET /auth/config/storytelling_techniques.
Narration tone. Use the id value from GET /auth/config/tone_of_voice.
Video category. Guides the AI when writing the script and selecting media. Use the id value from GET /auth/config/video_tags. Defaults to explainer if omitted.
URL to POST to when the project export completes. See the endpoint description for the full webhook payload format.
Arbitrary data to embed in the webhook payload (e.g., campaign ID, user ID).
Automatically start enhancement after project creation completes. Defaults to true for integration API requests.
Automatically start export after enhancement completes. Combine with webhook to receive the result with no polling required.
AI voiceover configuration. Get available voices from GET /auth/config/ai_voice_options.
AI avatar presenter configuration. When set, an AI avatar appears on screen as the video presenter. Get available avatars from GET /auth/config/ai_avatar_options.
Override the default order in which Shuffll sources media for each scene. Sources are tried in order; the first one that yields results is used.
Default order: ["stock_footage", "workspace_assets", "generate_from_image", "generate_from_text"]
| Value | Description |
|---|---|
stock_footage | Search stock video libraries |
workspace_assets | Use videos from your workspace asset library |
generate_from_image | Generate a still image (Stability AI) then animate it |
generate_from_text | Generate a full video clip from scratch using generative AI |
Override the default order for sourcing still images used in scene overlays and graphics.
Default order: ["stock_footage", "generate_from_text", "workspace_assets"]
| Value | Description |
|---|---|
stock_footage | Search stock image libraries |
generate_from_text | Generate an image using Stability AI |
workspace_assets | Use images from your workspace asset library |
- Mock serverhttps://api-docs.shuffll.com/_mock/apis/auth/project/create
- https://api.shuffll.com/api/v1/auth/project/create
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api-docs.shuffll.com/_mock/apis/auth/project/create \
-H 'Content-Type: application/json' \
-H 'x-api-key: YOUR_API_KEY_HERE' \
-d '{
"prompt": "Breaking the Agency Mold - Building Long-Term Partnerships with Data",
"promptType": "Prompt",
"language": "en",
"videoLength": 2,
"toneOfVoice": "Professional",
"videoTagId": "Marketing",
"storyTellingTechnique": "The Before-and-After Transformation",
"toAutoEnhance": true,
"toAutoExport": true,
"webhook": "https://your-app.com/hooks/shuffll-export",
"additionalParams": {
"campaignId": "camp_123"
},
"aiVoiceSettings": {
"voiceId": "alloy",
"voiceType": "open-ai",
"voiceSpeed": 1
},
"customTemplate": {
"id": "67682e831de738f85b0d0fc9",
"description": "Agency-focused video brand. Tone: confident, data-driven, B2B. Audience: marketing directors.",
"flexibilityOverride": "flexible",
"toUseTemplateFont": true,
"assets": [
{
"url": "https://example.com/product-demo.mp4",
"type": "video",
"description": "60-second product walkthrough showing the analytics dashboard.",
"direction": "Use in a middle scene to demonstrate product value."
},
{
"url": "https://example.com/team-photo.jpg",
"type": "image",
"description": "Company team photo, outdoor setting."
}
],
"videoSourcesByOrder": [
"workspace_assets",
"stock_footage",
"generate_from_image"
],
"preConfigs": {
"bgMusic": {
"volume": 0.35,
"path": "/music/upbeat-corporate.mp3"
},
"toCleanAudio": false,
"subtitles": {
"strategy": "WORD_HIGHLIGHT",
"textSize": 18,
"percentOffset": 40,
"fontName": "Arimo",
"isBold": true,
"primaryColour": "#FFFFFF",
"outlineColour": "#000000",
"styles": {
"normal": {
"color": "#FFFFFF"
},
"highlight": {
"color": "#FFD700"
}
}
}
},
"scenes": [
{
"id": "a517722a-582b-4f8c-bb8f-c8e8014cf6cc",
"staticScript": "Data-driven agencies don'\''t just win clients — they keep them for years.",
"dynamicValues": [
{
"position": 0,
"type": "header",
"value": "Breaking the Agency Mold"
},
{
"position": 0,
"type": "logo",
"value": "https://example.com/logo.png"
}
],
"wordBoost": [
"Shuffll",
"ROI"
],
"customSpelling": [
{
"from": [
"Shuffel",
"Shufflle"
],
"to": "Shuffll"
}
]
},
{
"id": "08865dcb-d8f3-4dfd-964d-76304fbbfa9d",
"moreDetailsAboutScene": "Focus on the before/after contrast — struggling agency vs. data-driven success.",
"toGenerateMissingImages": true,
"videosToAdd": [
{
"url": "https://content.shuffll.com/workspace/agency-intro.mp4",
"isMaster": true,
"stagePositionNumber": 100,
"isMuted": false,
"toAutoTrim": true
}
]
}
]
}
}'{ "projectId": "6947b539cc95ea68854bb523" }
Request
Poll this endpoint after creating a project to track AI generation progress.
Returns a status field with one of three values:
status | Meaning |
|---|---|
STRUCTURE | The AI is building the storyline and script |
GENERATING_IMAGES | Scene visuals and media are being generated |
DONE | Project creation is complete — enhancement will begin automatically |
Keep polling until status is DONE. After that, use GET /auth/project/{projectId}/edit/status/enhance to track enhancement progress.
- Mock serverhttps://api-docs.shuffll.com/_mock/apis/auth/project/{projectId}/create/status
- https://api.shuffll.com/api/v1/auth/project/{projectId}/create/status
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api-docs.shuffll.com/_mock/apis/auth/project/dad4bce8-f5cb-4078-a211-995864315e39/create/status \
-H 'x-api-key: YOUR_API_KEY_HERE'- done
- in_progress
{ "status": "DONE" }
Request
Retrieve the full details of a specific project, including its current status, name, and workspace.
Use the status field to determine if the project is still being generated:
STRUCTURE— initial structure is being builtGENERATING_IMAGES— images and media are being generatedEDITING— enhancement is running automaticallyDONE— project is ready
- Mock serverhttps://api-docs.shuffll.com/_mock/apis/auth/project/{projectId}
- https://api.shuffll.com/api/v1/auth/project/{projectId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api-docs.shuffll.com/_mock/apis/auth/project/dad4bce8-f5cb-4078-a211-995864315e39 \
-H 'x-api-key: YOUR_API_KEY_HERE'{ "id": "6947b539cc95ea68854bb523", "name": "Breaking the Agency Mold", "status": "DONE", "createdAt": "2025-12-15T07:26:34.333Z", "workspaceId": "693fb82afd8d1c43077ba0fe" }
- Mock serverhttps://api-docs.shuffll.com/_mock/apis/auth/project/{projectId}
- https://api.shuffll.com/api/v1/auth/project/{projectId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
https://api-docs.shuffll.com/_mock/apis/auth/project/dad4bce8-f5cb-4078-a211-995864315e39 \
-H 'x-api-key: YOUR_API_KEY_HERE'