Client → Server Message Format
All WebSocket requests follow this envelope:
{
"event": "event-name",
"data": {}
}
1) ping (heartbeat)
{
"event": "ping"
}
2) gen (chat request)
Request schema
| Field | Type | Required | Description |
|---|---|---|---|
event |
"gen" |
Yes | Chat generation event name |
data.prompt |
string |
Yes | User prompt; must be non-empty after trim |
data.conversationId |
string |
No | Continue an existing conversation |
data.isPrivate |
boolean |
No | Passed to history retrieval when continuing conversation |
data.temperature |
number |
No | Normalized to 0 ~ 2 |
data.tools |
OpenAI tool[] |
No | Passed through to OpenAI-compatible path for tool-call loop |
data.enableWebSearch |
boolean or 0/1 or "true"/"false" |
No | Quick search switch |
data.webSearch.enabled |
boolean or 0/1 or "true"/"false" |
No | Explicit search switch (same purpose as enableWebSearch) |
data.webSearch.mode |
"auto" or "force" |
No | Default: auto |
data.webSearch.maxResults |
number |
No | Normalized to 1 ~ 8, default 5 |
data.webSearch.freshness |
"day" or "week" or "month" or "any" |
No | Default: week |
data.webSearch.lang |
"zh" or "en" or "auto" |
No | Default: auto |
Minimal example
{
"event": "gen",
"data": {
"prompt": "Hello, write a short poem for me"
}
}
With conversation + web search + tools
{
"event": "gen",
"data": {
"prompt": "Latest AI regulations in EU this week",
"conversationId": "conv-xxxxxx",
"temperature": 0.2,
"enableWebSearch": true,
"webSearch": {
"enabled": true,
"mode": "auto",
"maxResults": 5,
"freshness": "week",
"lang": "auto"
},
"tools": [
{
"type": "function",
"function": {
"name": "get_regulation_updates",
"description": "Get latest regulation updates by region",
"parameters": {
"type": "object",
"properties": {
"region": { "type": "string" }
},
"required": ["region"]
}
}
}
]
}
}
3) set-model (deprecated compatibility event)
set-model is currently kept for compatibility, but model switching is not handled through this event in current gateway logic.
{
"event": "set-model",
"data": {
"model": "xxxx"
}
}