> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Recall AI

The Recall AI connector lets your AI agent act in each user's Recall AI account. Each user connects their own Recall AI API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 71 tools.

**Authentication:** API Key
**Categories:** Transcription, Developer Tools
**Tools:** 71: 29 read, 27 write, 15 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=RECALL)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Recall AI connection

   In **AgentKit > Connections**, create a Recall AI connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'recall'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Recall AI:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'recall_audio_mixed_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "recall"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Recall AI:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="recall_audio_mixed_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Recall AI credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'recall_audio_mixed_get',
  toolInput: {
    audio_mixed_id: '<audio_mixed_id>',
  },
  connector: 'recall',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="recall_audio_mixed_get",
    tool_input={
        "audio_mixed_id": "<audio_mixed_id>",
    },
    connection_name="recall",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `recall_audio_mixed_get`

Get Mixed Audio · Read-only

Get one mixed audio artifact from Recall.ai by id.
Returns id, recording, status, format, metadata and data.download_url for the audio file.
Use audio_mixed_get to download one artifact. Use audio_mixed_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `audio_mixed_id` (`string`, required): UUID of the mixed audio artifact. Get it from List Mixed Audio Files or the recording's media_shortcuts.

Example input: `{"audio_mixed_id":"<audio_mixed_id>"}`

### `recall_audio_mixed_list`

List Mixed Audio Files · Read-only

List mixed audio files in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use audio_mixed_list to find mixed audio files for a recording. Use audio_mixed_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_audio_separate_get`

Get Separate Audio · Read-only

Get one separate audio artifact from Recall.ai by id.
Returns id, recording, status, format, metadata and data with download links for each participant's audio.
Use audio_separate_get to download one artifact. Use audio_separate_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `audio_separate_id` (`string`, required): UUID of the separate audio artifact. Get it from List Separate Audio Artifacts or the recording's media_shortcuts.

Example input: `{"audio_separate_id":"<audio_separate_id>"}`

### `recall_audio_separate_list`

List Separate Audio Artifacts · Read-only

List separate audio artifacts in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use audio_separate_list to find separate audio artifacts for a recording. Use audio_separate_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_billing_usage_get`

Get Usage · Read-only

Get total bot usage, in seconds, for the Recall.ai workspace over a time range.
Returns bot_total, the number of bot seconds used.
Use billing_usage_get to report or cap usage. Leave start and end empty for the default range.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `end` (`string`, optional): Exclusive end of the range, ISO 8601 date-time.
- `start` (`string`, optional): Inclusive start of the range, ISO 8601 date-time.

Example input: `{}`

### `recall_bot_get`

Get Bot · Read-only

Get one Recall.ai bot by id.
Returns the bot with meeting_url, join_at, recording_config, status_changes and recordings (each with media_shortcuts download links).
Use bot_get to check a bot's status or reach its recordings. Use bots_list to search by meeting or status.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bots_list`

List Bots · Read-only

List bots in the Recall.ai workspace, filtered by join time, meeting URL, platform or status.
Returns a page with count, next, previous and results; each bot has id, meeting_url, join_at, status_changes and recordings.
Use bots_list to find bots. Use bot_get when you already have a bot id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `join_at_after` (`string`, optional): Only bots scheduled to join after this date (YYYY-MM-DD).
- `join_at_before` (`string`, optional): Only bots scheduled to join before this date (YYYY-MM-DD).
- `meeting_url` (`string`, optional): Only bots sent to this meeting URL.
- `page` (`integer`, optional): Page number to return, starting at 1. Use the `next` URL of the previous response to know whether more pages exist.
- `platform` (`array`, optional): Only bots on these meeting platforms. Allowed values: zoom, zoom_rtms, google_meet, google_meet_media_api, microsoft_teams, microsoft_teams_live, webex, goto_meeting, chime_sdk, slack_authenticator, slack_huddle_observer.
- `status` (`array`, optional): Only bots whose current status is one of these. Allowed values: ready, joining_call, in_waiting_room, in_call_not_recording, recording_permission_allowed, recording_permission_denied, in_call_recording, recording_done, call_ended, done, fatal, media_expired, analysis_done, analysis_failed.

Example input: `{}`

### `recall_calendar_event_get`

Get Calendar Event · Read-only

Get one calendar event synced to Recall.ai by id.
Returns id, calendar_id, start_time, end_time, meeting_url, meeting_platform, ical_uid, is_deleted, raw platform data and scheduled bots.
Use calendar_event_get to check one event and its bots. Use calendar_events_list to browse a calendar.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_event_id` (`string`, required): UUID of the calendar event. Get it from List Calendar Events.

Example input: `{"calendar_event_id":"<calendar_event_id>"}`

### `recall_calendar_events_list`

List Calendar Events · Read-only

List events from one calendar synced to Recall.ai, filtered by start time, iCal UID, update time or deletion.
Returns a page with next, previous and results; each event has id, start_time, end_time, meeting_url, meeting_platform and the bots scheduled for it.
Use calendar_events_list to find meetings to record. Use calendar_event_get when you already have the event id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_id` (`string`, required): UUID of the calendar whose events to list. Get it from List Calendars.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `ical_uid` (`string`, optional): Only events whose iCal UID starts with this value (case sensitive).
- `is_deleted` (`boolean`, optional): true returns only deleted events; false returns only events that still exist.
- `start_time` (`string`, optional): Only events starting exactly at this ISO 8601 date-time.
- `start_time__gte` (`string`, optional): Only events starting at or after this ISO 8601 date-time.
- `start_time__lte` (`string`, optional): Only events starting at or before this ISO 8601 date-time.
- `updated_at__gte` (`string`, optional): Only events updated at or after this ISO 8601 date-time. Useful for incremental sync.

