[ { "id": "94f237d7e5864fc4", "type": "tab", "label": "Responses WebSocket Example", "disabled": false, "info": "Responses websocket example.\n\nThis flow demonstrates the websocket lifecycle through one `OpenAI API` node instance:\n- connect the websocket\n- send a `response.create` client event\n- inspect streamed server events from the same node\n- close the connection cleanly", "env": [] }, { "id": "7d097a8ea8f89f3b", "type": "comment", "z": "94f237d7e5864fc4", "name": "Configure the red-marked node, then use the same OpenAI API node for connect, send, and close.", "info": "Before running:\n- import the flow, then configure the red-marked `OpenAI API` node with your own `Service Host`\n- this example stores websocket commands in `msg.ai` because the `OpenAI API` node property is configured to `ai`\n- if your node uses the default property, move the same fields under `msg.payload`\n\nImportant:\n- the websocket connection lives inside a single `OpenAI API` node instance\n- for that reason, connect, send, and close all target the same node\n- click `Connect Responses WebSocket` first, then `Send response.create Event`, then `Close Responses WebSocket`", "x": 480, "y": 140, "wires": [] }, { "id": "9c6d8525af6b0e2a", "type": "comment", "z": "94f237d7e5864fc4", "name": "What comes out of the node?", "info": "This node produces two kinds of output:\n- immediate local acknowledgements for `connect`, `send`, and `close`\n- asynchronous Responses server events such as `response.created`, `response.in_progress`, `response.output_text.delta`, and `response.completed`\n\nServer events arrive in `msg.payload` and include connection metadata under `msg.openai`.", "x": 410, "y": 220, "wires": [] }, { "id": "b4a7fef11decb00a", "type": "inject", "z": "94f237d7e5864fc4", "name": "Connect Responses WebSocket", "props": [ { "p": "ai.action", "v": "connect", "vt": "str" }, { "p": "ai.connection_id", "v": "demo-connection-1", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 250, "y": 320, "wires": [ [ "2f33fb2b774e1f8f" ] ] }, { "id": "db2a19cffba6f2d1", "type": "inject", "z": "94f237d7e5864fc4", "name": "Send response.create Event", "props": [ { "p": "ai.action", "v": "send", "vt": "str" }, { "p": "ai.connection_id", "v": "demo-connection-1", "vt": "str" }, { "p": "ai.event", "v": "{\"type\":\"response.create\",\"model\":\"gpt-5.4-nano-2026-03-17\",\"input\":\"Say hello from Responses websocket mode in one sentence.\"}", "vt": "json" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 230, "y": 400, "wires": [ [ "2f33fb2b774e1f8f" ] ] }, { "id": "22f0c821e335fcbc", "type": "inject", "z": "94f237d7e5864fc4", "name": "Close Responses WebSocket", "props": [ { "p": "ai.action", "v": "close", "vt": "str" }, { "p": "ai.connection_id", "v": "demo-connection-1", "vt": "str" }, { "p": "ai.reason", "v": "Example flow complete", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "x": 240, "y": 480, "wires": [ [ "2f33fb2b774e1f8f" ] ] }, { "id": "2f33fb2b774e1f8f", "type": "OpenAI API", "z": "94f237d7e5864fc4", "name": "Manage Model Response WebSocket", "property": "ai", "propertyType": "msg", "service": "", "method": "manageModelResponseWebSocket", "x": 600, "y": 400, "wires": [ [ "5260c60b85f63c44" ] ] }, { "id": "5260c60b85f63c44", "type": "debug", "z": "94f237d7e5864fc4", "name": "Responses WebSocket", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 860, "y": 400, "wires": [] } ]