Last updated August 11, 2026
This is the public contract for hosted Loops. It gives creators, developers, and AI assistants one stable set of layout, safety, and capability rules before they publish.
A Loop is designed in a 360 × 640 portrait viewport (9:16). The platform scales that same experience for phone and desktop.
Hosted source is capped at 1024 KB before it can mount. Keep code self-contained and put larger public datasets in Liveloop data assets.
Supported hosted formats are HTML, React, Markdown, interactive Story video, and bounded chatbots. External projects are Link Loops and stay outside the Liveloop execution environment.
Hosted code runs in an opaque-origin iframe with scripts enabled and no same-origin permission. The platform shell and every visitor account remain outside the container.
The injected window.liveloop SDK is additive: ordinary HTML still works. It can expose layout, visibility, media coordination, per-viewer state, artifact-scoped data, realtime rooms, bounded chatbot turns, and consent-aware lead capture.
window.liveloop
Every bridge request is tied to the current Loop, validated by the parent, and rate-limited. A Loop never receives a general database credential or account session.
Loop code executes in the viewer's browser. Public frames are CDN-cacheable; off-screen frames are paused or removed, and small preview tiles use a lower rendering budget. A busy Loop should still pause work when visibility changes.
SDKs and AI publishing clients can fetch the versioned JSON manifest below instead of scraping this page. New contract versions will receive a new endpoint; v1 remains stable.
https://www.liveloop.space/api/loop-container/v1
{
"version": "1.0",
"viewport": {
"width": 360,
"height": 640,
"aspectRatio": "9:16"
},
"presentation": {
"modes": [
"feed",
"fullscreen"
],
"desktop": "bounded-portrait",
"linkEmbeds": {
"displayModes": [
"responsive",
"desktop",
"mobile"
],
"feed": "portrait-letterboxed",
"desktop": "creator-declared"
},
"reservedChrome": {
"corner": "top-right",
"width": 140,
"height": 56,
"owner": "Liveloop"
}
},
"source": {
"maxBytes": 1048576,
"supportedKinds": [
"html",
"react",
"markdown",
"video",
"chatbot"
]
},
"execution": {
"runtime": "viewer-browser",
"iframeSandbox": "allow-scripts",
"opaqueOrigin": true,
"iframeLifecycle": "viewport-scoped",
"thumbnailFrameRateCap": 30
},
"publishing": {
"accountRequired": true,
"externalLinkLoopsExecuteInsideLiveloop": true,
"externalLinkLoopRequirements": [
"public-https",
"creator-attestation",
"framing-permitted"
]
}
}AI clients that publish on a creator's behalf must also use the scoped Liveloop MCP connection.