Example input: `{"calendar_id":"<calendar_id>"}`

### `recall_calendar_get`

Get Calendar · Read-only

Get one calendar connected to Recall.ai by id.
Returns id, platform, platform_email, oauth_email, status, status_changes, webhook_url and metadata.
Use calendar_get to check a calendar's connection status. Use calendar_events_list for its events.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_id` (`string`, required): UUID of the calendar. Get it from List Calendars or the `id` returned by Create Calendar.

Example input: `{"calendar_id":"<calendar_id>"}`

### `recall_calendars_list`

List Calendars · Read-only

List calendars connected to the Recall.ai workspace, filtered by email, platform, status or creation time.
Returns a page with next, previous and results; each calendar has id, platform, platform_email, status and metadata.
Use calendars_list to find a calendar id. Use calendar_get when you already have it.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at__gte` (`string`, optional): Only calendars created at or after this ISO 8601 date-time.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `email` (`string`, optional): Only calendars connected for this email address.
- `platform` (`string`, optional): Only calendars on this platform. One of: `google_calendar`, `microsoft_outlook`.
- `status` (`string`, optional): Only calendars in this connection status. One of: `connecting`, `connected`, `disconnected`.

Example input: `{}`

### `recall_meeting_direct_connect_get`

Get Meeting Direct Connect · Read-only

Get one Meeting Direct Connect session from Recall.ai by id.
Returns the session with its status and recording details.
Use meeting_direct_connect_get to check one botless capture.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_direct_connect_id` (`string`, required): UUID of the Meeting Direct Connect. Get it from List Meeting Direct Connects.

Example input: `{"meeting_direct_connect_id":"<meeting_direct_connect_id>"}`

### `recall_meeting_direct_connects_list`

List Meeting Direct Connects · Read-only

List Meeting Direct Connect sessions (Zoom RTMS and Google Meet Media API captures without a bot) in the Recall.ai workspace.
Returns an array of Meeting Direct Connect objects with id, status and recording details.
Use meeting_direct_connects_list to browse botless captures. Use meeting_direct_connect_get for one session.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `recall_meeting_metadata_get`

Get Meeting Metadata · Read-only

Get one meeting metadata artifact from Recall.ai by id.
Returns id, recording, status, metadata and data with the meeting title and other platform details.
Use meeting_metadata_get to download one artifact. Use meeting_metadata_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_metadata_id` (`string`, required): UUID of the meeting metadata artifact. Get it from List Meeting Metadata Artifacts or the recording's media_shortcuts.

Example input: `{"meeting_metadata_id":"<meeting_metadata_id>"}`

### `recall_meeting_metadata_list`

List Meeting Metadata Artifacts · Read-only

List meeting metadata artifacts in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use meeting_metadata_list to find meeting metadata artifacts for a recording. Use meeting_metadata_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_participant_events_get`

Get Participant Events · Read-only

Get one participant events artifact from Recall.ai by id.
Returns id, recording, status, metadata and data with download links for the participant list and join, leave, speech and chat events.
Use participant_events_get to download one artifact. Use participant_events_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `participant_events_id` (`string`, required): UUID of the participant events artifact. Get it from List Participant Events Artifacts or the recording's media_shortcuts.

Example input: `{"participant_events_id":"<participant_events_id>"}`

### `recall_participant_events_list`

List Participant Events Artifacts · Read-only

