Recall Compat API
EndpointsBots

Create a bot

Creates a new bot to join a meeting. The bot will automatically start recording when it joins. **Important:** The `webhook_url` field specifies where bot lifecycle events (status changes, recording ready, transcript available) will be sent. Each client must provide their own webhook endpoint.

POST
/api/v1/bot
Authorization<token>

Meeting BaaS API key. Use format: Token YOUR_API_KEY

In: header

Request Body

application/json

meeting_url*string

URL of the meeting to join (Zoom, Google Meet, or Microsoft Teams)

webhook_url*string

Required for webhook events. URL where bot lifecycle events (status changes, recording ready, transcript available) will be sent via POST. Events are delivered in Recall.ai webhook format. Must be HTTPS in production.

Formaturi
bot_name?string

Display name for the bot in the meeting

join_at?string

Not supported. ISO 8601 timestamp for when the bot should join. Use the Meeting BaaS scheduled bots API instead. Accepted for compatibility but ignored.

automatic_leave?

Timeout settings for automatic bot departure

automatic_video_output?

Not supported. Use bot_image URL in Meeting BaaS for static avatar. Dynamic in-call images are not supported. Accepted for compatibility but ignored.

recording_config?

Recording and transcription configuration

recording_mode?string

Recording layout mode

Value in"speaker_view" | "gallery_view" | "audio_only"
recording_mode_options?

Not supported. Accepted for compatibility but ignored.

realtime_endpoints?array<>

Real-time streaming endpoints. First endpoint URL is used.

audio_separate_raw?object

Not supported. Accepted for compatibility but ignored.

video_separate_png?object

Not supported. Accepted for compatibility but ignored.

video_mixed_layout?string

Not supported. Use recording_mode instead. Accepted for compatibility but ignored.

Value in"speaker_view" | "gallery_view" | "gallery_view_v2" | "single_participant"
output_media?

Not supported. Camera/screenshare output media is not available in Meeting BaaS. Accepted for compatibility but ignored.

zoom?

Zoom-specific configuration. Only zak_url is supported.

google_meet?

Not supported. Accepted for compatibility but ignored.

microsoft_teams?

Microsoft Teams configuration. deduplication_key triggers duplicate prevention.

metadata?

Custom metadata to attach to the bot

chat?

Chat settings. Note: send_to is not supported, messages always go to everyone.

bot_image?string

Meeting BaaS extension. URL to bot avatar image (HTTPS, JPEG/PNG). Not in Recall.ai spec but supported.

Formaturi

Response Body

application/json

application/json

application/json

curl -X POST "https://api.meetingrouter.com/api/v1/bot" \  -H "Content-Type: application/json" \  -d '{    "meeting_url": "https://zoom.us/j/123456789",    "webhook_url": "https://your-app.com/webhooks/recall",    "bot_name": "Meeting Bot",    "recording_mode": "speaker_view",    "chat": {      "on_bot_join": {        "send_to": "everyone",        "message": "This meeting is being recorded."      }    }  }'
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "meeting_url": "string",
  "bot_name": "string",
  "join_at": "string",
  "status_changes": [
    {
      "code": "ready",
      "message": "string",
      "created_at": "string",
      "sub_code": "string"
    }
  ],
  "meeting_metadata": {
    "title": "string",
    "start_time": "string",
    "end_time": "string",
    "duration_seconds": 0
  },
  "meeting_participants": [
    {
      "id": 0,
      "name": "string",
      "is_host": true,
      "platform": "string",
      "extra_data": null,
      "email": "string"
    }
  ],
  "recordings": [
    {
      "id": "string",
      "created_at": "string"
    }
  ],
  "transcripts": [
    {
      "id": "string",
      "created_at": "string"
    }
  ],
  "metadata": {
    "property1": "string",
    "property2": "string"
  },
  "video_url": "string",
  "mp4_source_url": "string",
  "platform": "zoom"
}
{
  "error": "string",
  "details": null
}
{
  "error": "string",
  "details": null
}