POST /v1/agents) and connect with session_label={agent_id}; the engine
loads persona, voice, and greeting from that profile.
Greeting playback is live on Omni. The same field works
inline in a post-handshake
configure frame if you are not using agent profiles.Console (recommended)
1
Create or open an agent
In console.pyai.com → Agents → New agent
or open an existing profile.
2
Set the greeting message
Under Persona & Voice, fill in Greeting message, e.g.Pick a voice on the same tab. Save changes.
3
Test in the browser
Click Test greeting on the same tab. The console opens a short Omni
session with your agent profile and plays turn-0 audio in your speakers.
4
Connect from your app
Use the Connect tab URL:Authorize with your API key (
omni:session scope). The greeting plays
automatically, you do not send it again in configure unless you want to
override per call.Recording disclosure (consent line)
When Record calls is enabled, set a Recording disclosure on the same tab. The engine speaks the consent line before recording starts, then plays your greeting. Required for TCPA-style compliance when capturing audio.API
Create or update an agent withgreeting (and optional voice_id):
Inline configure (no agent profile)
If you connect without session_label, pass greeting in the first
configure frame after the WebSocket opens:
configure surface.
Pre-roll alternative (client-side TTS)
Before native greeting shipped, apps synthesized the opening line with Speak and played it locally. That pattern still works but is optional now, prefer the nativegreeting field for one billing line and simpler wiring. Details:
Browser voice agent, Make the agent speak first.
Related
Browser voice agent
Full browser Omni walkthrough.
Twilio phone agent
Greeting on inbound PSTN calls.
Omni protocol
greeting, consent_line, and configure frames.Post-call extraction
Capture structured data after the greeting call.