엔드포인트
GET과 Connection: Upgrade, Upgrade: websocket 포함). 그 외의 요청은 426으로 거부됩니다.
인증
업그레이드 요청의 헤더에 Comfy API 키를X-API-Key: comfyui-... 또는 Authorization: Bearer comfyui-... 형식으로 전송하세요. Router는 쿼리 문자열이나 WebSocket 서브프로토콜에서 키를 읽지 않습니다.
연결
업그레이드가 성공하면 xAI가 Grok Voice에 대해 문서화한 실시간 이벤트를 주고받습니다. 이 예제는 세션을 구성하고, 텍스트 턴 하나를 전송하며, 수신하는 각 이벤트 유형을 출력합니다.이벤트
Router는 자체 이벤트 프로토콜을 정의하지 않습니다. 서버 이벤트는 fal이 보내는 그대로 도착하며, Router가 허용하는 클라이언트 이벤트는 변경 없이 전달됩니다. 이벤트 목록, 세션 필드, 음성, 오디오 형식은 다음 문서를 참고하세요: 예제에서처럼 각 클라이언트 이벤트를 하나의 msgpack 바이너리 메시지로 전송하세요. 이는 fal의 realtime 클라이언트가 사용하는 프레이밍이며, 모델의 이벤트도session.created로 시작하는 msgpack 바이너리 메시지로 같은 방식으로 돌아옵니다. fal은 x-fal-message 유형의 자체 JSON 텍스트 메시지(타이밍 정보)도 보내는데, 이는 건너뛰어도 됩니다. Router의 검사는 클라이언트 이벤트를 하나의 JSON 텍스트 메시지로도 허용하지만, 클라이언트에서 JSON을 테스트해 보지 않았다면 msgpack을 사용하세요.
Router는 전달하기 전에 각 클라이언트 이벤트를 검사합니다:
- 이벤트 유형:
session.update,input_audio_buffer.append,input_audio_buffer.commit,input_audio_buffer.clear,conversation.item.create,conversation.item.delete,conversation.item.truncate,response.create,response.cancel, 그리고 fal의x-fal-session.configure. - 모델:
session.update의model은grok-voice-latest,grok-voice-3.0,grok-voice-2.0중 하나여야 합니다. - 도구: 클라이언트가 실행하는 함수 도구는 허용됩니다. 서버 측 도구(웹 검색, X 검색, 파일 검색, MCP)는 거부됩니다.
- 미디어: 이미지 및 비디오 입력은 거부됩니다. 세션은 음성과 텍스트만 지원합니다.
- 크기: 클라이언트 메시지 하나는 최대 1 MiB입니다.
1008로 세션을 닫습니다.
가격
세션 비용은 **초당 $0.0011869**입니다(분당 약 $0.0712, 초당 0.2504 크레딧, 분당 약 15.0 크레딧이며, 211 크레딧 = $1 USD 기준입니다). 세션이 열려 있는 동안 15초 증가분 단위로 청구되며, 마지막 부분 증가분은 초 단위로 올림하여 청구됩니다. 청구는 오디오가 흐르는지 여부와 관계없이 업그레이드 시점부터 소켓이 닫힐 때까지 이루어집니다.제한
세션이 시간 제한에 도달하거나 크레딧이 소진되면 연결이 종료 프레임 없이 닫힐 수 있습니다(흔히 종료 코드
1006으로 표시됨). 크레딧을 충전한 이후에만 다시 연결하거나, 더 많은 시간이 필요하면 새 세션을 시작하세요.
오류
업그레이드 이전
Router가 연결을 거부하면 프로토콜 전환 대신 HTTP 상태와 JSON 본문으로 응답합니다:code를 기준으로 분기하세요. detail은 사람이 읽기 위한 정보입니다.
업그레이드 이후
그 외의 종료는 fal 또는 xAI에서 발생합니다. 이벤트에 링크된 해당 문서를 참조하세요.