MeetStream — MIA API Reference

View as Markdown

MIA (MeetStream Infrastructure Agent) configurations define how an AI agent behaves when deployed into a meeting. Use these endpoints to create, retrieve, update, and delete agent configurations programmatically — no dashboard required.

Base URL: https://api.meetstream.ai Authentication: Authorization: Token <YOUR_API_KEY> Content-Type: application/json

Applies to: Google Meet, Zoom, Microsoft Teams


Agent configurations require that you have configured the relevant provider API keys in MeetStream. Add keys via the MeetStream dashboard → Integrations page (or the Integrations API) before creating an agent that references those providers.

Endpoints

MethodPathDescription
POST/api/v1/miaCreate a new agent configuration
GET/api/v1/miaRetrieve one or all agent configurations
PUT/api/v1/miaUpdate an existing agent configuration
DELETE/api/v1/miaDelete an agent configuration

POST /api/v1/mia

Create a new agent configuration.

Request Body

FieldTypeRequiredDescription
agent_namestringYesDisplay name for this agent configuration
modestringYes"pipeline" or "realtime" — see Operating Modes
modelobjectYesLLM or realtime model configuration (see below)
voiceobjectPipeline onlyTTS voice configuration (see below)
transcriberobjectPipeline onlySTT transcription configuration (see below)
agentobjectNoAgent behavior: response modality, first message, MCP servers
audioobjectNoAudio processing configuration
wake_wordobjectNoWake word gating — pipeline mode only
avatarobjectNoAvatar configuration (Anam provider)

Nested: model (Pipeline Mode)

FieldTypeRequiredDescription
providerstringYesLLM provider: "openai" or "anthropic"
modelstringYesModel name — e.g. "gpt-4.1", "gpt-4.1-mini"
system_promptstringYesSystem prompt defining agent personality and behavior
temperaturenumberNoLLM temperature (0–2)
max_tokensintegerNoMaximum response tokens

Nested: model (Realtime Mode)

FieldTypeRequiredDescription
providerstringYesRealtime provider: "openai", "xai", or "google"
modelstringOpenAI onlyModel name — e.g. "gpt-4o-realtime-preview"
system_promptstringYesSystem prompt defining agent personality and behavior
voicestringYesVoice name. OpenAI: alloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, verse. xAI: Ara, Eve, Leo, Rex, Sal. Google: Puck, Charon, Kore, Fenrir, Aoede, Leda, Orus, Zephyr
temperaturenumberNoTemperature (0–2)
max_response_output_tokensnumberNoMax output tokens — OpenAI only, must be a positive number
thinking_configobjectNoGoogle Gemini thinking: { "include_thoughts": bool, "thinking_budget": int }

Nested: voice (Pipeline Mode)

FieldTypeRequiredDescription
providerstringYesTTS provider: "openai" or "elevenlabs"
voice_idstringYesVoice identifier for the chosen provider
modelstringNoTTS model name — e.g. "tts-1", "eleven_turbo_v2_5"

Nested: transcriber (Pipeline Mode)

FieldTypeRequiredDescription
providerstringYesSTT provider: "openai", "deepgram", or "assemblyai"
modelstringYesSTT model name — e.g. "nova-3", "whisper-1"
languagestringNoLanguage code — e.g. "en", "es"
boostwordsarray[string]NoWords to boost recognition accuracy

Nested: agent

FieldTypeRequiredDescription
response_typestringNo"voice", "chat", or "action" — defaults to "voice"
first_messagestringNoGreeting spoken or sent as chat when the bot first joins
mcp_serversarray[object]NoMCP server configurations (see below)

Nested: agent.mcp_servers[]

FieldTypeRequiredDescription
urlstringYesStreamable HTTP MCP endpoint (must be HTTPS)
headersobjectNoAuthentication headers — e.g. { "Authorization": "Bearer <token>" }
allowed_toolsarray[string]NoWhitelist of tool names. Omit to allow all tools from this server
timeoutnumberNoPer-call timeout in seconds (default: 10)

Nested: wake_word (Pipeline Mode Only)

