Re-record demo with updated presentation
Uses the existing action script and records the demo again with a new presentation config. This is useful for changing background, mockup, cursor, click effects, fade, or template metadata without re-planning the whole demo.
POST
/api/v1/demos/{id}/restyle
Uses the existing action script and records the demo again with a new presentation config. This is useful for changing background, mockup, cursor, click effects, fade, or template metadata without re-planning the whole demo.
Authentication
Bearer Token API Key (cookie: better-auth.session_token)
Path Parameters
id
string
required
path
Request Body
application/jsonpresentation
object
REQUIRED
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
Restyle recording started
application/jsonid
string
REQUIRED
status
string
REQUIRED
Enum:
refreshing, recordingjobId
string
REQUIRED
400
Demo has no recorded script or validation failed
404
Not found
429
Quota exceeded
curl -X POST 'https://littledemo.com/api/v1/demos/string/restyle' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "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/string/restyle', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({ "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/string/restyle', headers=headers, json={ "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": "refreshing", "jobId": "<string>"}
API Playground
Try this endpoint
POST
/api/v1/demos/{id}/restyle