List participant events artifacts in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use participant_events_list to find participant events artifacts for a recording. Use participant_events_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_realtime_endpoint_get`

Get Realtime Endpoint · Read-only

Get one Recall.ai real-time endpoint by id.
Returns id, recording, type, status, url, events and metadata.
Use realtime_endpoint_get to check whether live delivery is running or failed.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `realtime_endpoint_id` (`string`, required): UUID of the realtime endpoint. Get it from List Realtime Endpoints or the recording's realtime_endpoints.

Example input: `{"realtime_endpoint_id":"<realtime_endpoint_id>"}`

### `recall_realtime_endpoints_list`

List Realtime Endpoints · Read-only

List real-time endpoints (webhook, websocket, RTMP or Desktop SDK callback) attached to Recall.ai recordings.
Returns a page with next, previous and results; each endpoint has id, recording, type, status, url, events and metadata.
Use realtime_endpoints_list to audit where live data is streamed. Use realtime_endpoint_get for one endpoint.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only endpoints in this status. One of: `running`, `done`, `failed`.
- `type` (`string`, optional): Only endpoints of this type. One of: `rtmp`, `websocket`, `webhook`, `desktop_sdk_callback`.

Example input: `{}`

### `recall_recording_get`

Get Recording · Read-only

Get one Recall.ai recording by id.
Returns status, started_at, completed_at, expires_at, metadata and media_shortcuts with download URLs for the video, audio, transcript, participant events and meeting metadata.
Use recording_get to reach a recording's files. Use transcript_get for the transcript artifact itself.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `recording_id` (`string`, required): UUID of the recording. Get it from List Recordings or a bot's `recordings` array.

Example input: `{"recording_id":"<recording_id>"}`

### `recall_recordings_list`

List Recordings · Read-only

List recordings in the Recall.ai workspace, filtered by bot, Desktop SDK upload, status or creation time.
Returns a page with next, previous and results; each recording has id, status, started_at, completed_at, bot and media_shortcuts with download links.
Use recordings_list to find recordings. Use recording_get when you already have a recording id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, optional): Only recordings made by this bot UUID.
- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `desktop_sdk_upload_id` (`string`, optional): Only recordings from this Desktop SDK upload UUID.
- `status_code` (`string`, optional): Only recordings in this status. One of: `processing`, `paused`, `done`, `failed`.

Example input: `{}`

### `recall_sdk_upload_get`

Get Desktop SDK Upload · Read-only

Get one Desktop Recording SDK upload from Recall.ai by id.
Returns id, status, recording_id, created_at and metadata.
Use sdk_upload_get to check an upload's status and find its recording_id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `sdk_upload_id` (`string`, required): UUID of the Desktop SDK upload. Get it from List Desktop SDK Uploads.

Example input: `{"sdk_upload_id":"<sdk_upload_id>"}`

### `recall_sdk_uploads_list`

List Desktop SDK Uploads · Read-only

List Desktop Recording SDK uploads in the Recall.ai workspace.
Returns a page with next, previous and results; each upload has id, status, recording_id, created_at and metadata.
Use sdk_uploads_list to find recordings made with the Desktop SDK. Use recordings_list with desktop_sdk_upload_id for their media.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.

Example input: `{}`

### `recall_transcript_get`

Get Transcript · Read-only

Get one transcript artifact from Recall.ai by id.
Returns id, recording, status, provider, diarization, metadata and data.download_url for the transcript JSON.
Use transcript_get to download one artifact. Use transcripts_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transcript_id` (`string`, required): UUID of the transcript artifact. Get it from List Transcripts or the recording's media_shortcuts.

Example input: `{"transcript_id":"<transcript_id>"}`

### `recall_transcripts_list`

List Transcripts · Read-only

List transcripts in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use transcripts_list to find transcripts for a recording. Use transcript_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_video_mixed_get`

Get Mixed Video · Read-only

Get one mixed video artifact from Recall.ai by id.
Returns id, recording, status, format, metadata and data.download_url for the video file.
Use video_mixed_get to download one artifact. Use video_mixed_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `video_mixed_id` (`string`, required): UUID of the mixed video artifact. Get it from List Mixed Video Files or the recording's media_shortcuts.

Example input: `{"video_mixed_id":"<video_mixed_id>"}`

### `recall_video_mixed_list`

List Mixed Video Files · Read-only

List mixed video files in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use video_mixed_list to find mixed video files for a recording. Use video_mixed_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_video_separate_get`

Get Separate Video · Read-only

Get one separate video artifact from Recall.ai by id.
Returns id, recording, status, format, metadata and data with download links for each participant's video.
Use video_separate_get to download one artifact. Use video_separate_list to find artifacts by recording.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `video_separate_id` (`string`, required): UUID of the separate video artifact. Get it from List Separate Video Artifacts or the recording's media_shortcuts.

Example input: `{"video_separate_id":"<video_separate_id>"}`

### `recall_video_separate_list`

List Separate Video Artifacts · Read-only

List separate video artifacts in the Recall.ai workspace, filtered by recording, status or creation time.
Returns a page with next, previous and results; each item has id, recording, status, metadata and data with download links.
Use video_separate_list to find separate video artifacts for a recording. Use video_separate_get when you already have the id.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_at_after` (`string`, optional): Only return items created at or after this ISO 8601 date-time, e.g. 2024-06-01T00:00:00Z.
- `created_at_before` (`string`, optional): Only return items created before this ISO 8601 date-time, e.g. 2024-06-30T23:59:59Z.
- `cursor` (`string`, optional): Pagination cursor for the next page. Copy the `cursor` query value from the `next` URL of the previous response; leave empty for the first page.
- `recording_id` (`string`, optional): Only return items that belong to this recording UUID. Get it from List Recordings or a bot's `recordings` array.
- `status_code` (`string`, optional): Only artifacts in this status. One of: `processing`, `done`, `failed`.

Example input: `{}`

### `recall_audio_mixed_update`

Update Mixed Audio Metadata · Write

Set custom metadata on a Recall.ai mixed audio artifact.
Returns the updated artifact.
Use audio_mixed_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `audio_mixed_id` (`string`, required): UUID of the mixed audio artifact. Get it from List Mixed Audio Files or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"audio_mixed_id":"<audio_mixed_id>"}`