FieldTypeRequiredDescription
enabledbooleanNoWhether wake word gating is active
wordsarray[string] or stringNoTrigger phrases. Comma-separated string or array — e.g. ["hey assistant", "hello bot"]
timeoutnumberNoSeconds the agent stays active after the wake word is heard (default: 30)

Nested: avatar

FieldTypeRequiredDescription
enabledbooleanNoWhether the avatar is active
providerstringNoAvatar provider — currently "anam"
avatar_idstringRequired when provider is "anam"Avatar identifier from the Anam platform

Example Request — Pipeline Mode

$curl -X POST https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_name": "Meeting Assistant",
> "mode": "pipeline",
> "model": {
> "provider": "openai",
> "model": "gpt-4.1",
> "system_prompt": "You are a helpful meeting assistant. Summarize key decisions and track action items."
> },
> "voice": {
> "provider": "openai",
> "voice_id": "nova"
> },
> "transcriber": {
> "provider": "deepgram",
> "model": "nova-3",
> "language": "en"
> },
> "agent": {
> "response_type": "voice",
> "first_message": "Hello! I am your meeting assistant. How can I help today?"
> }
> }'

Example Request — Realtime Mode

$curl -X POST https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_name": "Fast Voice Agent",
> "mode": "realtime",
> "model": {
> "provider": "openai",
> "model": "gpt-4o-realtime-preview",
> "system_prompt": "You are a concise, helpful assistant.",
> "voice": "alloy"
> }
> }'

Example Request — Realtime Mode (xAI Grok)

$curl -X POST https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_name": "Grok Agent",
> "mode": "realtime",
> "model": {
> "provider": "xai",
> "system_prompt": "You are a witty and helpful meeting assistant.",
> "voice": "Ara"
> }
> }'

Example Request — Realtime Mode (Google Gemini)

$curl -X POST https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_name": "Gemini Agent",
> "mode": "realtime",
> "model": {
> "provider": "google",
> "system_prompt": "You are a thoughtful meeting assistant.",
> "voice": "Puck",
> "thinking_config": {
> "include_thoughts": true,
> "thinking_budget": 1024
> }
> }
> }'

Example Request — Pipeline Mode with Wake Words

$curl -X POST https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_name": "Wake Word Agent",
> "mode": "pipeline",
> "model": {
> "provider": "openai",
> "model": "gpt-4.1",
> "system_prompt": "You are a helpful meeting assistant. Only respond when addressed."
> },
> "voice": {
> "provider": "elevenlabs",
> "voice_id": "21m00Tcm4TlvDq8ikWAM"
> },
> "transcriber": {
> "provider": "deepgram",
> "model": "nova-3"
> },
> "wake_word": {
> "enabled": true,
> "words": ["hey assistant", "hello bot"],
> "timeout": 30
> }
> }'

Example Request — Pipeline Mode with MCP Tools

$curl -X POST https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_name": "Action Agent",
> "mode": "pipeline",
> "model": {
> "provider": "openai",
> "model": "gpt-4.1",
> "system_prompt": "Listen for action items. When someone says to create a ticket, use the Linear tool to create it. Do not speak unless asked."
> },
> "voice": {
> "provider": "elevenlabs",
> "voice_id": "21m00Tcm4TlvDq8ikWAM"
> },
> "transcriber": {
> "provider": "deepgram",
> "model": "nova-3"
> },
> "agent": {
> "response_type": "action",
> "mcp_servers": [
> {
> "url": "https://your-mcp-gateway.example.com/mcp",
> "headers": { "Authorization": "Bearer <MCP_TOKEN>" },
> "allowed_tools": ["create_issue", "list_issues"]
> }
> ]
> }
> }'

Response — 200 OK

