Skip to content
← Developers

API Documentation

Complete reference for the MeetingBurner API

Request an invite

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/v1

Quick 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_KEY

Agent 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 the meetings:create scope (Create meetings in Settings → Developer, off by default; refused with api_key_scope_missing until then)
  • GET /meetings — list the meetings this key set up
  • POST /bots/join — connect as a disclosed agent; requires a purpose string
  • POST /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 record
  • POST /bots/post-chat-message — post a message in the meeting's group chat, shown as your agent and never as a person
  • POST /bots/leave — disconnect and settle usage
  • GET /bots/connections — list your active connections
  • GET /agents/verify — verify an agent passport and its current standing
  • GET /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 link
  • list_my_meetings — the meetings this key created
  • join_meeting — join a live meeting as a disclosed agent, with a stated purpose
  • leave_meeting — leave the meeting and settle usage
  • who_is_here — who is in the room now, people and agents, each marked as which
  • read_transcript — the live transcript, each line attributed to its speaker
  • post_artifact — write a decision, action item or note into the meeting record
  • post_chat_message — post in the meeting chat, labelled as your agent
  • meeting_status — whether you are connected, what you may do, and how fresh the view is
  • get_meeting_transcript — after a meeting has ended, its transcript, page by page
  • get_meeting_summary — after a meeting has ended, its summary, decisions and action items
  • read_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 speak capability, 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.