Create Bot
Authentication
Format: Token <your_api_key>
Headers
Optional retry key (use a fresh UUID per logical create). If a bot was already created for your account with this key, the API skips creation and replays that bot with HTTP 507. Keys do not expire. A failed create is not cached, so a retry after a failure runs fresh.
Request
Optional ID of a custom storage destination configured in the MeetStream dashboard. Omit to use the user’s default destination. This selects a saved destination; storage setup is dashboard-only.
Whether the bot records the mixed meeting audio. Must be true when audio_mixed_mp3 is true.
Whether the bot should record video. Defaults to true when the field is omitted, so an omitted field records video. Send false explicitly for an audio-only bot. Audio only is the recommended default unless you need the video: it is faster to process and smaller to store, and transcripts, summaries, diarization and speaker timelines all work without it.
Also produce an MP3 copy of the mixed meeting audio, returned as audio_mp3_url by Get Bot Audio. Requires audio_required: true. Can also be set inside recording_config; the top-level value wins when both are sent.
Also produce MP3 copies of each per-participant audio segment, returned as download_url_mp3 by Get Audio Streams. Requires audio_separate_streams: true. Can also be set inside recording_config.
Your own logical key for this bot (printable ASCII, 1-2000 characters). It is bound permanently to the first bot created with it for your account. Sending the same key again returns that existing bot with HTTP 200 instead of creating a new one; sending it with a different meeting_link returns 409. Use the Idempotency-Key header instead for transport-level retries. See the Deduplication & Idempotency Keys guide.
A one-shot audio clip the bot plays into the meeting shortly after it is admitted. Google Meet and Microsoft Teams only (400 on other platforms).
Values for the template variables in the MIA agent’s system prompt, for this bot only. Keys are variable names; values must be strings or primitives (objects and arrays are rejected). Used with agent_config_id.
Omit or use for guest join. For authenticated Zoom join, send exactly one of zak_url or obf_url. MeetStream fetches your HTTPS mint URL at join time; your server owns OAuth and refresh tokens. Fetch failure does not fall back to guest. Both URLs together return 400. The deprecated fields use_zoom_obf and zoom_oauth_connection_user_id are rejected. See /guides/app-integrations/zoom-authenticated-bots.
Join Google Meet signed in, as an account on a Google Workspace domain registered through the Google login endpoints. See /guides/app-integrations/google-signed-in-bots.
Join Microsoft Teams signed in, as a Microsoft 365 account on a domain registered through the Teams login endpoints. The bot shows that account’s display name and picture, so bot_name and bot_image_url are not applied. Each account runs one bot at a time. A malformed teams block is dropped and the bot joins as a guest. See /guides/app-integrations/teams-signed-in-bots.
Record one video file per participant in addition to the composited meeting video. Off unless you set it to true, and it stays an explicit opt-in because it multiplies processing and storage by the number of participants.
Arbitrary key-value metadata attached to the bot.
WebSocket URL for two-way audio/data bridge connection.
Bot media is retained for 30 days (720 hours) by default, included in the base rate. Retention beyond 30 days is billed at $0.05 per GB per month. Set retention.hours lower to delete media sooner.
Response
Deduplication replay. A bot already exists for this deduplication_key and the same meeting_link; it is returned instead of creating a new one.
Set when a post-call transcription provider was configured; otherwise null.
Active for an immediate join, Scheduled when join_at was set. On a replay, the bot’s current status.