1{
2 "message": "Agent configuration created successfully.",
3 "agent_config_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
4 "agent_config": {
5 "AgentConfigID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
6 "UserID": "usr_xxxx",
7 "AgentName": "Meeting Assistant",
8 "Mode": "pipeline",
9 "Model": {
10 "provider": "openai",
11 "model": "gpt-4.1",
12 "system_prompt": "You are a helpful meeting assistant."
13 },
14 "Voice": { "provider": "openai", "voice_id": "nova" },
15 "Transcriber": { "provider": "deepgram", "model": "nova-3", "language": "en" },
16 "CreatedAt": "2026-04-22T10:00:00Z",
17 "UpdatedAt": "2026-04-22T10:00:00Z"
18 }
19}

GET /api/v1/mia

Retrieve a specific agent configuration by ID, or list all configurations for your account.

Query Parameters

ParameterTypeRequiredDescription
agent_config_idstringNoRetrieve a specific configuration by ID

If agent_config_id is omitted, all configurations for your account are returned.

Example — List All Configurations

$curl -X GET https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>"

200 OK

1{
2 "agent_configs": [
3 {
4 "AgentConfigID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
5 "UserID": "usr_xxxx",
6 "AgentName": "Meeting Assistant",
7 "Mode": "pipeline",
8 "Model": { "provider": "openai", "model": "gpt-4.1", "system_prompt": "..." },
9 "Voice": { "provider": "openai", "voice_id": "nova" },
10 "Transcriber": { "provider": "deepgram", "model": "nova-3" },
11 "CreatedAt": "2026-04-22T10:00:00Z",
12 "UpdatedAt": "2026-04-22T10:00:00Z"
13 }
14 ],
15 "count": 1
16}

Example — Get a Specific Configuration

$curl -X GET "https://api.meetstream.ai/api/v1/mia?agent_config_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
> -H "Authorization: Token <YOUR_API_KEY>"

200 OK

1{
2 "agent_config": {
3 "AgentConfigID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
4 "UserID": "usr_xxxx",
5 "AgentName": "Meeting Assistant",
6 "Mode": "pipeline",
7 "Model": { "provider": "openai", "model": "gpt-4.1", "system_prompt": "..." },
8 "Voice": { "provider": "openai", "voice_id": "nova" },
9 "Transcriber": { "provider": "deepgram", "model": "nova-3" },
10 "Agent": { "response_type": "voice", "first_message": "Hello!" },
11 "CreatedAt": "2026-04-22T10:00:00Z",
12 "UpdatedAt": "2026-04-22T10:00:00Z"
13 }
14}

PUT /api/v1/mia

Update an existing agent configuration. Only fields present in the request body are updated — omitted fields are left unchanged.

Request Body

FieldTypeRequiredDescription
agent_config_idstringYesID of the configuration to update
agent_namestringNoNew display name
modestringNoChange mode: "pipeline" or "realtime". Triggers full re-validation of all mode-specific fields.
modelobjectNoReplace the model configuration
voiceobjectNoReplace the voice configuration (pipeline mode)
transcriberobjectNoReplace the transcription configuration (pipeline mode)
agentobjectNoReplace agent behavior settings
wake_wordobjectNoReplace wake word configuration
audioobjectNoReplace audio configuration
avatarobjectNoReplace avatar configuration

Note: Changing mode triggers full re-validation. Updating individual sections like model, voice, or transcriber validates that you have the required provider API keys but does not re-validate the full config structure.

Example — Update the System Prompt

$curl -X PUT https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_config_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
> "model": {
> "provider": "openai",
> "model": "gpt-4.1-mini",
> "system_prompt": "You are a concise meeting assistant. Keep answers brief."
> }
> }'

Example — Update Agent Name and Wake Word

$curl -X PUT https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_config_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
> "agent_name": "Scrum Bot",
> "wake_word": {
> "enabled": true,
> "words": ["hey scrum bot"],
> "timeout": 45
> }
> }'

Example — Switch from Pipeline to Realtime Mode

$curl -X PUT https://api.meetstream.ai/api/v1/mia \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "agent_config_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
> "mode": "realtime",
> "model": {
> "provider": "openai",
> "model": "gpt-4o-realtime-preview",
> "system_prompt": "You are a concise meeting assistant.",
> "voice": "alloy"
> }
> }'

Response — 200 OK

