POST /api/v1/demos

Authentication

Bearer Token API Key (cookie: better-auth.session_token)

Request Body

application/json
project_id string REQUIRED
prompt string REQUIRED
format string
Enum: mp4, webm
resolution string
Enum: 720p, 1080p
duration_target string
Enum: 5s, 10s, 30s
presentation object
background unknown
mockup string
Enum: macos-light, macos-dark, minimal, none
zoom object
enabled boolean REQUIRED
intensity number
transitionMs number
padding number
cursor object
style string
Enum: dot, arrow, crosshair, circle, none
color string
size number
clickEffect object
style string
Enum: pulse, ripple, glow, none
color string
scale number
fade object
inMs number
outMs number
color string
Enum: black, white
windowAnimation 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-scroll
sectionHint string
effectiveId string
Enum: cinematic, guided-tour, plain-scroll, section-focus, hero-spotlight, feature-sweep, conversion-flow, pricing-focus, proof-scroll
autoSelection object
selectedId string REQUIRED
Enum: cinematic, guided-tour, plain-scroll, section-focus, hero-spotlight, feature-sweep, conversion-flow, pricing-focus, proof-scroll
sectionHint string
confidence number REQUIRED
reason string REQUIRED
source string REQUIRED
Enum: heuristic, ai, fallback
signals string[]
Array of:
debugHud boolean

Responses

202 Demo generation started
application/json
id string REQUIRED
status string REQUIRED
Enum: pending
jobId 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>"}
Ask a question... ⌘I