### `recall_audio_separate_update`

Update Separate Audio Metadata · Write

Set custom metadata on a Recall.ai separate audio artifact.
Returns the updated artifact.
Use audio_separate_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `audio_separate_id` (`string`, required): UUID of the separate audio artifact. Get it from List Separate Audio Artifacts or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"audio_separate_id":"<audio_separate_id>"}`

### `recall_bot_create`

Create Bot · Write

Send a Recall.ai bot to a meeting now, or schedule it with join_at.
Returns the bot with its id, meeting_url, join_at, recording_config and status_changes.
Use bot_create for a single meeting link. Use calendar_event_bot_schedule to attach a bot to a synced calendar event.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `meeting_url` (`string`, required): Meeting link the bot joins, e.g. a Zoom, Google Meet, Microsoft Teams or Webex URL.
- `automatic_audio_output` (`object`, optional): Audio the bot plays when recording starts. Required before you can use Start Output Audio. Example: {"in_call_recording": {"data": {"kind": "mp3", "b64_data": "SUQzBAAAAAAA..."}}}.
- `automatic_leave` (`object`, optional): Timeouts, in seconds, after which the bot leaves on its own: waiting room, nobody joined, everyone left, not recording, recording, or recording permission denied. Example: {"waiting_room_timeout": 600, "noone_joined_timeout": 900}.
- `automatic_video_output` (`object`, optional): Image the bot shows as its video while recording or not recording. Each state takes a kind (jpeg) and base64 image data, 16:9. Example: {"in_call_recording": {"kind": "jpeg", "b64_data": "/9j/4AAQ..."}}.
- `bot_name` (`string`, optional): Name the bot shows in the call. Defaults to 'Meeting Notetaker'. Authenticated Google Meet bots use the Google account name instead.
- `breakout_room` (`object`, optional): How the bot handles Zoom breakout rooms. Example: {"mode": "join_main_room"} or {"mode": "join_specific_room", "room_id": "<uuid>"}.
- `chat` (`object`, optional): Chat messages the bot sends automatically when it joins or when a participant joins (Zoom, Google Meet and Teams). Each message needs send_to and message. Example: {"on_bot_join": {"send_to": "everyone", "message": "This call is being recorded."}}.
- `google_meet` (`object`, optional): Google Meet settings. Set google_login_group_id to send a signed-in bot. Example: {"google_login_group_id": "8a6f2c1e-3b4d-4e5f-9a7b-1c2d3e4f5a6b"}.
- `join_at` (`string`, optional): When the bot should join, as an ISO 8601 date-time. Set it at least 10 minutes in the future for a scheduled bot that is guaranteed to join on time; leave empty to send an ad-hoc bot now.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.
- `output_media` (`object`, optional): Stream a webpage as the bot's camera or screenshare from the moment it joins. Example: {"camera": {"kind": "webpage", "config": {"url": "https://example.com/agent"}}}.
- `recording_config` (`object`, optional): Recording settings: which artifacts to capture (mixed video is on by default), the transcript provider, real-time endpoints, retention, video layout and when to start recording. Example: {"transcript": {"provider": {"recallai_streaming": {}}}, "retention": {"type": "timed", "hours": 168}}.
- `variant` (`object`, optional): Bot machine variant per meeting platform. Example: {"zoom": "web_4_core"}.
- `webex` (`object`, optional): Webex settings. Set login_group_name to send a signed-in bot. Example: {"login_group_name": "default"}.
- `zoom` (`object`, optional): Zoom-specific settings, such as a join token URL, ZAK URL or OBF token URL. Example: {"zak_url": "https://example.com/zak"}.

Example input: `{"meeting_url":"<meeting_url>"}`

### `recall_bot_leave_call`

Remove Bot From Call · Write

Make a Recall.ai bot leave its meeting. This cannot be undone.
Returns the bot.
Use bot_leave_call to end a bot that is in a call. Use bot_delete to cancel a bot that has not joined yet.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_media_delete`

Delete Bot Media · Write

Permanently delete all media Recall.ai stored for a bot: recordings, transcripts and other artifacts. This cannot be undone.
Returns the bot.
Use bot_media_delete to wipe every artifact of a bot at once. Use recording_delete or the artifact delete tools to remove one item.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_output_audio_start`

Start Output Audio · Write

Make a Recall.ai bot play an MP3 clip in the meeting. The bot must have been created with automatic_audio_output.
Returns the bot.
Use bot_output_audio_start to play a clip. Use bot_output_audio_stop to cut it off.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `b64_data` (`string`, required): Base64-encoded MP3 audio data, standard alphabet (RFC 4648).
- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `kind` (`string`, required): Format of b64_data. Only mp3 is supported. One of: `mp3`.

Example input: `{"b64_data":"<b64_data>","bot_id":"<bot_id>","kind":"mp3"}`

### `recall_bot_output_media_start`

Start Output Media · Write

Stream a live webpage as a Recall.ai bot's camera and/or screenshare in the meeting.
Returns the bot.
Use bot_output_media_start for interactive or animated output. Use bot_output_video_start or bot_output_screenshare_start for a still image.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `camera` (`object`, optional): Webpage to show as the bot's camera. Example: {"kind": "webpage", "config": {"url": "https://example.com/agent"}}.
- `screenshare` (`object`, optional): Webpage to screenshare. Example: {"kind": "webpage", "config": {"url": "https://example.com/slides"}}. Set camera, screenshare or both.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_output_screenshare_start`

