Realtime (WebSocket)
wss://…/v1/realtime — پروتکل Realtime اوپنایآی، صدا و متن دوطرفه، هر نشست یک رزرو.
WSS
wss://iranrouter.com/v1/realtime?model={model}پروتکل Realtime اوپنایآی روی WebSocket، بایتبهبایت همانطور که SDK میفرستد و میخواند — session.update، input_audio_buffer.append، response.create، … و رویدادهای سرور. فقط مدلهایی که در کاتالوگ قابلیت realtime دارند.
from openai import OpenAI client = OpenAI(api_key="ir-...", websocket_base_url="wss://iranrouter.com/v1") with client.beta.realtime.connect(model="openai/gpt-4o-realtime-preview") as conn: conn.session.update(session={"modalities": ["text"]}) conn.conversation.item.create(item={"type": "message", "role": "user", "content": [{"type": "input_text", "text": "سلام"}]}) conn.response.create() for event in conn: if event.type == "response.text.delta": print(event.delta, end="") elif event.type == "response.done": break
| موضوع | رفتار |
|---|---|
| احراز هویت | هدر Authorization: Bearer ir-…، یا از مرورگر در زیرپروتکل openai-insecure-api-key.ir-… (همانطور که SDK اوپنایآی میفرستد). |
| صورتحساب | هر نشست یک درخواست است: در اتصال ۱ دلار (به ریال روز) رزرو میشود، مصرف از هر response.done جمع میشود (توکن متن، صدا و کش با نرخ خودشان)، در بستن تسویه و مابقی آزاد میشود. |
| بودجهٔ نشست | با رسیدن مصرف به ۸۰٪ رزرو، رویداد error با کد session_budget_reached میآید و اتصال بسته میشود؛ دوباره وصل شوید. حداکثر طول نشست ۳۰ دقیقه (session_max_duration). |
| کلید | فقط کلید اعتباری (کیف پول)؛ سهمیهٔ توکنی و کلید رایگان با model_not_in_plan رد میشوند. هر کاربر همزمان تا ۵ نشست (realtime_session_limit). |
| رونویسی صدای ورودی | input_audio_transcription ارائه نمیشود: از session.update برداشته میشود و یک رویداد error با کد input_audio_transcription_unsupported میآید؛ بقیهٔ تنظیمات اعمال میشود. |
| قطع اتصال وسط پاسخ | پاسخی که هنگام قطع اتصال در حال تولید است لغو میشود و توکنهای تولیدشده تا همانجا شارژ میشوند. |
| خطاها | پیش از بسته شدن، یک رویداد error در همان شکل اوپنایآی میآید: invalid_api_key، model_not_found، model_not_realtime، insufficient_balance، no_capacity، upstream_error. |
Realtime در OpenAPI نیست (WebSocket است). مسیر /openai/realtime هم همین نشست را میدهد تا websocket_base_url با پیشوند SDK کار کند.