API Playground
The API Playground is a visual bot builder inside the dashboard. It walks the full create_bot surface in 10 steps (Core, Identity, Streams, Record, Transcribe, Callback, Timeouts, Schedule, Meta and Agent) and sends live requests to the real API with one of your keys. Every field maps 1:1 to a Create Bot request field, so anything you build here can be copied into code.
Why it is useful even if you live in code:
- See the request you are building. The Code toggle shows the exact JSON payload for your current configuration.
- Preview before you send. The Bot Preview pane shows the platform detected from your link and how the bot will appear in the meeting.
- Explore the long tail. Per-participant streams, transcription providers, callbacks, timeout tuning, scheduling, custom attributes and MIA agents are all laid out as steps instead of buried in a schema.
The Playground sends real requests. A bot you send joins the meeting and is billed like any other bot. Admitting it, removing it and its recordings all work exactly as they do from the API.
Step by step
Core: link, name and key
Pick the API key to send with (1), paste the meeting link (2) and set the display name participants will see (3). The platform (Zoom, Google Meet, Microsoft Teams, or WhatsApp calls in Beta) is detected from the link and shown in the preview (4). Only the meeting link is required. The bot name defaults to MeetStream.

Link rules differ by platform (for example, Zoom bots join /j/<meeting-id> links with the passcode in pwd=). See Meeting Platforms Supported.
Identity: avatar and join message
bot_image_url (1) is shown as the bot’s camera tile; use an HTTPS PNG or JPG. bot_message (2) is posted in the meeting chat when the bot joins, which is a simple way to tell participants the meeting is being recorded.

Streams: video and per-participant media
video_required (1) records video. video_separate_streams (2) saves one video file per participant and audio_separate_streams (3) saves one audio file per speaker. Limits differ by platform; see per-participant audio and per-participant video.

Record: layout and retention
recording_config.video_layout (1) chooses speaker_view or grid_view for the composited recording. recording_config.retention.type (2) controls how long media is kept; see Usage & Retention.

Transcribe: live or post-call
Choose Live transcription or Post-call transcription (1), then a provider (2). Live transcription also needs live_transcription_required.webhook_url (3), where transcript events are POSTed during the call. Streaming providers differ by platform; see Live Transcription and Post-Call Transcription.


Callback
callback_url receives lifecycle events for this bot only, unsigned. For signed delivery to a fixed endpoint, use Workspace Webhook Endpoints instead.
Timeouts: automatic leave
Sent as the automatic_leave object: waiting_room_timeout (1), everyone_left_timeout (2), voice_inactivity_timeout (3) and in_call_recording_timeout (4), all in seconds. When a timeout is not included in the request, the platform default applies. Allowed ranges and which timeouts each platform honors are on Automatic Leave Configurations.

Schedule
Join immediately (1) or Schedule for later (2), which sets join_at (ISO 8601, up to 90 days ahead). See Scheduling Bots.

Meta: custom attributes
Add custom_attributes key/value pairs. They are echoed back in webhooks, which makes it easy to map a bot to your own user, meeting or CRM record. See Custom Attributes.
Agent: attach a MIA agent, then send
Attach a hosted MIA agent by agent_config_id (1), or point the bot at your own agent with agent_url (2); MeetStream appends /bridge and /bridge/audio for the control and live-audio sockets. Send Request (3) creates the bot.

See What is MIA? and Bridge Server Architecture.
A good first session
- Create an API key in the dashboard under Configure > API Keys (the Playground’s token dropdown lists your keys by name).
- Open meet.new to start a test Google Meet that you host.
- Paste the link into Core, name your bot, go to Agent and click Send Request, then admit the bot from the meeting.
- Open All Bots to watch its status timeline, then flip to Code and copy the request into your codebase.
From there, the quickstart covers fetching the recording, webhooks close the loop on events, and the Bot Status and Error Code Reference explains every status you will see.
Prefer a terminal?
Everything the Playground does, the MeetStream CLI does with flags (meetstream bot create ... -t deepgram -c <webhook>), and the MCP server does as agent tools.
