Quickstart

Learn how to send a bot to a meeting and retrieve the recording.

1. Initial setup

Create an API Key in the Recall dashboard. This will be used for API authentication.

2. Create a meeting

We recommend using Google Meet for this quickstart. After you create the meeting, stay in the meeting you created, and save the meeting URL for the next step.

3. Send a bot to the meeting

Use the Create Bot endpoint to send a bot to a meeting.

  • Swap the placeholder in Authorization with your API key
  • Swap the placeholder in meeting_url with the meeting URL from the previous step.
curl -X POST https://api.recall.ai/api/v1/bot \
    -H 'Authorization: Token {{YOUR-TOKEN-HERE}}' \
    -H 'Content-Type: application/json' \
    -d '{"meeting_url": "{{MEETING-URL-HERE}}", "bot_name": "Bot"}'

The response will include a Bot ID (in id). Save it for the next few steps.
If everything works, the command-line displays a response in the following shape.

{
    "id": "5603dea-b633-4b35-995c-fec5415c8d",
    "video_url": null,
    "status_changes": [
        {
            "code": "ready",
            "message": null,
            "created_at": "2023-03-23T18:59:40.391872Z"
        }
    ],
    "meeting_metadata": null,
    "meeting_participants": [],
    "speaker_timeline": {
        "timeline": []
    },
    "calendar_meeting_id": null,
    "calendar_user_id": null,
    "calendar_meetings": []
}

4. Talk for a little bit

While you and the bot are in the meeting, make sure to turn on your video or talk for a little bit. This way, there will be actual content in the video recording the bot produces for you to look at after.

5. End the meeting

Once you feel like there is enough content in the meeting, end the meeting. The bot will automatically leave.

6. Wait for done

Once the meeting is done, Recall begins processing the video recording. This typically takes less than 10 seconds no matter the length of the meeting.

When the recording is ready to be downloaded, the bot status changes to done.

The best way to retrieve this is via webhooks. See the Webhook Overview for details.

If you can't use webhooks for some reason, you can manually poll Retrieve Bot to see the bot status.

7. Retrieve the recording

To retrieve the recording the bot created, use the Retrieve Bot endpoint.

  • Swap the Bot ID with the id you saved in Step 3.
  • Swap the placeholder in Authorization with your API key
curl -X GET https://api.recall.ai/api/v1/bot/{{BOT-ID}} \
	-H 'Authorization: Token {{YOUR-TOKEN-HERE}}'

The response will include a video url (in video_url). Copy and paste this URL into your web browser to view.

Recall deletes the recording files after 7 days, indicated by media_retention_end in the response. In practice, you should download the recording and upload to your own servers right after you receive the done webhook event.

{
    "id": "5603dea-b633-4b35-995c-fec5415c8d",
    "video_url": "https://recallai-prod-bot-data.s3.amazonaws.com/5603dea6-b633-4b35-995c-f5ec5415c8d9/video.mp4?AWSAccessKeyId=ASIAVO7R4VZXGRMCWGEG&Signature=MAcf%2BT60SRkLWsJGpCQFByiWUIk%3D&x-amz-security-token=IQoJb3JpZ2luX2VjEPb%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIAng4YEGGZ9OK804stMvVIp2AJTyBXshfAWnv9Hi7OQmcZSaIE3h8A36mZCNMRwi%2B6sixPO8%2BJ3izmtAwghcLnZLdK4v1xLhpWik0h8e1RVA2hb4t9KFmPKvAxecXc2KCONPYpUvF1V1KSmJzvYOBmcqAt7nKWZMjMWVW6C%2FcQPMo6tm65BlUdO8bSYpa6Wjs2CqfmytFpxxEr5RrFAG1NkMAKDZXvhcukjZfrJsC%2BppCOviIEGocdb6CtJTJrwFvuZ8DzRPmDiPemF2KLP2SA7nSiZH0UYgBmhokDT8Cjlc0B13Edf%2BrfH8xr8RlA5vFHKULYwi4O6Ls4YDD%2B7dMeDLjxC&Expires=1680203740",
    "media_retention_end": "2023-03-30T19:15:38.453951Z",
    "status_changes": [
        {
            "code": "ready",
            "message": null,
            "created_at": "2023-03-23T18:59:40.391872Z"
        },
        {
            "code": "joining_call",
            "message": null,
            "created_at": "2023-03-23T19:05:33.221294Z"
        },
        {
            "code": "in_waiting_room",
            "message": null,
            "created_at": "2023-03-23T19:05:36.773949Z"
        },
        {
            "code": "in_call_not_recording",
            "message": null,
            "created_at": "2023-03-23T19:05:46.118246Z"
        },
        {
            "code": "in_call_recording",
            "message": null,
            "created_at": "2023-03-23T19:05:46.129127Z"
        },
        {
            "code": "call_ended",
            "message": null,
            "created_at": "2023-03-23T19:15:34.127658Z"
        },
        {
            "code": "done",
            "message": null,
            "created_at": "2023-03-23T19:15:38.453951Z"
        }
    ],
    "meeting_metadata": null,
    "meeting_participants": [
      {
        "id": 100,
        "name": "John Doe",
        "events": [
          {
            "code": "join",
            "created_at": "2023-03-23T19:05:33.738402Z"
          }
        ],
        "is_host": true,
        "platform": "unknown",
        "extra_data": null
      }
    ],
    "calendar_meeting_id": null,
    "calendar_user_id": null,
    "calendar_meetings": []
}

What’s Next

This wraps up the quickstart. See the links below for a few different ways to