https://us-west-2.recall.ai/dashboard/developers/api-keys). Recall runs a separate deployment per region, so a key only works on its own region’s host. Corsair asks for the key on the first call that needs it; store the region with it in the tenant’s region account field. Self-hosted setups can pass both to the factory instead:
- Region. One of
us-west-2,us-east-1,eu-central-1orap-northeast-1. A pasted host such aseu-central-1.recall.aiis read as its region; any other value is rejected, so requests only ever go to the four Recall hosts. Without a region, requests go tous-west-2. A 401 usually means the key and the region do not match. - Bots cost money.
bots.createsends a bot to the meeting, and Recall bills for its time there. Withoutjoin_at, or with one less than 10 minutes out, the bot joins right away; Recall recommends scheduling at least 10 minutes ahead.bots.updateandbots.deletework only on a scheduled bot that has not joined yet. - In-call actions. The
botActionscalls (chat, recording, pinning, audio, video and screenshare output) need the bot in the call; otherwise Recall answers 400. The calls that start something return the updated bot; thestop*Output*andstopScreensharecalls return nothing.leaveBotCallanddeleteBotMediacannot be undone. - Transcripts after the call.
recordings.createTranscripttakes the provider as an object keyed by provider name, for example{ recallai_async: { language_code: 'en' } }. Recall allows five a minute per bot. - Calendar V1. The meeting calls (
calendar.listMeetings,retrieveMeeting,updateMeeting,refreshMeetings) and the user calls (calendar.retrieveUser,updateUser,deleteUser,disconnectPlatform) act for one calendar user and take theircalendar_auth_token. Get it fromcalendar.authenticate; it is valid for a day. Calendar V2 (calendars.*and thecalendarevent calls) uses the API key alone. - Paging.
bots.listpages bypagenumber, or by cursor when you passuse_cursor.calendar.listUsersreturns every user unless you passpaginate: true; then it pages bypagenumber. The other lists returnnextas a URL; pass itscursorvalue back to get the next page. - Rate limits. Most lists allow 60 requests a minute per workspace. A 429 is retried up to five times, waiting for Recall’s
Retry-After. - Webhooks. The plugin does not receive Recall’s webhooks. Bot and recording status changes arrive there; Recall asks integrations not to poll
bots.listfor them. - No local data. Every call returns live data from Recall.
- 111 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.More: API Key
4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List finished botsWhat’s next
API reference
Every
recallai.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.