StudioPreviewStreamDto
| Field | Required | Description |
|---|---|---|
bounds | Yes | See definition below |
closeReason | Yes | See definition below |
currentRevision | Yes | The stored head, when the session closed as stale |
expiresAt | Yes | The hard end of this session |
id | Yes | Stream session ID |
keepaliveMs | Yes | Poll at least this often, or the session is closed |
negotiation | Yes | The offer/answer round; an answer must name it |
offer | Yes | The worker's offer for this round, while it waits for an answer |
projectId | Yes | string |
revision | Yes | The stored project revision this session plays |
start | Yes | Where playback starts |
state | Yes | See definition below |
Complete definition
required lists fields that must be present. nullable allows a null value; it does not make the field optional. Response enums retain exact wire values for compatibility.
Field definitions: StudioPreviewStreamBoundsDto, StudioPreviewStreamCloseReason, StudioPreviewTimeDto, StudioPreviewStreamState
{
"properties": {
"bounds": {
"$ref": "#/components/schemas/StudioPreviewStreamBoundsDto"
},
"closeReason": {
"allOf": [
{
"$ref": "#/components/schemas/StudioPreviewStreamCloseReason"
}
],
"nullable": true
},
"currentRevision": {
"description": "The stored head, when the session closed as stale",
"maximum": 9007199254740991,
"minimum": 0,
"nullable": true,
"type": "integer"
},
"expiresAt": {
"description": "The hard end of this session",
"format": "date-time",
"type": "string"
},
"id": {
"description": "Stream session ID",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
},
"keepaliveMs": {
"description": "Poll at least this often, or the session is closed",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"negotiation": {
"description": "The offer/answer round; an answer must name it",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"offer": {
"description": "The worker's offer for this round, while it waits for an answer",
"maxLength": 65536,
"minLength": 1,
"nullable": true,
"type": "string"
},
"projectId": {
"type": "string"
},
"revision": {
"description": "The stored project revision this session plays",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"start": {
"$ref": "#/components/schemas/StudioPreviewTimeDto",
"description": "Where playback starts"
},
"state": {
"$ref": "#/components/schemas/StudioPreviewStreamState"
}
},
"required": [
"bounds",
"closeReason",
"currentRevision",
"expiresAt",
"id",
"keepaliveMs",
"negotiation",
"offer",
"projectId",
"revision",
"start",
"state"
],
"type": "object"
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.