Overview
MeetingBurner has a plain REST API for putting a bot or an AI agent into a live meeting as a disclosed participant, plus a Server-Sent Events stream for reading who is present and what is being said in real time. Any language that can make an HTTP request and read an SSE stream can use it — no SDK to install, and none is required.
Base URL
https://meetingburner.com/api/v1Quick Start
1. Get Your API Key
MeetingBurner is in private beta, by invite: request an invite, then sign up at meetingburner.com/signup with the invited address, navigate to Settings → Developer, and generate an API key. Set it once in your environment (for example in a .env file you don't commit, or with read -s MEETINGBURNER_API_KEY && export MEETINGBURNER_API_KEY) so it isn't pasted into every command.
2. Join a Meeting
curl -X POST https://meetingburner.com/api/v1/bots/join \
-H "X-API-Key: $MEETINGBURNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"roomId": "ROOM_ID",
"botName": "My Agent",
"capabilities": ["listen", "artifact"],
"purpose": "Takes notes and flags open questions"
}'ROOM_ID is the last part of the meeting link. To start a meeting from your key instead of the dashboard, call POST /meetings — but first turn on Create meetings for that key in Settings → Developer; it is off for a new key unless you tick it. Either way, your agent joins only after you have joined the meeting yourself, signed in to the account the key belongs to; joining from the link while signed out does not count.
3. Read What's Happening — No WebRTC Required
curl -N \
-H "X-API-Key: $MEETINGBURNER_API_KEY" \
"https://meetingburner.com/api/v1/meetings/ROOM_ID/stream?connectionId=YOUR_CONNECTION_ID"YOUR_CONNECTION_ID is the connectionId the join returned. Plain Server-Sent Events: who is present, who joins and leaves, and the live attributed transcript. Only add a LiveKit connection if your agent publishes or consumes audio — for that, see Bring your voice agent, with complete LiveKit Agents and OpenAI Realtime examples.
4. Write Into the Meeting
curl -X POST https://meetingburner.com/api/v1/bots/post-artifact \
-H "X-API-Key: $MEETINGBURNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectionId": "YOUR_CONNECTION_ID",
"artifactType": "action_item",
"text": "Write the release notes",
"assignee": "Sam"
}'Adds an item to the live meeting record, which everyone sees at once, labelled as your agent's. artifactType is one of decision, action_item, key_question, insight, topic_shift, risk_signal or buy_signal; assignee is optional. Needs the artifact capability from your join.
curl -X POST https://meetingburner.com/api/v1/bots/post-chat-message \
-H "X-API-Key: $MEETINGBURNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectionId": "YOUR_CONNECTION_ID",
"text": "Recap: we ship on Friday, and Sam writes the release notes."
}'Posts one message in the meeting's group chat. It shows as your agent's name with yours, for example My Agent (Dana's agent), never as a person. Up to 10 messages a minute per account.
5. Leave
curl -X POST https://meetingburner.com/api/v1/bots/leave \
-H "X-API-Key: $MEETINGBURNER_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectionId": "YOUR_CONNECTION_ID" }'Disconnects your agent and settles its usage. It is billed by the minute while it is connected, so leave when you are done; if you leave the meeting yourself first, your agent is removed within about three minutes.
Authentication
Every request carries an X-API-Key header. Your key is tied to your MeetingBurner account — a bot can join a meeting only while you, its key's owner, are currently in that meeting yourself, signed in, whether as the host or as a participant. Joining before you do, or while you are in it signed out, fails with owner_not_present.
X-API-Key: $MEETINGBURNER_API_KEYAgent API
The Bot API endpoints for joining, contributing to, and leaving a meeting.
POST /meetings— set up a meeting you host and get its link back; needs themeetings:createscope (Create meetings in Settings → Developer, off by default; refused withapi_key_scope_missinguntil then)GET /meetings— list the meetings this key set upPOST /bots/join— connect as a disclosed agent; requires apurposestringPOST /bots/join-with-code— the same join with no API key: a single-use code the host makes for one meeting with Invite your agent (ten minutes, one use, billed to the host)POST /bots/post-artifact— write a decision, action item, or insight into the live meeting recordPOST /bots/post-chat-message— post a message in the meeting's group chat, shown as your agent and never as a personPOST /bots/leave— disconnect and settle usageGET /bots/connections— list your active connectionsGET /agents/verify— verify an agent passport and its current standingGET /account/balance— check your token balance
Meeting Event Stream
GET /meetings/{roomId}/stream is a Server-Sent Events endpoint: presence, joins and leaves, the live attributed transcript, and artifacts. It requires the listen capability from your /bots/join call.
Webhooks
Pass a webhookUrl to /bots/join and MeetingBurner POSTs lifecycle events to it — meeting.ended, bot.disconnected, participant.joined, participant.left. The URL must be HTTPS and cannot point at a private or loopback address.
These join-time deliveries are not signed: a webhookUrl given at join carries no shared secret, so no signature header is sent. If you need authenticity, put an unguessable token in the URL path.
Account webhooks are different: you register them in Settings → Integrations, which shows you their signing secret once, and they fire meeting.completed once the summary is written. Each account webhook delivery carries an X-MeetingBurner-Signature header, sha256=<hmac-hex>, an HMAC-SHA256 over ${timestamp}.${rawBody} using your secret, where the timestamp is the Unix-seconds value in the accompanying X-MeetingBurner-Timestamp header. Recompute the signature over the raw body you received, compare it in constant time, and reject anything older than 300 seconds.
MCP Server
Prefer to connect an LLM instead of writing an agent yourself? See the MCP server section on the Developers page for the config block. It offers these tools:
create_meeting— start a meeting hosted by the key’s owner and get its linklist_my_meetings— the meetings this key createdjoin_meeting— join a live meeting as a disclosed agent, with a stated purposeleave_meeting— leave the meeting and settle usagewho_is_here— who is in the room now, people and agents, each marked as whichread_transcript— the live transcript, each line attributed to its speakerpost_artifact— write a decision, action item or note into the meeting recordpost_chat_message— post in the meeting chat, labelled as your agentmeeting_status— whether you are connected, what you may do, and how fresh the view isget_meeting_transcript— after a meeting has ended, its transcript, page by pageget_meeting_summary— after a meeting has ended, its summary, decisions and action itemsread_briefing— for a delegate only: the private briefing its person wrote
Usage and Tokens
An agent's connection time is charged to the account that owns its API key. Time is rounded up to whole minutes, and charged when the agent leaves or the meeting ends. There are two rates, and which one applies depends on whether the agent speaks.
- Text agent (no
speakcapability, including every MCP agent): 1 token per minute. 10 minutes cost 10 tokens. - Speaking agent (joined with
speak): 10 tokens per minute, rounded up to whole tokens. A one-minute call costs 10 tokens, and 10 minutes cost 100 tokens.
Before an agent is let in, its owner's balance must cover at least its first minute at its rate. Check the balance with GET /account/balance.