Use managed mode

Updated

Use ASR, LLM, and TTS models that Agora provides access to, without your own provider accounts or API keys.

Preview documentation

You're reading the Conversational AI Platform (Preview) docs. Switch to Main.

Managed mode lets your agent use supported ASR, LLM, and TTS models without your own provider accounts or API keys. Agora provides access to the models. You choose the vendor and model to use for ASR, LLM, and TTS, or let the Platform select them. To use your own provider accounts instead, see Use your own provider keys (BYOK).

Understand the tech

An agent has ASR, LLM, and TTS models. To use managed mode for a model, choose a vendor and model from Supported vendors and models, and don't provide a provider API key.

You choose the credential mode for each model. For example, an agent can use managed ASR and TTS with your own LLM key. For details, see Use your own provider keys.

For a complete agent example, see Create an agent.

Choose managed models

Set the managed models when you create an agent. This example uses Deepgram Nova 3 for ASR, OpenAI GPT-4.1 Mini for the LLM, and OpenAI TTS-1 for TTS. The SDK examples use the client that you create in Prerequisites.

Create each model without an API key:

from agora_agent import Agent, DeepgramSTT, OpenAI, OpenAITTS

agent = (
    Agent(client=client)
    .with_stt(DeepgramSTT(model="nova-3", language="en-US"))
    .with_llm(
        OpenAI(
            model="gpt-4.1-mini",
            system_messages=[
                {"role": "system", "content": "You are a friendly support agent for Acme. Keep your answers short."}
            ],
        )
    )
    .with_tts(OpenAITTS(model="tts-1", voice="alloy"))
)

saved_agent = agent.save(name="Support agent")

Create each model without an API key:

import { Agent, DeepgramSTT, OpenAI, OpenAITTS } from 'agora-agents';

const agent = new Agent({ client })
  .withStt(new DeepgramSTT({ model: 'nova-3', language: 'en-US' }))
  .withLlm(
    new OpenAI({
      model: 'gpt-4.1-mini',
      systemMessages: [
        { role: 'system', content: 'You are a friendly support agent for Acme. Keep your answers short.' },
      ],
    }),
  )
  .withTts(new OpenAITTS({ model: 'tts-1', voice: 'alloy' }));

const savedAgent = await agent.save({ name: 'Support agent' });

Create each model without an API key:

agent := agentkit.NewAgent(client).
	WithStt(vendors.NewDeepgramSTT(vendors.DeepgramSTTOptions{Model: "nova-3", Language: "en-US"})).
	WithLlm(vendors.NewOpenAI(vendors.OpenAIOptions{
		Model: "gpt-4.1-mini",
		SystemMessages: []map[string]interface{}{
			{"role": "system", "content": "You are a friendly support agent for Acme. Keep your answers short."},
		},
	})).
	WithTts(vendors.NewOpenAITTS(vendors.OpenAITTSOptions{Model: "tts-1", Voice: "alloy"}))

savedAgent, err := agent.Save(ctx, agentkit.SaveOptions{Name: "Support agent"})
if err != nil {
	log.Fatal(err)
}

Send a request to Create an agent with a pipeline:

curl --request POST \
  --url https://preview.ai.agora.io/conversational-ai/v1/projects/<your_app_id>/agents \
  --header 'Authorization: Basic <your_base64_encoded_credentials>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "agent_name": "Support agent",
  "instructions": "You are a friendly support agent for Acme. Keep your answers short.",
  "pipeline": {
    "mode": "cascaded",
    "asr": {
      "credential": { "mode": "managed" },
      "vendor": "deepgram",
      "model": "nova-3",
      "language": "en-US"
    },
    "llm": {
      "credential": { "mode": "managed" },
      "vendor": "openai",
      "style": "openai",
      "model": "gpt-4.1-mini"
    },
    "tts": {
      "credential": { "mode": "managed" },
      "vendor": "openai",
      "params": {
        "model": "tts-1",
        "voice": "alloy"
      }
    }
  }
}'

In this example:

  • Each block sets credential.mode to managed. A managed block doesn't accept fields or a custom provider endpoint url.
  • The asr block uses Deepgram Nova 3 for US English.
  • The llm block uses OpenAI GPT-4.1 Mini.
  • The tts block uses OpenAI TTS-1, with the voice in params.

You then start sessions with the agent as usual. For details, see Start a session.

Supported vendors and models

The following vendors and models are available in managed mode.

ASR

VendorModels
ARESBuilt-in ASR engine
Deepgramnova-2, nova-3

LLM

VendorModels
OpenAIgpt-4o-mini, gpt-4.1-mini, gpt-5-nano, gpt-5-mini, gpt-5.6-luna

TTS

VendorModels
MiniMaxspeech-2.6-turbo, speech-2.8-turbo
OpenAItts-1

Reference

For more information, see the following pages:

API reference