Start Screenshare · Write

Make a Recall.ai bot screenshare a still JPEG image in the meeting.
Returns the bot.
Use bot_output_screenshare_start for a static image. Use bot_output_media_start to screenshare a live webpage.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `b64_data` (`string`, required): Base64-encoded JPEG image data, standard alphabet (RFC 4648).
- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `kind` (`string`, required): Format of b64_data. Only jpeg is supported. One of: `jpeg`.

Example input: `{"b64_data":"<b64_data>","bot_id":"<bot_id>","kind":"jpeg"}`

### `recall_bot_output_video_start`

Start Output Video · Write

Show a still JPEG image as the Recall.ai bot's camera video in the meeting.
Returns the bot.
Use bot_output_video_start for a static image. Use bot_output_media_start to stream a live webpage.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `b64_data` (`string`, required): Base64-encoded JPEG image (16:9) data, standard alphabet (RFC 4648).
- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `kind` (`string`, required): Format of b64_data. Only jpeg is supported. One of: `jpeg`.

Example input: `{"b64_data":"<b64_data>","bot_id":"<bot_id>","kind":"jpeg"}`

### `recall_bot_participant_pin`

Pin Participant · Write

Pin one participant's video in a Recall.ai bot's separate H.264 video stream, or unpin when no participant is given.
Returns the bot.
Use bot_participant_pin only for bots recording video_separate_h264.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `participant_id` (`integer`, optional): Numeric ID of the participant to pin, from participant events. Leave empty to unpin the current participant.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_pause_recording`

Pause Recording · Write

Pause the current recording of a Recall.ai bot. The bot stays in the call.
Returns the bot.
Use bot_pause_recording for a temporary break. Use bot_resume_recording to continue it, or bot_stop_recording to end it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_resume_recording`

Resume Recording · Write

Resume a paused recording of a Recall.ai bot.
Returns the bot.
Use bot_resume_recording after bot_pause_recording. Use bot_start_recording to begin a new recording instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_send_chat_message`

Send Chat Message · Write

Post a message in the meeting chat as the Recall.ai bot.
Returns the bot.
Use bot_send_chat_message for a one-off message during a call. Set chat on bot_create for automatic join messages.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `message` (`string`, required): Text to send in the meeting chat.
- `pin` (`boolean`, optional): Pin the message after sending. Only Google Meet and Microsoft Teams support pinning. Defaults to false.
- `to` (`string`, optional): Person or group that receives the message. Defaults to everyone. On platforms other than Zoom, everyone is the only supported value.

Example input: `{"bot_id":"<bot_id>","message":"<message>"}`

### `recall_bot_start_recording`

Start Recording · Write

Tell a Recall.ai bot in a call to start recording. If a recording is already running, it restarts as a new recording.
Returns the bot.
Use bot_start_recording to begin or restart capture. Use bot_resume_recording to continue a paused recording.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.
- `realtime_endpoints` (`array`, optional): Endpoints that receive recording data in real time. Each item has a type (webhook, websocket, rtmp or desktop_sdk_callback), a url and the events to send. Example: [{"type": "webhook", "url": "https://example.com/hook", "events": ["transcript.data"]}].
- `retention` (`object`, optional): How long Recall keeps the recording. Example: {"type": "timed", "hours": 168} or {"type": "forever"}.
- `start_recording_on` (`string`, optional): When recording starts: call_join, participant_join or participant_speak. One of: `call_join`, `participant_join`, `participant_speak`.
- `transcript` (`object`, optional): Transcript settings for the new recording, such as the provider. Example: {"provider": {"recallai_streaming": {}}}.
- `video_mixed_layout` (`string`, optional): Layout of the mixed video. One of: `speaker_view`, `gallery_view`, `gallery_view_v2`, `audio_only`.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_stop_recording`

Stop Recording · Write