1{
2 "message": "Agent configuration updated successfully.",
3 "agent_config": {
4 "AgentConfigID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
5 "UserID": "usr_xxxx",
6 "AgentName": "Scrum Bot",
7 "Mode": "pipeline",
8 "Model": { "provider": "openai", "model": "gpt-4.1-mini", "system_prompt": "..." },
9 "Voice": { "provider": "openai", "voice_id": "nova" },
10 "Transcriber": { "provider": "deepgram", "model": "nova-3" },
11 "WakeWord": { "enabled": true, "words": ["hey scrum bot"], "timeout": 45 },
12 "UpdatedAt": "2026-04-22T11:00:00Z"
13 }
14}

DELETE /api/v1/mia

Permanently delete an agent configuration. This action cannot be undone.

Query Parameters

ParameterTypeRequiredDescription
agent_config_idstringYesID of the configuration to delete

Example

$curl -X DELETE "https://api.meetstream.ai/api/v1/mia?agent_config_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
> -H "Authorization: Token <YOUR_API_KEY>"

200 OK

1{
2 "message": "Agent configuration deleted successfully."
3}

Error Codes

HTTP StatusWhen it occurs
400Missing required field, invalid value, unsupported provider, or provider API key not configured
403You do not own this agent configuration
404Agent configuration or user not found
405HTTP method not allowed on this path
500Internal server error

Common Error Responses

Missing provider API key

1{
2 "message": "API key not configured for: model.provider=openai (missing OpenAIAPIKey). Add it via the Integrations API first."
3}

Missing required field

1{
2 "message": "Missing agent_name."
3}

Invalid mode

1{
2 "message": "Invalid mode: batch. Must be 'pipeline' or 'realtime'."
3}

Unsupported provider

1{
2 "message": "Unsupported model provider: cohere. Supported: ['openai', 'anthropic']"
3}

Invalid realtime voice

1{
2 "message": "Invalid OpenAI realtime voice: 'shimmy'. Supported: ['alloy', 'ash', 'ballad', 'coral', 'echo', 'fable', 'nova', 'onyx', 'sage', 'shimmer', 'verse']"
3}

Invalid xAI voice

1{
2 "message": "Invalid xAI voice: 'Bob'. Supported: ['Ara', 'Eve', 'Leo', 'Rex', 'Sal']"
3}

Invalid Gemini voice

1{
2 "message": "Invalid Gemini voice: 'Zeus'. Supported: ['Aoede', 'Charon', 'Fenrir', 'Kore', 'Leda', 'Orus', 'Puck', 'Zephyr']"
3}

Access denied

1{
2 "message": "Access denied to this agent configuration."
3}

Supported Providers Quick Reference

Realtime Mode Providers

ProviderVoice OptionsNotes
openaialloy, ash, ballad, coral, echo, fable, nova, onyx, sage, shimmer, verseRequires model field
xaiAra, Eve, Leo, Rex, SalModel is hardcoded server-side
googlePuck, Charon, Kore, Fenrir, Aoede, Leda, Orus, ZephyrSupports thinking_config

Pipeline Mode Providers

ComponentSupported Providers
Model (LLM)openai, anthropic
Voice (TTS)openai, elevenlabs
Transcriber (STT)openai, deepgram, assemblyai

Using an Agent Config with a Bot

Pass agent_config_id when creating a bot to attach the agent to a meeting session. The agent becomes active as soon as the bot joins.

$curl -X POST https://api.meetstream.ai/api/v1/bots/create_bot \
> -H "Authorization: Token <YOUR_API_KEY>" \
> -H "Content-Type: application/json" \
> -d '{
> "meeting_link": "https://meet.google.com/abc-defg-hij",
> "agent_config_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
> "socket_connection_url": {
> "websocket_url": "wss://agent-meetstream-prd-main.meetstream.ai/bridge"
> },
> "live_audio_required": {
> "websocket_url": "wss://agent-meetstream-prd-main.meetstream.ai/bridge/audio"
> }
> }'

See the Create Bot Payload Reference for all available bot creation options.