Skip to main content
Top-level fields are the demo’s main settings. They name the demo, decide whether it is public, control the player chrome, and point to the ordered list of steps. Start here when you want to change how the whole demo behaves, rather than changing one individual screen.
FieldTypeRequiredDefaultNotes
idstringYesStable, opaque demo identity. Exactly 12 characters from the URL-safe alphabet A-Z a-z 0-9 - _ (pattern ^[A-Za-z0-9_-]{12}$).
versionintegerYesSchema version. Use 1 today. The parser accepts positive integers for forward compatibility.
titlestringNoDemo title.
subtitlestringNoDemo subtitle.
runtimestringNoOptional per-demo runtime version override. Use sparingly.
visibility"public" | "private"No"public"private demos are hidden from the hub index and return 404 on direct public URLs. Local inkly dev ignores this flag.
backgroundobjectNoFull-page canvas background behind the player. See Demo background.
backgroundColorstringNoLegacy solid-color canvas hex. New authors should use background.
themeobjectNoPer-demo theme override. See Theme override.
chromeobjectNo{}Player chrome toggles. See Chrome.
aspectRatioobjectNoExplicit player aspect ratio. When set, wins over the auto-detected ratio from the first content step. { width, height }, both positive numbers.
chaptersobject[]No[]Navigation metadata grouping step ids. See Navigation and actions.
stepsobject[]YesOrdered cover and content steps. At least one is required.

Chrome

Player chrome toggles control the embed look without changing step content.
FieldTypeRequiredDefaultNotes
hideHeaderbooleanNofalseSkip rendering the header chrome.
hideControlsbooleanNofalseLegacy boolean. When controls is unset, the renderer reads hideControls ? 'hidden' : 'full'.
controls"full" | "minimal" | "hidden"NoTri-state controls mode that layers over hideControls.
showHubBreadcrumbbooleanNofalseWhen true, hosted and CLI player shells link the header back to the parent hub.
mobileFooterMessagebooleanNotrueOn small viewports, hide the in-stage message and show a footer bar with step nav.
autoplaybooleanNofalseWhen false, the player waits for Next at the end of each step. When true, the engine honors each step’s advance.trigger.

Demo background

The full-page canvas sits behind the player. type selects the source.
FieldTypeRequiredDefaultNotes
type"none" | "color" | "image"Yesnone uses Inkly’s default dotted gray canvas; color uses a flat fill or gradient; image uses a wallpaper source.
colorstringConditionalHex color for a flat fill. Required for type: "color" unless from/to are set.
fromstringConditionalGradient start hex. Required together with to for a gradient.
tostringConditionalGradient end hex. Required together with from.
srcstringConditionalImage source. Required for type: "image".
altstringNoAlt text for the image background.

Theme override

FieldTypeRequiredDefaultNotes
presetstringNoSwaps the active preset for this demo, overriding the hub theme.
tokensobjectNoToken overrides applied after preset defaults and hub tokens. Same four fields as hub Theme tokens.
brandobjectNoPer-demo brand override. Same shape as hub Branding minus favicon because favicon is hub-owned.