Meeting Recording API

An MIT-licensed bot you host yourself for Zoom, Google Meet and Teams calls, plus the ScreenApp API for turning the recording into a transcript.

Upload a video to get a summary.

MP4, MOV, WEBM, MKV, AVI, FLV, MTS, 3GP

Or paste a video link

YouTube, TikTok, Instagram, Vimeo, Google Drive, Dropbox, direct links

Recordings are encrypted in transit and at rest and are not used to train AI models. Privacy · Security

Record a Meeting Programmatically, Get a Transcript via API

Let’s get the honest part out of the way first. There is no single ScreenApp endpoint that takes a meeting URL and hands back a finished transcript. Recall.ai sells that as a hosted service.

What ScreenApp gives you is two pieces you wire together yourself. For a lot of teams that’s the better deal, because the expensive piece (the bot) is the one you get for free.

You host it

The Bot

github.com/screenappai/meeting-bot, licensed MIT. It exposes POST /google/join, POST /microsoft/join and POST /zoom/join, joins the call as a visible participant, records it, and drops the file into S3-compatible storage (AWS S3, Google Cloud Storage, MinIO) or Azure Blob Storage. No per-hour bot fee.

ScreenApp runs it

The Transcript API

You send it the file, or a public URL to it. It transcribes the recording with speaker identification, in 100+ languages, and you fetch the transcript when it's ready. Keys are scoped (files:read and files:upload) and created in the app, with no separate developer account.

The Pipeline in Four Hops

1

Bot Joins

You POST the meeting link to it.

2

File Lands

In your own bucket, after the call.

3

You Send the URL

One POST to the ScreenApp API.

4

You Fetch the Text

Poll, then GET the transcript.

How to Build a Meeting Recording Pipeline

The bot needs Node.js 20 or newer, with Docker and Docker Compose recommended. Clone the repo, copy .env.example to .env, set your storage, and start it. Then send it a meeting:

curl -X POST http://localhost:3000/google/join \
  -H "Content-Type: application/json" \
  -d '{"url": "https://meet.google.com/abc-defg-hij", "name": "Notetaker",
       "bearerToken": "YOUR_TOKEN", "teamId": "team-1", "userId": "user-1",
       "botId": "bot-1", "timezone": "UTC"}'

A 202 means it took the job. When the call ends, the recording (a .webm file by default, configurable to formats such as .mkv) lands in your bucket, and you can have the bot tell you by signed webhook or a Redis list.

Now hand the file to ScreenApp. The videos endpoint takes a JSON body with a public url in place of the file itself, which suits a recording that already sits in S3:

curl https://screenapp.io/app/api/v1/videos \
  -H "x-api-key: $SCREENAPP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://your-bucket.s3.amazonaws.com/meeting.webm?X-Amz-Signature=..."}'

Poll GET /app/api/v1/videos/{id} until transcriptStatus is ready, then fetch GET /app/api/v1/videos/{id}/transcript.

Tip

Send Long Calls as a URL, Not a File

Direct uploads are capped at 512 MB, and a long call recorded as video can pass that. The URL route skips the limit, and the bot has already put the file in a bucket, so pre-sign it there and send the link. Skip the download and re-upload step entirely.

Errors You’ll Actually Hit

The API documentation lists four status codes, and in a pipeline like this you’ll see most of them in the first week.

CodeWhat it means hereWhat to do
401The x-api-key header is missing or wrongCheck the key is set in the environment your job runs in
403The key exists but lacks the scopeCreate it with both files:read and files:upload
409You asked for the transcript before it was readyKeep polling until transcriptStatus is ready
429You’re polling too fastBack off, and follow Retry-After when it’s sent

Sources, checked 2026-09-16: ScreenApp API documentation

The bot has its own 409. Its concurrency is one meeting at a time per instance, and a busy instance answers 409 BUSY, so a 409 from the bot means “find another instance”, not “try the same one again”. Authentication and the full request and response details are in the API documentation.

Limits to Plan Around

Three of them, and the third is the one that surprises people.

Good at

  • High meeting volume with no per-hour bot fee
  • Recordings that have to stay in your own cloud
  • Changing the bot's code when a platform changes

Not built for

  • One call in, transcript out: that's Recall.ai or Nylas
  • Live transcription while the call is still running
  • Summaries from the API, which returns the transcript only

If you would rather not run your own bot at all, connect a calendar and let ScreenApp’s own bot join Google Meet calls for you, covered on the Google Meet bot page. The Zoom bot and Teams AI note taker pages cover the other two platforms. Transcript accuracy depends on the audio each participant sends, same as any recording. See how we measure accuracy.

Meeting Recording API vs Other Developer Platforms

FeatureScreenAppRecall.aiNylas Notetaker
Usage pricingYour infrastructure cost only for the bot; content API uses your ScreenApp plan, from $19/month annual$0.50/hour recording, plus $0.15/hour for built-in transcription5 bot hours/month included, then $0.80/additional hour on Essentials
Free tier2 transcriptions of recordings up to 45 minutes each on the content API5 hours trial credit5 bot hours/month
Platform supportZoom, Google Meet and Microsoft Teams (bot repo)Zoom, Google Meet, Teams, and moreZoom, Google Meet, and Microsoft Teams
Who runs the botYou, on your own serversRecall.ai, hostedNylas, hosted
LicenseMIT, source on GitHubClosedClosed

Sources, checked 2026-09-12: ScreenApp meeting bot repository, ScreenApp pricing, recall.ai/pricing, nylas.com/pricing/, nylas.com/products/notetaker/

