Create Bot Payload Reference
Create Bot Payload Reference: Platform Authentication
Use POST /api/v1/bots/create_bot with Authorization: Token <YOUR_API_KEY> and Content-Type: application/json. See the Create Bot API for the full request schema.
Recording defaults
Three defaults are worth setting deliberately on every create bot call, because the API defaults are not the ones most integrations want.
1. Send video_required: false for audio-only bots. video_required defaults to true, so an omitted field records video. Send false explicitly for an audio-only bot:
2. When video is on, send speaker_view. recording_config.video_layout accepts exactly speaker_view or grid_view. It is ignored when video_required is false, because an audio-only bot never runs the compositor. Google Meet, Microsoft Teams and Zoom accept both values; WhatsApp accepts only grid_view.
Use grid_view only when you specifically want the mosaic.
3. Per-participant video is opt-in. Never set video_separate_streams: true by default. It produces one video file per participant, which is a deliberate choice, not a sensible default. See Per-Participant Video Streams when you do want it. Per-participant audio (audio_separate_streams) is a separate flag and is unaffected by these recording defaults.
Nested: teams
Optional. Omit this object for an anonymous guest join. To join as a registered Microsoft 365 bot account, set login_required: true and provide a Teams login domain that belongs to your MeetStream account.
Register the domain and accounts before creating the bot. See Microsoft Teams Signed-In Bots for the complete setup and account-selection behavior.
Nested: zoom
Optional. Omit the object, or pass an empty object, for a guest Zoom join.
Pass exactly one of zak_url or obf_url for authenticated join. MeetStream fetches that HTTPS URL at join time; you mint the token on your server (OAuth + Zoom token APIs). Guide: Zoom Authenticated Bots.
use_zoom_obf and zoom_oauth_connection_user_id are rejected.
URLs must use HTTPS, include a host, and be at most 4096 characters. They must be reachable from MeetStream bots running in AWS. Do not include meeting_number in obf_url: MeetStream adds it at join time. The parent user must already be in the meeting; mint a fresh OBF token when called.
MeetStream does not store end-user Zoom OAuth refresh tokens for join. Your server owns OAuth and token minting. If token fetching fails, the bot does not fall back to a guest join.