Tell a Recall.ai bot to end its current recording. The bot stays in the call.
Returns the bot.
Use bot_stop_recording to finish a recording. Use bot_pause_recording to pause and continue the same recording later.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_update`

Update Scheduled Bot · Write

Change a scheduled Recall.ai bot that has not joined its call yet, such as its join time, meeting link, name or recording settings.
Returns the updated bot.
Use bot_update only before the bot joins. Use bot_leave_call or the recording tools to control a bot already in a call.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `automatic_audio_output` (`object`, optional): Audio the bot plays when recording starts. Required before you can use Start Output Audio. Example: {"in_call_recording": {"data": {"kind": "mp3", "b64_data": "SUQzBAAAAAAA..."}}}.
- `automatic_leave` (`object`, optional): Timeouts, in seconds, after which the bot leaves on its own: waiting room, nobody joined, everyone left, not recording, recording, or recording permission denied. Example: {"waiting_room_timeout": 600, "noone_joined_timeout": 900}.
- `automatic_video_output` (`object`, optional): Image the bot shows as its video while recording or not recording. Each state takes a kind (jpeg) and base64 image data, 16:9. Example: {"in_call_recording": {"kind": "jpeg", "b64_data": "/9j/4AAQ..."}}.
- `bot_name` (`string`, optional): Name the bot shows in the call. Defaults to 'Meeting Notetaker'. Authenticated Google Meet bots use the Google account name instead.
- `breakout_room` (`object`, optional): How the bot handles Zoom breakout rooms. Example: {"mode": "join_main_room"} or {"mode": "join_specific_room", "room_id": "<uuid>"}.
- `chat` (`object`, optional): Chat messages the bot sends automatically when it joins or when a participant joins (Zoom, Google Meet and Teams). Each message needs send_to and message. Example: {"on_bot_join": {"send_to": "everyone", "message": "This call is being recorded."}}.
- `google_meet` (`object`, optional): Google Meet settings. Set google_login_group_id to send a signed-in bot. Example: {"google_login_group_id": "8a6f2c1e-3b4d-4e5f-9a7b-1c2d3e4f5a6b"}.
- `join_at` (`string`, optional): When the bot should join, as an ISO 8601 date-time. Set it at least 10 minutes in the future for a scheduled bot that is guaranteed to join on time; leave empty to send an ad-hoc bot now.
- `meeting_url` (`string`, optional): New meeting link for the scheduled bot.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.
- `output_media` (`object`, optional): Stream a webpage as the bot's camera or screenshare from the moment it joins. Example: {"camera": {"kind": "webpage", "config": {"url": "https://example.com/agent"}}}.
- `recording_config` (`object`, optional): Recording settings: which artifacts to capture (mixed video is on by default), the transcript provider, real-time endpoints, retention, video layout and when to start recording. Example: {"transcript": {"provider": {"recallai_streaming": {}}}, "retention": {"type": "timed", "hours": 168}}.
- `variant` (`object`, optional): Bot machine variant per meeting platform. Example: {"zoom": "web_4_core"}.
- `webex` (`object`, optional): Webex settings. Set login_group_name to send a signed-in bot. Example: {"login_group_name": "default"}.
- `zoom` (`object`, optional): Zoom-specific settings, such as a join token URL, ZAK URL or OBF token URL. Example: {"zak_url": "https://example.com/zak"}.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_calendar_create`

Create Calendar · Write

Connect a user's Google or Outlook calendar to Recall.ai with OAuth credentials from your own app.
Returns the calendar with its id and status (connecting until the first sync finishes).
Use calendar_create once per user calendar. Use calendar_update to rotate its credentials.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `oauth_client_id` (`string`, required): Client ID of your own Google or Microsoft OAuth app that the user authorized.
- `oauth_refresh_token` (`string`, required): Refresh token Recall uses to read the user's calendar, from your OAuth flow.
- `platform` (`string`, required): Calendar platform. One of: `google_calendar`, `microsoft_outlook`.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.
- `oauth_client_secret` (`string`, optional): Client secret of that OAuth app.
- `oauth_email` (`string`, optional): Email of the calendar account, used to identify the calendar.
- `webhook_url` (`string`, optional): URL that receives calendar update webhooks for this calendar.

Example input: `{"oauth_client_id":"<oauth_client_id>","oauth_refresh_token":"<oauth_refresh_token>","platform":"google_calendar"}`

### `recall_calendar_event_bot_schedule`

Schedule Bot For Calendar Event · Write

Schedule a Recall.ai bot to join a synced calendar event. The event's meeting_url and start time fill in the bot automatically.
Returns the updated calendar event, including its bots.
Use calendar_event_bot_schedule for calendar meetings. Use bot_create to send a bot to a raw meeting link.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `bot_config` (`object`, required): Bot settings, with the same fields as Create Bot (bot_name, recording_config, chat, automatic_leave and so on). meeting_url and join_at are filled from the event. Example: {"bot_name": "Acme Notetaker", "recording_config": {"transcript": {"provider": {"recallai_streaming": {}}}}}.
- `calendar_event_id` (`string`, required): UUID of the calendar event. Get it from List Calendar Events.
- `deduplication_key` (`string`, required): Key that makes events sharing one meeting share a single bot. Keep it the same across those events, e.g. the event start time plus meeting URL.

Example input: `{"bot_config":{},"calendar_event_id":"<calendar_event_id>","deduplication_key":"<deduplication_key>"}`

### `recall_calendar_update`

Update Calendar · Write

