Skip to main content

Documentation Index

Fetch the complete documentation index at: https://daily-ms-pcc-830.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

The generic WebSocket endpoint is a protocol-agnostic way to connect a WebSocket client to your Pipecat Cloud agent. Unlike the provider-specific endpoints (/ws/twilio, /ws/plivo, etc.), it imposes no protocol requirements. Messages are relayed directly between the client and your bot without validation or transformation.

When to Use

  • Telephony providers: Connect any telephony provider that supports WebSocket audio streaming.
  • Server-to-server integrations: Connect your own backend or a third-party platform over WebSocket.
  • Custom WebSocket clients: Any client that can establish a WebSocket connection.
Web and mobile clients: Browsers and mobile apps can connect via WebSocket, but we recommend WebRTC instead. WebRTC handles varying network conditions, media quality, and reconnect behavior better than raw WebSocket. See the Daily WebRTC guide or the SmallWebRTC client SDKs for recommended web and mobile options.

Endpoint

wss://{region}.api.pipecat.daily.co/ws/generic/{agentName}.{organizationName}
The service host ({agentName}.{organizationName}) can also be provided as a query parameter:
wss://{region}.api.pipecat.daily.co/ws/generic?serviceHost={agentName}.{organizationName}

Authentication

The generic endpoint supports optional HMAC token authentication, controlled by the websocket_auth setting on your agent. See the WebSocket Authentication guide for details on how to configure and use token authentication. When websocket_auth is set to none, clients can connect directly without a token:
wscat -c "wss://us-west.api.pipecat.daily.co/ws/generic/my-agent.my-org"

Message Format

The generic endpoint supports both text and binary WebSocket frames. Your bot receives messages exactly as sent by the client — no protocol-specific parsing or transformation is applied. Your bot code is responsible for handling the client’s message format. Use the appropriate serializer for your client’s protocol, or implement custom message handling for non-standard clients.

Passing parameters to the bot

When your service is deployed with websocket_auth = "token", you can pass arbitrary JSON data to your bot at session start by including a body in the /start request:
curl -X POST "https://api.pipecat.daily.co/v1/public/my-agent/start" \
  -H "Authorization: Bearer pk_your_public_key" \
  -H "Content-Type: application/json" \
  -d '{"transport": "websocket", "body": {"caller_id": "abc123"}}'
The body is delivered to your bot as args.body — the same way it works for daily and webrtc transports. See Passing data for examples in your bot code.
Body delivery for transport: "websocket" requires websocket_auth = "token". The body is held server-side and handed to the bot once the WebSocket upgrade authenticates the session token — the returned wsUrl itself is unchanged regardless of body size. Maximum body size is 1 MB of JSON, matching the other transports.A /start call with a body against a service that has websocket_auth = "none" is rejected with 400 Bad Request.