Voice Conversation
Establish a WebSocket connection for voice conversation.
Note: This is a WebSocket endpoint, requiring wss:// protocol connection.
Connection URL example:
wss://api-platform.ope.ai/v1/realtime?model=AudioLLM/Voice2.0
Try It
GET
/v1/realtimewss://api-platform.ope.ai/v1/realtimeAuthentication
Uses Bearer Token authentication.
- Header:
Authorization: Bearer <token> - Example:
Authorization: Bearer sk-xxxxxx
Browser native
WebSocketAPI cannot customize request headers; if your server only supports Header authentication, please use server-side/Node client (or let the gateway support passing token via query).
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | No | Model to use (example: AudioLLM/Voice2.0) |
Request examples
- JavaScript (Node)
- Python
- Go
- Java
- C#
// npm i ws
import WebSocket from "ws";
const url = "wss://api-platform.ope.ai/v1/realtime?model=AudioLLM/Voice2.0";
const apiKey = process.env.OPEAI_API_KEY;
const ws = new WebSocket(url, {
headers: {
Authorization: `Bearer ${apiKey}`,
},
});
ws.on("open", () => {
console.log("connected");
// Send first packet/event according to your server protocol
// ws.send(JSON.stringify({ type: "input_text", text: "hello" }));
});
ws.on("message", (data) => {
console.log("message:", data.toString());
});
ws.on("close", () => console.log("closed"));
ws.on("error", (e) => console.error("error:", e));
import os
import asyncio
import websockets
URL = "wss://api-platform.ope.ai/v1/realtime?model=AudioLLM/Voice2.0"
API_KEY = os.environ.get("OPEAI_API_KEY")
async def main():
async with websockets.connect(URL, extra_headers={"Authorization": f"Bearer {API_KEY}"}) as ws:
print("connected")
# await ws.send('{"type":"input_text","text":"hello"}')
async for msg in ws:
print("message:", msg)
asyncio.run(main())
package main
import (
"log"
"net/http"
"os"
"github.com/gorilla/websocket"
)
func main() {
url := "wss://api-platform.ope.ai/v1/realtime?model=AudioLLM/Voice2.0"
header := http.Header{}
header.Set("Authorization", "Bearer "+os.Getenv("OPEAI_API_KEY"))
c, _, err := websocket.DefaultDialer.Dial(url, header)
if err != nil {
log.Fatal(err)
}
defer c.Close()
for {
_, msg, err := c.ReadMessage()
if err != nil {
log.Fatal(err)
}
log.Println(string(msg))
}
}
// Requires OkHttp (WebSocket supports custom headers)
// implementation("com.squareup.okhttp3:okhttp:4.12.0")
import okhttp3.*;
import okio.ByteString;
public class Main {
public static void main(String[] args) {
String url = "wss://api-platform.ope.ai/v1/realtime?model=AudioLLM/Voice2.0";
String apiKey = System.getenv("OPEAI_API_KEY");
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.addHeader("Authorization", "Bearer " + apiKey)
.build();
client.newWebSocket(request, new WebSocketListener() {
@Override public void onOpen(WebSocket webSocket, Response response) {
System.out.println("connected");
}
@Override public void onMessage(WebSocket webSocket, String text) {
System.out.println("message: " + text);
}
@Override public void onMessage(WebSocket webSocket, ByteString bytes) {
System.out.println("bytes: " + bytes.size());
}
@Override public void onFailure(WebSocket webSocket, Throwable t, Response response) {
t.printStackTrace();
}
});
}
}
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
var url = new Uri("wss://api-platform.ope.ai/v1/realtime?model=AudioLLM/Voice2.0");
var apiKey = Environment.GetEnvironmentVariable("OPEAI_API_KEY");
using var ws = new ClientWebSocket();
ws.Options.SetRequestHeader("Authorization", $"Bearer {apiKey}");
await ws.ConnectAsync(url, CancellationToken.None);
Console.WriteLine("connected");
var buffer = new byte[8192];
while (ws.State == WebSocketState.Open)
{
var result = await ws.ReceiveAsync(buffer, CancellationToken.None);
if (result.MessageType == WebSocketMessageType.Close) break;
var text = Encoding.UTF8.GetString(buffer, 0, result.Count);
Console.WriteLine(text);
}
}
}
Response example
- 101: Switching Protocols (WebSocket handshake successful)
- 400: Parameter/authentication error (returns JSON error object)