Create demo (triggers generation)
POST
/api/v1/demos
Authentication
Bearer Token API Key (cookie: better-auth.session_token)
Request Body
application/jsonproject_id
string
REQUIRED
prompt
string
REQUIRED
format
string
Enum:
mp4, webmresolution
string
Enum:
720p, 1080pduration_target
string
Enum:
5s, 10s, 30spresentation
object
background
unknown
mockup
string
Enum:
macos-light, macos-dark, minimal, nonezoom
object
enabled
boolean
REQUIRED
intensity
number
transitionMs
number
padding
number
cursor
object
style
string
Enum:
dot, arrow, crosshair, circle, nonecolor
string
size
number
clickEffect
object
style
string
Enum:
pulse, ripple, glow, nonecolor
string
scale
number
fade
object
inMs
number
outMs
number
color
string
Enum:
black, whitewindowAnimation
object
intro
boolean
outro
boolean
introDurationMs
number
outroDurationMs
number
recordingTemplate
object
id
string
REQUIRED
Enum:
auto, cinematic, guided-tour, plain-scroll, section-focus, hero-spotlight, feature-sweep, conversion-flow, pricing-focus, proof-scrollsectionHint
string
effectiveId
string
Enum:
cinematic, guided-tour, plain-scroll, section-focus, hero-spotlight, feature-sweep, conversion-flow, pricing-focus, proof-scrollautoSelection
object
selectedId
string
REQUIRED
Enum:
cinematic, guided-tour, plain-scroll, section-focus, hero-spotlight, feature-sweep, conversion-flow, pricing-focus, proof-scrollsectionHint
string
confidence
number
REQUIRED
reason
string
REQUIRED
source
string
REQUIRED
Enum:
heuristic, ai, fallbacksignals
string[]
Array of:
debugHud
boolean
Responses
202
Demo generation started
application/jsonid
string
REQUIRED
status
string
REQUIRED
Enum:
pendingjobId
string
REQUIRED
pollUrl
string
REQUIRED
wsUrl
string
REQUIRED
400
Validation error
429
Rate limit or quota exceeded
curl -X POST 'https://littledemo.com/api/v1/demos' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "project_id": "string", "prompt": "string", "format": "mp4", "resolution": "1080p", "duration_target": "10s", "presentation": { "background": "string", "mockup": "macos-light", "zoom": { "enabled": true, "intensity": 1, "transitionMs": 100 }, "padding": 0, "cursor": { "style": "dot", "color": "string", "size": 8 }, "clickEffect": { "style": "pulse", "color": "string", "scale": 0.2 }, "fade": { "inMs": 0, "outMs": 0, "color": "black" }, "windowAnimation": { "intro": true, "outro": true, "introDurationMs": 200, "outroDurationMs": 200 }, "recordingTemplate": { "id": "auto", "sectionHint": "string", "effectiveId": "cinematic", "autoSelection": { "selectedId": "cinematic", "sectionHint": "string", "confidence": 0, "reason": "string", "source": "heuristic", "signals": [ "string" ] } }, "debugHud": true }}'
const response = await fetch('https://littledemo.com/api/v1/demos', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({ "project_id": "string", "prompt": "string", "format": "mp4", "resolution": "1080p", "duration_target": "10s", "presentation": { "background": "string", "mockup": "macos-light", "zoom": { "enabled": true, "intensity": 1, "transitionMs": 100 }, "padding": 0, "cursor": { "style": "dot", "color": "string", "size": 8 }, "clickEffect": { "style": "pulse", "color": "string", "scale": 0.2 }, "fade": { "inMs": 0, "outMs": 0, "color": "black" }, "windowAnimation": { "intro": true, "outro": true, "introDurationMs": 200, "outroDurationMs": 200 }, "recordingTemplate": { "id": "auto", "sectionHint": "string", "effectiveId": "cinematic", "autoSelection": { "selectedId": "cinematic", "sectionHint": "string", "confidence": 0, "reason": "string", "source": "heuristic", "signals": [ "string" ] } }, "debugHud": true } })});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://littledemo.com/api/v1/demos', headers=headers, json={ "project_id": "string", "prompt": "string", "format": "mp4", "resolution": "1080p", "duration_target": "10s", "presentation": { "background": "string", "mockup": "macos-light", "zoom": { "enabled": true, "intensity": 1, "transitionMs": 100 }, "padding": 0, "cursor": { "style": "dot", "color": "string", "size": 8 }, "clickEffect": { "style": "pulse", "color": "string", "scale": 0.2 }, "fade": { "inMs": 0, "outMs": 0, "color": "black" }, "windowAnimation": { "intro": true, "outro": true, "introDurationMs": 200, "outroDurationMs": 200 }, "recordingTemplate": { "id": "auto", "sectionHint": "string", "effectiveId": "cinematic", "autoSelection": { "selectedId": "cinematic", "sectionHint": "string", "confidence": 0, "reason": "string", "source": "heuristic", "signals": [ "string" ] } }, "debugHud": true }})print(response.json())
202
Response
{ "id": "<string>", "status": "pending", "jobId": "<string>", "pollUrl": "<string>", "wsUrl": "<string>"}
API Playground
Try this endpoint
POST
/api/v1/demos