Punto de conexión
GET con Connection: Upgrade y Upgrade: websocket). El servidor rechaza cualquier otra solicitud con 426.
Autenticación
Envía tu Clave API de Comfy en un encabezado de la solicitud de actualización, ya sea comoX-API-Key: comfyui-... o como Authorization: Bearer comfyui-.... Router no lee ninguna clave de la cadena de consulta ni del subprotocolo WebSocket.
Conectar
Cuando la actualización se complete correctamente, envía y recibe los eventos en tiempo real que xAI documenta para Grok Voice. Este ejemplo configura la sesión, envía un turno de texto e imprime cada tipo de evento que recibe.Eventos
Router no define su propio protocolo de eventos. Los eventos del servidor te llegan exactamente como los envía fal, y Router reenvía sin cambios los eventos de cliente que acepta. Para consultar la lista de eventos, los campos de sesión, las voces y los formatos de audio, consulta:- xAI Speech to Speech y el esquema de eventos en tiempo real de xAI
- la página del modelo en tiempo real Grok Voice de fal y su página de API
session.created. fal también envía sus propios mensajes de texto JSON de tipo x-fal-message (información de temporización); puedes omitirlos. Las comprobaciones de Router también aceptan un evento de cliente como un único mensaje de texto JSON, pero usa msgpack a menos que hayas probado JSON con tu cliente.
Router comprueba cada evento de cliente antes de reenviarlo:
- Tipos de evento:
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.cancelyx-fal-session.configurede fal. - Modelos: un
modelensession.updatedebe sergrok-voice-latest,grok-voice-3.0ogrok-voice-2.0. - Herramientas: las herramientas de función que ejecuta tu cliente están permitidas. Router rechaza las herramientas del lado del servidor (búsqueda web, búsqueda en X, búsqueda de archivos y MCP).
- Multimedia: Router rechaza la entrada de imagen y video. La sesión es solo de voz y texto.
- Tamaño: un mensaje de cliente puede ocupar como máximo 1 MiB.
1008.
Precios
Una sesión cuesta **$0.0011869 por segundo** (aproximadamente $0.0712 por minuto, o 0.2504 créditos por segundo, alrededor de 15.0 créditos por minuto, con 211 créditos = $1 USD). Se factura en incrementos de 15 segundos mientras la sesión está abierta, y el último incremento parcial se factura por segundo, redondeado hacia arriba. La facturación corre desde la actualización de la conexión hasta que se cierra el socket, independientemente de que haya o no audio en transmisión.Límites
Cuando una sesión alcanza su límite de tiempo o se queda sin créditos, la conexión puede cerrarse sin una trama de cierre (a menudo aparece como el código de cierre
1006). Vuelve a conectarte solo después de recargar, o inicia una nueva sesión si necesitas más tiempo.
Errores
Antes de la actualización
Si Router rechaza la conexión, responde con un estado HTTP y un cuerpo JSON en lugar de cambiar de protocolo:code; detail es para las personas.
Después de la actualización
Cualquier otro cierre proviene de fal o xAI. Consulta su documentación enlazada en Events.
Siguiente
- Facturación: cómo cobra Router y cómo conciliar el uso.
- Errores y reintentos: los grupos de errores que devuelven otras llamadas de Router.
- Limitaciones: tasas de solicitudes y otros límites.