Skip to main content
Connect a voice agent that runs on OpenAI Realtime, on Azure OpenAI, or on your own server that speaks the same protocol. The OpenAI Realtime connection fields with an API key, a model, and a prompt ID, and the Realtime URL left empty The OpenAI Realtime connection fields with an API key, a model, and a prompt ID, and the Realtime URL left empty

Connect

OpenAI has no agent list that Bluejay can sync, so you connect each agent by hand.
1

Create the agent

Create an Inbound voice agent with the OpenAI Realtime connection type. Bluejay always opens the session to your agent, so your agent never places the call.
2

Point Bluejay at your endpoint

  • Realtime URL (optional): leave it empty to use OpenAI’s own endpoint, . Set it for Azure OpenAI or your own server. Bluejay adds ?model= to the URL unless the URL already has a model parameter.
  • API key: Bluejay sends it as Authorization: Bearer. Bluejay stores it encrypted, and you cannot read it back.
  • Model (optional): Bluejay uses gpt-realtime when you leave it empty.
3

Choose where the agent's setup comes from

  • If you built the agent in the OpenAI Realtime playground, enter its stored prompt () in Prompt ID and leave Session overrides empty. Bluejay then tests the prompt itself, so your later edits in OpenAI show up in the next test. Add a version to pin one, or leave it empty to use the prompt’s current version.
  • If the agent lives in your own code, put its session in Session overrides as a JSON object, such as instructions, the voice, turn detection, and tools. Name the agent’s language in the instructions, because without one the model can pick a different language on each opening turn.
The Model and Prompt ID fields win over a model or prompt key in the session overrides. Bluejay always sets the audio format to 24 kHz PCM in both directions, and you cannot change it. Through the API, set connection_type to OPENAI_REALTIME on add agent, and set these fields:
  • openai_realtime_url
  • openai_api_key
  • openai_model
  • openai_prompt_id
  • openai_prompt_version
  • openai_realtime_session

Test

Run a simulation on the agent as you would for any voice agent. Bluejay asks your agent for an opening response, so your agent speaks first. When the Digital Human interrupts, Bluejay drops the agent audio that has not played yet. The transcript comes from Bluejay’s own speech-to-text, not from OpenAI’s transcript. Bluejay saves the OpenAI session ID with the result. If OpenAI sends an error during the call, Bluejay records it in the result metadata under .

Monitor

Bluejay does not receive your production Realtime sessions. To score them, send each conversation to POST /v1/evaluate after it ends. See Logs.

Limits

Bluejay does not run the tools in your session. When the model calls a function, Bluejay sends no result back, so the agent continues without one and no tool calls appear on the result. Bluejay also does not send the result ID to your agent.

Troubleshooting

Last modified on October 21, 2026