Change a connected Recall.ai calendar, such as its OAuth credentials, webhook URL or metadata.
Returns the updated calendar.
Use calendar_update to fix a disconnected calendar or change its settings. Use calendar_create for a new one.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `calendar_id` (`string`, required): UUID of the calendar. Get it from List Calendars or the `id` returned by Create Calendar.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.
- `oauth_client_id` (`string`, optional): Client ID of your own Google or Microsoft OAuth app that the user authorized.
- `oauth_client_secret` (`string`, optional): Client secret of that OAuth app.
- `oauth_email` (`string`, optional): Email of the calendar account, used to identify the calendar.
- `oauth_refresh_token` (`string`, optional): Refresh token Recall uses to read the user's calendar, from your OAuth flow.
- `platform` (`string`, optional): Calendar platform. One of: `google_calendar`, `microsoft_outlook`.
- `webhook_url` (`string`, optional): URL that receives calendar update webhooks for this calendar.

Example input: `{"calendar_id":"<calendar_id>"}`

### `recall_meeting_metadata_update`

Update Meeting Metadata Metadata · Write

Set custom metadata on a Recall.ai meeting metadata artifact.
Returns the updated artifact.
Use meeting_metadata_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `meeting_metadata_id` (`string`, required): UUID of the meeting metadata artifact. Get it from List Meeting Metadata Artifacts or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"meeting_metadata_id":"<meeting_metadata_id>"}`

### `recall_participant_events_update`

Update Participant Events Metadata · Write

Set custom metadata on a Recall.ai participant events artifact.
Returns the updated artifact.
Use participant_events_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `participant_events_id` (`string`, required): UUID of the participant events artifact. Get it from List Participant Events Artifacts or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"participant_events_id":"<participant_events_id>"}`

### `recall_realtime_endpoint_update`

Update Realtime Endpoint Metadata · Write

Set custom metadata on a Recall.ai real-time endpoint.
Returns the updated endpoint.
Use realtime_endpoint_update to tag the endpoint with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `realtime_endpoint_id` (`string`, required): UUID of the realtime endpoint. Get it from List Realtime Endpoints or the recording's realtime_endpoints.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"realtime_endpoint_id":"<realtime_endpoint_id>"}`

### `recall_recording_transcript_create`

Create Async Transcript · Write

Start an asynchronous transcription of a finished Recall.ai recording with the provider you choose.
Returns the new transcript artifact with its id and status (processing until it is done).
Use recording_transcript_create after the call ends. Use transcript_get to poll the result and download it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `provider` (`object`, required): Transcription provider and its options. Use one key: recallai_async, assembly_ai_async, deepgram_async, gladia_v2_async, rev_async, speechmatics_async, google_speech_v2_async, aws_transcribe_async or elevenlabs_async. Example: {"recallai_async": {"language_code": "en"}}.
- `recording_id` (`string`, required): UUID of the recording. Get it from List Recordings or a bot's `recordings` array.
- `diarization` (`object`, optional): Speaker diarization options. Example: {"use_separate_streams_when_available": true}.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"provider":{},"recording_id":"<recording_id>"}`

### `recall_recording_update`

Update Recording Metadata · Write

Set custom metadata on a Recall.ai recording.
Returns the updated recording.
Use recording_update to tag a recording with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `recording_id` (`string`, required): UUID of the recording. Get it from List Recordings or a bot's `recordings` array.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"recording_id":"<recording_id>"}`

### `recall_transcript_update`

Update Transcript Metadata · Write

Set custom metadata on a Recall.ai transcript artifact.
Returns the updated artifact.
Use transcript_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `transcript_id` (`string`, required): UUID of the transcript artifact. Get it from List Transcripts or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"transcript_id":"<transcript_id>"}`

### `recall_video_mixed_update`

Update Mixed Video Metadata · Write

Set custom metadata on a Recall.ai mixed video artifact.
Returns the updated artifact.
Use video_mixed_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `video_mixed_id` (`string`, required): UUID of the mixed video artifact. Get it from List Mixed Video Files or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"video_mixed_id":"<video_mixed_id>"}`

### `recall_video_separate_update`

Update Separate Video Metadata · Write

Set custom metadata on a Recall.ai separate video artifact.
Returns the updated artifact.
Use video_separate_update to tag the artifact with your own keys. It changes only metadata.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `video_separate_id` (`string`, required): UUID of the separate video artifact. Get it from List Separate Video Artifacts or the recording's media_shortcuts.
- `metadata` (`object`, optional): Custom key-value metadata to store on the object. Keys and values must be strings. Example: {"customer_id": "cus_123", "deal_stage": "demo"}.

Example input: `{"video_separate_id":"<video_separate_id>"}`

### `recall_audio_mixed_delete`

Delete Mixed Audio · Destructive

Permanently delete a Recall.ai mixed audio artifact.
Returns an empty body on success.
Use audio_mixed_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `audio_mixed_id` (`string`, required): UUID of the mixed audio artifact. Get it from List Mixed Audio Files or the recording's media_shortcuts.

Example input: `{"audio_mixed_id":"<audio_mixed_id>"}`

### `recall_audio_separate_delete`

Delete Separate Audio · Destructive

Permanently delete a Recall.ai separate audio artifact.
Returns an empty body on success.
Use audio_separate_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `audio_separate_id` (`string`, required): UUID of the separate audio artifact. Get it from List Separate Audio Artifacts or the recording's media_shortcuts.