Recall.ai runs the bot for you at $0.50 an hour of recording, plus $0.15 an hour for its transcription, after a 5 hours trial. Multiply both by a thousand meeting hours a month and the bot is a real line in your budget before you’ve built anything. ScreenApp’s bot has no per-hour fee, so your cost is the servers it runs on and your ScreenApp plan.

The trade is operations. With Recall, scaling, platform changes and the waiting-room edge cases are somebody else’s problem. With the open-source bot they’re yours.

If you’re two engineers and need it working next week, pay Recall. If meeting volume is high, or recordings can’t leave your own cloud, self-hosting pays off quickly.

Nylas sits in between: 5 bot hours a month free, then $0.80 per additional hour on its Essentials tier, with a hosted bot for Zoom, Google Meet, and Microsoft Teams.

For a longer comparison of self-hosted and hosted bots, see our Recall.ai alternative guide.

Who Builds on the Meeting Recording API

Mostly product teams adding “record this meeting” to their own app without building a bot from scratch.

A CRM or sales tool runs the bot on a rep’s calls, sends the recording to ScreenApp, and writes the transcript into the deal record. Their own model, or one they already pay for, turns that into objections and next steps.

Training platforms record instructor-led sessions and put a searchable transcript next to each lesson.

Internal tools teams build an archive of company meetings (the job the meeting library does inside the app) by pointing the bot at scheduled calls.

And teams that tried this and decided they’d rather not run a bot at all skip the repo and connect a calendar, so ScreenApp’s own bot joins the calls for them.

What Each Plan Does Here

The bot is free to run on your own servers. The plan decides how much you can send to the transcript API.

Free account

Prove the Pipeline

No card needed. Create a key, send one or two test recordings and check the transcript end to end. The free plan covers 2 transcriptions of recordings up to 45 minutes each.

Pro

Run It on Real Calls

For a pipeline that sends recordings every day. Pro has 500 uploads and 50 transcriptions a month.

Trial

7 Days to Try Pro

Pro is $19 a month billed annually. Use every Pro feature for 7 days and confirm it does what you need before the first payment. The trial is for annual plans only. Trial terms: Card required. See the plans and terms.

FAQ

Does ScreenApp Have a Hosted Meeting Bot API Like Recall.ai?

No. ScreenApp publishes github.com/screenappai/meeting-bot that you deploy yourself, and a separate API for uploading recordings and fetching the transcript. There is no single hosted endpoint that takes a meeting URL and returns a finished transcript in one call. If you want that, Recall.ai or Nylas is the closer fit.

How Does the Open-Source Meeting Bot Work?

You run github.com/screenappai/meeting-bot on your own server or container. It takes a REST request (POST /google/join, POST /microsoft/join and POST /zoom/join) or a Redis queue message with the meeting URL and a participant name, joins as a visible participant, and records the call. When the recording is done it uploads the file to your storage and, if you turn it on, sends a signed webhook or a Redis notification.

How Many Meetings Can One Bot Record at Once?

One. It handles one meeting at a time per instance, and a busy instance answers 409 BUSY. Run several instances behind a queue for parallel meetings.

How Do I Get a Transcript Once the Bot Has a Recording?

Create an API key in the app under Settings, then send the file, or a public URL to it, to `POST /app/api/v1/videos`. Poll the recording until `transcriptStatus` is `ready` and fetch `/transcript`. It processes the same as anything recorded or uploaded by hand, with speaker identification.

Why Does the Transcript Request Return 409?

The transcript isn't ready yet. Processing runs in the background after the upload, so keep polling `GET /app/api/v1/videos/{id}` until `transcriptStatus` is `ready` before you ask for `/transcript`. If you're getting 429s as well, slow the polling down.

How Do I Get a Summary From the API?

The current API returns the transcript, not a summary. Most teams pass the transcript to their own LLM with the prompt they want. If a person, not your code, needs the summary, the recording is also in the ScreenApp app with its AI notes, and the MCP server lets Claude or ChatGPT read your transcripts directly.

Does the API Provide Real-Time Transcription During a Live Call?

No. The content API works on a finished recording after upload. Live output during the call, if you need it, would come from your own bot deployment, not from the ScreenApp API.

What Video and Audio Formats Does the Upload API Accept?

MP4, M4V, MOV, AVI, WEBM, MKV, FLV, TS, MTS, M2TS, 3GP, 3GPP, 3G2, WMV, ASF, VOB, OGV, RM, RMVB, MPG, MPEG, M2V, F4V, MXF for video, and MP3, M4A, MP4A, M4B, AAC, WAV, OGG, OPUS, FLAC, AIFF, WMA, WEBMA, MKA, AC3, EAC3, WV, AMR, DSF, DFF for audio. Direct uploads take files up to 512 MB; for bigger recordings, pass a public or pre-signed URL instead of the file. WEBM, the bot's default output, is on the video list.

Is There a Per-Hour Price for the Meeting Recording API?

No published per-minute or per-hour rate exists for the ScreenApp content API. It uses your ScreenApp account and plan, starting at $19 a month annual; see pricing for plan details. Running the open-source bot costs whatever your own hosting does.

Is the API Secure?

Data is encrypted in transit, recordings are encrypted with AES-256, and your content is not used to train AI models. ScreenApp's security controls are published on its trust center.

Real Results from Real Users

works like a charm, notes have been super helpful alongside chat function. loveeeee
KS
Katharine Suy
Chrome Web Store, October 17, 2024
nice app for important summary
S
SAHIL
Google Play, January 30, 2026

Ready to boost your productivity?

Start Meeting Recording API with a free account. Usage limits apply; app downloads require a paid plan.

Start Free →

Start using in 60 seconds