{"x-fal-media":{"receive":[{"settings":{"frameRate":16,"height":480,"width":832},"kind":"video"}],"perspective":"client","send":[{"required":true,"kind":"video","constraints":{"frameRate":16,"height":480,"width":832}}]},"x-fal-openapi":{"url":"./openapi.json","operationId":"start_session_start_session_post"},"defaultContentType":"application/json","operations":{"sendControl":{"messages":[{"$ref":"#/channels/control/messages/client.configure"},{"$ref":"#/channels/control/messages/client.ping"},{"$ref":"#/channels/control/messages/client.prompt"},{"$ref":"#/channels/control/messages/client.reset"},{"$ref":"#/channels/control/messages/client.stop"}],"action":"send","channel":{"$ref":"#/channels/control"}},"receiveEvents":{"messages":[{"$ref":"#/channels/control/messages/server.configured"},{"$ref":"#/channels/control/messages/server.error"},{"$ref":"#/channels/control/messages/server.pong"},{"$ref":"#/channels/control/messages/server.prompt_applied"},{"$ref":"#/channels/control/messages/server.reset_applied"},{"$ref":"#/channels/control/messages/server.session_info"},{"$ref":"#/channels/control/messages/server.stats"},{"$ref":"#/channels/control/messages/server.stream_exhausted"}],"action":"receive","channel":{"$ref":"#/channels/control"}}},"asyncapi":"3.1.0","channels":{"control":{"address":"fal","messages":{"server.stream_exhausted":{"$ref":"#/components/messages/server.stream_exhausted"},"server.reset_applied":{"$ref":"#/components/messages/server.reset_applied"},"server.error":{"$ref":"#/components/messages/server.error"},"client.prompt":{"$ref":"#/components/messages/client.prompt"},"server.prompt_applied":{"$ref":"#/components/messages/server.prompt_applied"},"server.pong":{"$ref":"#/components/messages/server.pong"},"client.ping":{"$ref":"#/components/messages/client.ping"},"client.stop":{"$ref":"#/components/messages/client.stop"},"client.reset":{"$ref":"#/components/messages/client.reset"},"server.stats":{"$ref":"#/components/messages/server.stats"},"client.configure":{"$ref":"#/components/messages/client.configure"},"server.session_info":{"$ref":"#/components/messages/server.session_info"},"server.configured":{"$ref":"#/components/messages/server.configured"}},"servers":[{"$ref":"#/servers/session"}]}},"components":{"schemas":{"EdenLive14BVideoClientStopMessage":{"description":"End the session.","properties":{"type":{"default":"stop","const":"stop","x-fal-ui":{"hidden":true},"type":"string","title":"Type"}},"required":["type"],"additionalProperties":false,"type":"object","title":"StopMessage"},"EdenLive14BVideoClientVideoConfigureMessage":{"description":"Set the session's conditioning, once per connection; await ``configured``.\n\nWithout ``image_url`` the world anchors on a reference generated from the\nnewest input frame and the prompt (FLUX.2 [klein] 4B edit), or on that\nframe itself when generation fails.","properties":{"prompt":{"default":null,"description":"What the input video should look like. Defaults to a generic photoreal prompt.","x-fal-ui":{"order":0,"field":"textarea"},"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Scene description"},"seed":{"default":null,"description":"Noise seed; the same inputs and seed reproduce the output.","x-fal-ui":{"order":3,"advanced":true},"anyOf":[{"maximum":2147483647,"minimum":0,"type":"integer"},{"type":"null"}],"title":"Seed"},"enable_prompt_expansion":{"default":false,"description":"Rewrite the scene description (and later prompt changes) into a detailed one with an LLM, using the reference image when given. Adds about a second to session start and to each prompt change.","x-fal-ui":{"order":2},"type":"boolean","title":"Prompt expansion"},"type":{"default":"configure","const":"configure","x-fal-ui":{"hidden":true},"type":"string","title":"Type"},"image_url":{"default":null,"description":"Rendering of the input's first frame in the target look (URL, or a data URI under ~45 KB); anchors the generated world. Without it, one is generated from the newest input frame and the prompt.","x-fal-ui":{"order":1,"field":"image"},"anyOf":[{"type":"string","maxLength":60000},{"type":"null"}],"title":"Reference first frame"}},"required":["type"],"additionalProperties":false,"type":"object","title":"VideoConfigureMessage"},"EdenLive14BVideoServerResetAppliedMessage":{"properties":{"game":{"default":null,"anyOf":[{"$ref":"#/components/schemas/EdenLive14BVideoServerGameInfo"},{"type":"null"}]},"type":{"default":"reset_applied","const":"reset_applied","type":"string","title":"Type"}},"required":["type"],"type":"object","title":"ResetAppliedMessage"},"EdenLive14BVideoServerStatsMessage":{"properties":{"prompt_ms":{"default":null,"description":"Per-chunk prompt update time with dynamic_prompt, unchanged chunks included (moving average).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Prompt Ms"},"chunk":{"type":"integer","title":"Chunk"},"pipelined":{"default":null,"description":"The next chunk renders while this one generates (throughput mode).","anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pipelined"},"render_ms":{"default":null,"description":"Game render time per chunk (moving average).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Render Ms"},"realtime_factor":{"description":"Generated frames per second / target fps.","type":"number","title":"Realtime Factor"},"generation_fps":{"type":"number","title":"Generation Fps"},"type":{"default":"stats","const":"stats","type":"string","title":"Type"},"chunk_ms":{"type":"number","title":"Chunk Ms"},"latency_ms":{"default":null,"description":"Input or control capture to frame handoff, median.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Latency Ms"},"input_latency_ms":{"default":null,"description":"Game control message arrival to the handoff of the first frame it changes, median.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Input Latency Ms"},"loop_lag_ms":{"default":null,"description":"Server event-loop lag, p95 over the stats window.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Loop Lag Ms"},"generate_ms":{"default":null,"description":"Model time per chunk (moving average).","anyOf":[{"type":"number"},{"type":"null"}],"title":"Generate Ms"},"queue_frames":{"type":"integer","title":"Queue Frames"},"billable_units":{"default":null,"description":"Seconds of video billed so far this session (queued for playback); the final total settles when the session closes.","anyOf":[{"type":"number"},{"type":"null"}],"title":"Billable Units"}},"required":["type","chunk","chunk_ms","generation_fps","realtime_factor","queue_frames"],"type":"object","title":"StatsMessage"},"EdenLive14BVideoServerPromptAppliedMessage":{"properties":{"type":{"default":"prompt_applied","const":"prompt_applied","type":"string","title":"Type"}},"required":["type"],"type":"object","title":"PromptAppliedMessage"},"EdenLive14BVideoServerConfiguredMessage":{"properties":{"game":{"default":null,"anyOf":[{"$ref":"#/components/schemas/EdenLive14BVideoServerGameInfo"},{"type":"null"}]},"type":{"default":"configured","const":"configured","type":"string","title":"Type"}},"required":["type"],"type":"object","title":"ConfiguredMessage"},"EdenLive14BVideoServerPongMessage":{"description":"Reply to a ``ping``, echoing the client's timestamp for RTT measurement.\n\nThe echoed timestamp has two wire spellings: apps that handle ``ping``\nthemselves echo ``ts``; the fallback handler in\n:class:`registry.wma.sdk.Session` replies with ``client_ts``. Clients read\nwhichever is present. ``server_ts`` is the (unsynchronized) runner clock; it\nonly shows how the round trip divides once the client has an offset estimate.","properties":{"client_ts":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Client Ts"},"server_ts":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Server Ts"},"ts":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ts"},"type":{"default":"pong","const":"pong","type":"string","title":"Type"}},"required":["type"],"type":"object","title":"PongMessage"},"EdenLive14BVideoServerControlErrorMessage":{"properties":{"retryable":{"default":null,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Retryable"},"type":{"default":"error","const":"error","type":"string","title":"Type"},"error":{"type":"string","title":"Error"}},"required":["type","error"],"type":"object","title":"ControlErrorMessage"},"EdenLive14BVideoClientVideoResetMessage":{"description":"Restart generation from a new anchor; unset fields keep their values,\nand an explicit null clears ``image_url`` or ``seed``.\n\nThe world is re-anchored on a reference generated from the newest input\nframe unless ``image_url`` is set.","properties":{"prompt":{"default":null,"description":"What the input video should look like. Defaults to a generic photoreal prompt.","x-fal-ui":{"order":0,"field":"textarea"},"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Scene description"},"seed":{"default":null,"description":"Noise seed; the same inputs and seed reproduce the output.","x-fal-ui":{"order":3,"advanced":true},"anyOf":[{"maximum":2147483647,"minimum":0,"type":"integer"},{"type":"null"}],"title":"Seed"},"enable_prompt_expansion":{"default":null,"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enable Prompt Expansion"},"type":{"default":"reset","const":"reset","x-fal-ui":{"hidden":true},"type":"string","title":"Type"},"image_url":{"default":null,"description":"Rendering of the input's first frame in the target look (URL, or a data URI under ~45 KB); anchors the generated world. Without it, one is generated from the newest input frame and the prompt.","x-fal-ui":{"order":1,"field":"image"},"anyOf":[{"type":"string","maxLength":60000},{"type":"null"}],"title":"Reference first frame"}},"required":["type"],"additionalProperties":false,"type":"object","title":"VideoResetMessage"},"EdenLive14BVideoServerControlInfo":{"properties":{"key":{"type":"string","title":"Key"},"command":{"default":null,"description":"Semantic command name.","anyOf":[{"type":"string"},{"type":"null"}],"title":"Command"},"label":{"type":"string","title":"Label"},"hold":{"default":true,"type":"boolean","title":"Hold"}},"required":["key","label"],"type":"object","title":"ControlInfo"},"EdenLive14BVideoServerSessionInfoMessage":{"properties":{"info":{"type":"object","title":"Info"},"session":{"enum":["video","game"],"type":"string","title":"Session"},"type":{"default":"session_info","const":"session_info","type":"string","title":"Type"}},"required":["type","session","info"],"type":"object","title":"SessionInfoMessage"},"EdenLive14BVideoClientPromptMessage":{"description":"Change the scene description; applied at the next chunk boundary.","properties":{"prompt":{"description":"Text the model renders the scene with. Keeps the current world.","minLength":1,"maxLength":2000,"x-fal-ui":{"order":0,"field":"textarea"},"type":"string","title":"Scene description"},"type":{"default":"prompt","const":"prompt","x-fal-ui":{"hidden":true},"type":"string","title":"Type"}},"required":["type","prompt"],"additionalProperties":false,"type":"object","title":"PromptMessage"},"EdenLive14BVideoServerGameInfo":{"properties":{"description":{"type":"string","title":"Description"},"thumbnail_url":{"default":null,"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"prompt":{"type":"string","title":"Prompt"},"instructions":{"title":"Instructions","type":"array","items":{"type":"string"}},"title":{"type":"string","title":"Title"},"controls":{"title":"Controls","type":"array","items":{"$ref":"#/components/schemas/EdenLive14BVideoServerControlInfo"}},"actions":{"title":"Actions","type":"array","items":{"type":"string"}},"id":{"type":"string","title":"Id"}},"required":["id","title","description","prompt","controls","instructions","actions"],"type":"object","title":"GameInfo"},"EdenLive14BVideoServerStreamExhaustedMessage":{"description":"The model has no more frames to send and the current peer is closing.\nClients must negotiate a new session to continue.","properties":{"type":{"default":"stream_exhausted","const":"stream_exhausted","type":"string","title":"Type"}},"required":["type"],"type":"object","title":"StreamExhaustedMessage"},"EdenLive14BVideoClientPingMessage":{"description":"Latency probe; the server echoes ``ts`` back in a ``pong`` payload.","properties":{"ts":{"default":null,"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ts"},"type":{"const":"ping","type":"string","title":"Type"}},"required":["type"],"type":"object","title":"PingMessage"}},"messages":{"server.stream_exhausted":{"name":"stream_exhausted","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerStreamExhaustedMessage"},"title":"Server stream_exhausted message"},"server.reset_applied":{"name":"reset_applied","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerResetAppliedMessage"},"title":"Server reset_applied message"},"server.error":{"name":"error","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerControlErrorMessage"},"title":"Server error message"},"client.prompt":{"summary":"Change the scene description.","name":"prompt","payload":{"$ref":"#/components/schemas/EdenLive14BVideoClientPromptMessage"},"title":"Update prompt"},"server.prompt_applied":{"name":"prompt_applied","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerPromptAppliedMessage"},"title":"Server prompt_applied message"},"server.pong":{"name":"pong","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerPongMessage"},"title":"Server pong message"},"client.ping":{"name":"ping","payload":{"$ref":"#/components/schemas/EdenLive14BVideoClientPingMessage"},"title":"Client ping message"},"client.stop":{"name":"stop","payload":{"$ref":"#/components/schemas/EdenLive14BVideoClientStopMessage"},"title":"End session"},"client.reset":{"summary":"Re-anchor on a new frame or image.","name":"reset","payload":{"$ref":"#/components/schemas/EdenLive14BVideoClientVideoResetMessage"},"title":"Restart"},"server.stats":{"name":"stats","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerStatsMessage"},"title":"Server stats message"},"client.configure":{"examples":[{"name":"default","payload":{"prompt":"Change to anime style","enable_prompt_expansion":true,"type":"configure"}}],"summary":"Prompt and reference first frame.","name":"configure","payload":{"$ref":"#/components/schemas/EdenLive14BVideoClientVideoConfigureMessage"},"title":"Set conditioning"},"server.session_info":{"name":"session_info","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerSessionInfoMessage"},"title":"Server session_info message"},"server.configured":{"name":"configured","payload":{"$ref":"#/components/schemas/EdenLive14BVideoServerConfiguredMessage"},"title":"Server configured message"}}},"info":{"description":"Client contract for the WebRTC session created by the linked OpenAPI operation.","version":"1.0.0","title":"EdenLive14BVideo realtime client API"},"servers":{"session":{"description":"Runtime-assigned WebRTC peer negotiated over HTTP.","x-fal-negotiated-by":"start_session_start_session_post","protocol":"webrtc","variables":{"sessionHost":{"default":"runtime-assigned.invalid","description":"Logical peer supplied by the OpenAPI session negotiation."}},"host":"{sessionHost}"}}}