API
API is available on paid plans
Getting started
Your first request in minutes
Features
What you can do with the API
Request parameters, response formats, and error codes are in the documentation
curl -X POST https://backend.mymeet.ai/api/record-meeting \
-H "X-API-KEY: $MYMEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"link": "https://meet.google.com/zyj-qrmk-gvo",
"source": "gmeet",
"title": "Daily sync",
"local_date_time": "2026-10-25T15:30:00+03:00",
"cron": "30 12 25 10 *",
"template_name": "team-sync",
"participants": "anna@example.com, mikhail@example.com",
"webhook_url": "https://your-app.com/hooks/mymeet",
"webhook_secret": "YOUR_WEBHOOK_SECRET_16_128"
}'
# meeting status
curl "https://backend.mymeet.ai/api/meeting/status?meeting_id=MEETING_ID" \
-H "X-API-KEY: $MYMEET_API_KEY"
# stop the bot early
curl -X POST https://backend.mymeet.ai/api/stop-recording \
-H "X-API-KEY: $MYMEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"meeting_id": "MEETING_ID"}'
# cancel a scheduled recording
curl -X DELETE "https://backend.mymeet.ai/api/record-meeting?meeting_id=MEETING_ID" \
-H "X-API-KEY: $MYMEET_API_KEY"
Meeting recording
Send a bot to meetings on 10 platforms — right away or scheduled up to 3 months ahead
import math, os, uuid, requests
BASE = "https://backend.mymeet.ai"
HEADERS = {"X-API-KEY": os.environ["MYMEET_API_KEY"]}
file_path = "interview.mp4"
name = os.path.basename(file_path)
chunk_size = 20 * 1024 * 1024
data_chunks = max(1, math.ceil(os.path.getsize(file_path) / chunk_size))
common = {
"id": str(uuid.uuid4()),
"chunk_total": data_chunks + 1,
"filename": name,
"template_name": "default-meeting",
"title": "Meeting Upload",
"upload_session_id": str(uuid.uuid4()),
"expected_file_size": os.path.getsize(file_path),
"webhook_url": "https://your-app.com/hooks/mymeet",
}
with open(file_path, "rb") as f:
for n in range(data_chunks):
chunk = f.read(chunk_size)
requests.post(f"{BASE}/api/video",
data=dict(common, chunk_number=n),
files={"file": (name, chunk)},
headers=HEADERS)
r = requests.post(f"{BASE}/api/video",
data=dict(common, chunk_number=data_chunks),
files={"file": (name, b"")}, headers=HEADERS)
print(r.json()) # {"meeting_id": "...", "user_id": "..."}
55%
IMG_0586.MP4
33 min
Uploading...
Recording21.09.2025_2.MP3
69 min
Uploaded
Interview_14.10.MP4
45 min
Uploaded
File upload
Upload audio and video up to 3 GB in chunks. SHA-256 integrity checks and duplicate protection
requests.post(
f"{BASE}/api/generate-new-template",
json={
"meeting_id": "MEETING_ID",
"template_name": "sales-meeting",
},
headers=HEADERS,
)
# {"followup": {...},
# "created_template_id": "..."}
# workspace custom templates
templates = requests.get(
f"{BASE}/api/v2/workspaces/active/custom-templates",
headers=HEADERS,
).json()
# report from a custom template
requests.post(
f"{BASE}/api/generate-new-template",
json={
"meeting_id": "MEETING_ID",
"template_name": "3f8c1a22-1b0e-4f4a-9a3e-6f2d5c8b7a41",
},
headers=HEADERS,
)
# edit a report block
requests.put(
f"{BASE}/api/meeting/MEETING_ID/summary",
json={
"templateId": "TEMPLATE_ID",
"entityName": "summary",
"newSummaryText": "Updated summary text",
},
headers=HEADERS,
)
Article
Demo
Default Meeting
Daily
One-to-one
Backlog Grooming
Brainstorm
Follow-up Email
Project Sync
Default Meeting
Sales Meeting
Sales Coaching
HR Interview
Research Interview
Team Sync
One-to-one
Lecture Notes
Meeting Protocol
Medical Anamnesis
D
Design Sync Report
P
Profanity Filter
AI Reports
Use built-in or custom templates. Regenerate reports anytime
import hashlib, hmac, time
from fastapi import FastAPI, Request, Response
app = FastAPI()
SECRET = "YOUR_WEBHOOK_SECRET"
@app.post("/mymeet-webhook")
async def hook(request: Request):
raw_body = await request.body()
ts = request.headers.get("x-mymeet-timestamp", "")
signature = request.headers.get("x-mymeet-signature", "")
expected = "sha256=" + hmac.new(
SECRET.encode(), f"{ts}.".encode() + raw_body,
hashlib.sha256).hexdigest()
if not hmac.compare_digest(signature, expected):
return Response("bad signature", status_code=401)
if abs(time.time() - int(ts)) > 300:
return Response("stale timestamp", status_code=401)
event = await request.json()
delivery = request.headers.get("x-mymeet-delivery")
if event["event"] == "meeting.completed":
report = requests.get(event["data"]["report_url"],
headers=HEADERS).json()
save_report(event["meeting_id"], report)
elif event["event"] == "meeting.failed":
log_failure(event["meeting_id"], event["data"]["reason"])
return Response(status_code=200)
X-Mymeet-Event: meeting.completed
X-Mymeet-Signature: sha256=…
{"event": "meeting.completed",
"meeting_id": "…",
"timestamp": "…",
"data": {
"title": "Daily sync",
"is_transcript_empty": false,
"report_url": "…"
}}
Webhooks
Get notified when processing finishes or fails, signed with HMAC-SHA256
curl "https://backend.mymeet.ai/api/storage/download\
?meeting_id=MEETING_ID&format=pdf\
&include_report=true&include_tasks=true" \
-H "X-API-KEY: $MYMEET_API_KEY" \
-o report.pdf
curl "https://backend.mymeet.ai/api/storage/download\
?meeting_id=MEETING_ID&format=docx\
&template_name=sales-meeting&timezone=Europe/Moscow" \
-H "X-API-KEY: $MYMEET_API_KEY" \
-o report.docx
curl "https://backend.mymeet.ai/api/storage/download\
?meeting_id=MEETING_ID&format=md&include_report=false" \
-H "X-API-KEY: $MYMEET_API_KEY" \
-o tasks.md
# full report as JSON
curl "https://backend.mymeet.ai/api/video/report?meeting_id=MEETING_ID" \
-H "X-API-KEY: $MYMEET_API_KEY"
Client demo
Sprint review
DOCX
One-to-one
Report export
Get the full report as JSON or export it to DOCX, PDF, or MD
curl "https://backend.mymeet.ai/api/workspaces/active\
/meetings/search?q=sync&tagIds=TAG_ID\
&sources=zoom,gmeet&dateFrom=2026-10-01" \
-H "X-API-KEY: $MYMEET_API_KEY"
curl -X PUT "https://backend.mymeet.ai/api/workspaces\
/active/meetings/MEETING_ID/tags/TAG_ID" \
-H "X-API-KEY: $MYMEET_API_KEY"
# workspace tag catalog
curl "https://backend.mymeet.ai/api/workspaces/active/tags?perPage=100" \
-H "X-API-KEY: $MYMEET_API_KEY"
# create a tag
curl -X POST https://backend.mymeet.ai/api/workspaces/active/tags \
-H "X-API-KEY: $MYMEET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "routed-to-crm", "color": "green"}'
# detach a tag from a meeting
curl -X DELETE "https://backend.mymeet.ai/api/workspaces\
/active/meetings/MEETING_ID/tags/TAG_ID" \
-H "X-API-KEY: $MYMEET_API_KEY"
sales
Sales sync
48 min
Oct 7
CRM
Sales stand-up
55 min
Oct 3
CRM
Sales coaching
32 min
Oct 6
Training
Sales stand-up
55 min
Oct 3
CRM
Search and tags
Search meetings by title, tag, platform, author, and date
MCP
Meetings in your AI tools
Search meetings, analyze transcripts, and work with AI Reports via MCP
Терминал
export MYMEET_API_KEY="KEY"
codex mcp add mymeet \
--url "https://mcp.mymeet.ai/mcp" \
--bearer-token-env-var MYMEET_API_KEY
Codex
.cursor/mcp.json
{
"mcpServers": {
"mymeet": {
"url":
"https://mcp.mymeet.ai/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}
Cursor
Терминал
claude mcp add mymeet \
--transport http \
https://mcp.mymeet.ai/mcp \
--header \
"Authorization: Bearer KEY"
Claude Code
For business
How our clients use the API