Example input: `{"audio_separate_id":"<audio_separate_id>"}`

### `recall_bot_delete`

Delete Scheduled Bot · Destructive

Delete a scheduled Recall.ai bot that has not joined its call yet.
Returns an empty body on success.
Use bot_delete to cancel a future bot. Use bot_leave_call to remove a bot that is already in a call.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_output_audio_stop`

Stop Output Audio · Destructive

Stop the audio a Recall.ai bot is playing in the meeting.
Returns an empty body on success.
Use bot_output_audio_stop after bot_output_audio_start.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_output_media_stop`

Stop Output Media · Destructive

Stop webpage output on a Recall.ai bot's camera, screenshare or both.
Returns an empty body on success.
Use bot_output_media_stop after bot_output_media_start. Set camera or screenshare to true for each output to stop.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.
- `camera` (`boolean`, optional): true stops the webpage on the bot's camera. Defaults to false.
- `screenshare` (`boolean`, optional): true stops the webpage screenshare. Defaults to false.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_output_screenshare_stop`

Stop Screenshare · Destructive

Stop the image a Recall.ai bot is screensharing.
Returns an empty body on success.
Use bot_output_screenshare_stop after bot_output_screenshare_start.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_bot_output_video_stop`

Stop Output Video · Destructive

Stop the image a Recall.ai bot shows as its camera video.
Returns an empty body on success.
Use bot_output_video_stop after bot_output_video_start.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `bot_id` (`string`, required): UUID of the bot. Get it from List Bots or the `id` returned by Create Bot.

Example input: `{"bot_id":"<bot_id>"}`

### `recall_calendar_delete`

Delete Calendar · Destructive

Disconnect and delete a calendar from Recall.ai.
Returns an empty body on success.
Use calendar_delete to stop syncing a user's calendar.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `calendar_id` (`string`, required): UUID of the calendar. Get it from List Calendars or the `id` returned by Create Calendar.

Example input: `{"calendar_id":"<calendar_id>"}`

### `recall_calendar_event_bot_unschedule`

Unschedule Bot For Calendar Event · Destructive

Remove the scheduled Recall.ai bot from a synced calendar event.
Returns the updated calendar event.
Use calendar_event_bot_unschedule to stop recording one calendar meeting. Use bot_delete for bots created with bot_create.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `calendar_event_id` (`string`, required): UUID of the calendar event. Get it from List Calendar Events.

Example input: `{"calendar_event_id":"<calendar_event_id>"}`

### `recall_meeting_metadata_delete`

Delete Meeting Metadata · Destructive

Permanently delete a Recall.ai meeting metadata artifact.
Returns an empty body on success.
Use meeting_metadata_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `meeting_metadata_id` (`string`, required): UUID of the meeting metadata artifact. Get it from List Meeting Metadata Artifacts or the recording's media_shortcuts.

Example input: `{"meeting_metadata_id":"<meeting_metadata_id>"}`

### `recall_participant_events_delete`

Delete Participant Events · Destructive

Permanently delete a Recall.ai participant events artifact.
Returns an empty body on success.
Use participant_events_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `participant_events_id` (`string`, required): UUID of the participant events artifact. Get it from List Participant Events Artifacts or the recording's media_shortcuts.

Example input: `{"participant_events_id":"<participant_events_id>"}`

### `recall_recording_delete`

Delete Recording · Destructive

Permanently delete a Recall.ai recording and its media.
Returns an empty body on success.
Use recording_delete for one recording. Use bot_media_delete to remove everything a bot captured.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `recording_id` (`string`, required): UUID of the recording. Get it from List Recordings or a bot's `recordings` array.

Example input: `{"recording_id":"<recording_id>"}`

### `recall_transcript_delete`

Delete Transcript · Destructive

Permanently delete a Recall.ai transcript artifact.
Returns an empty body on success.
Use transcript_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `transcript_id` (`string`, required): UUID of the transcript artifact. Get it from List Transcripts or the recording's media_shortcuts.

Example input: `{"transcript_id":"<transcript_id>"}`

### `recall_video_mixed_delete`

Delete Mixed Video · Destructive

Permanently delete a Recall.ai mixed video artifact.
Returns an empty body on success.
Use video_mixed_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `video_mixed_id` (`string`, required): UUID of the mixed video artifact. Get it from List Mixed Video Files or the recording's media_shortcuts.

Example input: `{"video_mixed_id":"<video_mixed_id>"}`

### `recall_video_separate_delete`

Delete Separate Video · Destructive

Permanently delete a Recall.ai separate video artifact.
Returns an empty body on success.
Use video_separate_delete to remove only this artifact. Use recording_delete to remove the whole recording.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `video_separate_id` (`string`, required): UUID of the separate video artifact. Get it from List Separate Video Artifacts or the recording's media_shortcuts.

Example input: `{"video_separate_id":"<video_separate_id>"}`

## Related

Other Transcription connectors ([all 29](/agentkit/connectors/?category=transcription)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Diarize](/agentkit/connectors/diarize/): Scalekit connector, Access token, 3 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 69 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
