We are thrilled to announce an exciting partnership between Symbl.ai, the leader in Understanding and Generative AI for Conversations, and Recall.ai, the universal API for meeting bots. This collaboration marks a significant milestone in empowering developers and organizations to extract actionable insights from their meeting data like never before. By combining the advanced capabilities of Recall.ai with the cutting-edge technology of Symbl.ai and Nebula, our recently announced conversation LLM, we are revolutionizing how businesses understand and leverage their conversational data.

On the heels of that announcement, we will walk you through the step-by-step process of integrating Symbl.ai with Recall.ai. By following these instructions, you can leverage the combined capabilities of Recall.ai and Symbl.ai to unlock actionable insights from your meeting, enabling you to generate new content, identify actions and insights.  

Integration Steps:

Step 1: Obtain the Symbl.ai API authorization creds

  • If you haven’t signed up for a free Symbl.ai account, navigate to the Symbl.ai Platform Sign Up page and create your free account. No credit card or payment information is needed!
  • Sign in to your Symbl.ai account and retrieve your Symbl.ai API credentials (App ID and App Secret) from the platform home page.
  • If you aren’t familiar with the Symbl Platform capabilities, be sure to take a look at the API Playground to take a number of our conversation insight capabilities for a spin, such as sentiment analysis, topic extraction, trackers, and more.
  • If you plan on following along to invoke the API calls via the cURL examples in a terminal window, set the environment variables for each of these as follows:
export SYMBLAI_APP_ID="<YOUR_SYMBLAI_APP_ID>"
export SYMBLAI_APP_SECRET="<YOUR_SYMBLAI_APP_SECRET>"

Step 2: Set up your Recall.ai account

  • Log in to your Recall.ai account and navigate to API Keys if needed.
  • Click the Generate API Key, provide a name for your key, and click Create.
  • Familiarize yourself with Recall.ai’s API endpoints and documentation, which will be used to process audio or video files and retrieve transcriptions.
  • Again, if you plan on exercising the cURL commands, set the environment variable for Recall.ai’s API Key as follows:
export RECALLAI_API_KEY="<YOUR_RECALLAI_API_KEY>"

Step 3: Start a Meeting and have a notetaking bot join

  • The Recall.ai platform supports numerous CPaaS platforms, but we will use Zoom for this example. Start a Zoom meeting and take note of the meeting URL. If you need help finding this, click the little green shield with the checkmark.
  • Instruct a Recall.ai bot to join the Zoom meeting by calling the following API:
curl -X POST https://api.recall.ai/api/v1/bot 
    -H 'Authorization: Token '$RECALLAI_API_KEY' 
    -H 'Content-Type: application/json' 
    -d '{
          "meeting_url": "https://symbl-ai.zoom.us/j/86101209066?pwd=Z2V1QzJLbGRUZEJrVlk5Zy9PbE1udz09",
          "bot_name": "Bot",
          "transcription_options": {
            "provider": "symbl"
          }
        }'

When you create your Recall.ai bot, you should get back some JSON about that bot. Take note of the Bot ID below on line 2.

{
    "id": "657365b8-04b7-41ba-bad6-3de0da346bb8",
    "video_url": null,
    "recording": "482d3192-6b4b-49ca-aadb-c0cf6957e187",
    "status_changes": [
        {
            "code": "ready",
            "message": null,
            "created_at": "2023-06-20T23:27:28.926697Z",
            "sub_code": null
        }
    ],
    "meeting_metadata": null,
    "meeting_participants": [],
    "meeting_url": null,
    "join_at": null,
    "calendar_meetings": []
}

And then export that ID to an environment variable called RECALLAI_BOT_ID in your terminal like this:

export RECALLAI_BOT_ID="<YOUR_RECALLAI_BOT_ID>"

 

  • Next, say a few sentences. Perhaps give a brief introduction of yourself, where you live, and what your hobbies are. Then instruct the Recall.ai bot to leave by invoking the API call below and terminating the meeting.
curl --request POST 
     --url 'https://api.recall.ai/api/v1/bot/'$RECALLAI_BOT_ID'/leave_call/' 
     --header 'Authorization: Token '$RECALLAI_API_KEY'' 
     --header 'accept: application/json'

Note: Instructing the bot to leave isn’t required. We include this step for completeness to exercise all the Recall.ai APIs.

Step 4: Transcribing the Meeting

There are two options for doing transcription for this meeting.

Option 1: You can either use Recall.ai API or the Symbl.ai API. To use the Recall.ai API: 

  • Give the platform a few moments to finish the transcription. Take the Bot ID from the previous API call and make the following execute the following to obtain the transcription for this conversation.
curl --request GET 
     --url 'https://api.recall.ai/api/v1/bot/'$RECALLAI_BOT_ID'/transcript/' 
     --header 'Authorization: Token '$RECALLAI_API_KEY'' 
     --header 'accept: application/json'

Option 2: Obtaining the transcription using Symbl.ai:

  • To obtain the transcription from the Symbl Platform, we will need the Recall.ai Recording ID first. You can get the ID by invoking this API:
curl --request GET 
     --url 'https://api.recall.ai/api/v1/bot/'$RECALLAI_BOT_ID'' 
     --header 'Authorization: Token '$RECALLAI_API_KEY'' 
     --header 'accept: application/json'

You should get back JSON that looks similar to this:

{
    "id": "657365b8-04b7-41ba-bad6-3de0da346bb8",
    "video_url": "...some URL…",
    "recording": "482d3192-6b4b-49ca-aadb-c0cf6957e187",
    "media_retention_end": "2023-06-28T00:20:26.904067Z",
    "status_changes": [
        {
            "code": "ready",
            "message": null,
            "created_at": "2023-06-20T23:27:28.926697Z",
            "sub_code": null
        },
       …
        {
            "code": "done",
            "message": null,
            "created_at": "2023-06-21T00:20:26.904067Z",
            "sub_code": null
        }
    ],
    "meeting_metadata": {
        "title": "David vonThenen's Zoom Meeting"
    },
    …
}

Take note of the Recording ID on line 4 and export that value to an environment variable like this:

export RECALLAI_RECORDING_ID="<YOUR_RECALLAI_RECORDING_ID>"

  • Then to retrieve the transcription, we will need the Symbl.ai conversation ID. You can retrieve that using the following Recall.ai API:
curl --request GET 
     --url 'https://api.recall.ai/api/v2/recordings/'$RECALLAI_RECORDING_ID'' 
     --header 'Authorization: Token '$RECALLAI_API_KEY'' 
     --header 'accept: application/json'

You should get some JSON back that looks something like this:

{
    "id": "482d3192-6b4b-49ca-aadb-c0cf6957e187",
    "outputs": [
        {
            "id": "d297b8c8-6990-4ab2-8030-0fc797a21d2d",
            "type": "active_speaker_diarized_transcription_symbl",
            "metadata": {
                "connection_id": "c5d6b9c4-3194-4126-b30c-b3f4ddcd40d4",
                "conversation_id": "6207479207952384"
            },
            "endpoints": []
        }
    ],
    "created_at": "2023-06-21T00:11:34.372026Z",
    "expires_at": null
}

 

Take note of the Conversation ID on line 9 and export that to an environment variable like this:

export SYMBLAI_CONVERSATION_ID="<YOUR_SYMBLAI_CONVERSATION_ID>"

  • Login to the Symbl Platform by running the following command:
curl --url https://api.symbl.ai/oauth2/token:generate 
  --header 'Content-Type: application/json' 
  --data '{
    "type": "application",
    "appId": "'"$SYMBLAI_APP_ID"'",
    "appSecret": "'"$SYMBLAI_APP_SECRET"'"
}'

The resulting JSON should look like this:

{
    "accessToken": "...YOUR_ACCESS_TOKEN…",
    "expiresIn": 86400
}

Take note of the accessToken and export it to an environment variable like this:

export SYMBLAI_ACCESS_TOKEN="<YOUR_SYMBLAI_ACCESS_TOKEN>"

 

  • Take that Access Token and Conversation ID and execute the following curl command to get the Symbl Platform transcription of the same meeting.
curl --request GET --url 'https://api.symbl.ai/v1/conversations/'$SYMBLAI_CONVERSATION_ID'/messages' 
     --header 'accept: application/json' 
     --header 'authorization: Bearer '$SYMBLAI_ACCESS_TOKEN''

Step 5 (BONUS): Get Conversation Intelligence with Symbl.ai

Now that you are logged into the Symbl Platform and have the Conversation ID, you can get other conversation insights.

  • If you want to obtain the Trackers discussed in the conversation, make the following API call:
curl --request GET --url 'https://api.symbl.ai/v1/conversations/'$SYMBLAI_CONVERSATION_ID'/trackers' 
     --header 'accept: application/json' 
     --header 'authorization: Bearer '$SYMBLAI_ACCESS_TOKEN''

  • If you want to obtain a Summary of the conversation using Symbl.ai’s summary AI models, execute the following API call:
curl --request GET --url 'https://api.symbl.ai/v1/conversations/'$SYMBLAI_CONVERSATION_ID'/summary' 
     --header 'accept: application/json' 
     --header 'authorization: Bearer '$SYMBLAI_ACCESS_TOKEN''

Step 6 (MEGA BONUS): Using Nebula LLM to Extract More Conversation Data

If you missed the announcement for Nebula’s Private Beta, you can obtain even more conversation data and insights by leveraging Nebula to make queries against Symbl.ai’s Generative AI. If you haven’t already requested beta access, you can do so via the landing page for the Nebula Playground.

  • Once you have your Nebula ApiKey, you can make API calls to Nebula. For example, if you used a prompt such as “Identify the main objectives or goals mentioned in this context concisely in less points. Emphasize on key intents.”, the cURL command would look like this:
curl --location 'https://api-nebula.symbl.ai/v1/model/generate' 
--header 'Content-Type: application/json' 
--header 'ApiKey: '$SYMBLAI_NEBULA_TOKEN'' 
--data '{
    "prompt": {
        "instruction": "Identify the main objectives or goals mentioned in this context concisely in less points. Emphasize on key intents.",
        "conversation": {
            "text": "DROP IN CONVERSATION TEXT HERE"
        }
    },
    "return_scores": false,
    "max_new_tokens": 2048,
    "top_k": 2,
    "penalty_alpha": 0.6
}'
  • The potential of the Nebula is endless. Some examples of other such prompts could be:

What could be the customer’s pain points based on the conversation?

What sales opportunities can be identified from this conversation?

What best practices can be derived from this conversation for future customer interactions?

Those are just some examples of prompts that could be used. In my opinion, aspects where Nebula really shines are in the areas of summarization, identifying critical pieces of conversation data from extremely large conversations, and using Nebula to act as a consultant to “interrogate” the conversation to extract even more insights.

Success! You have just integrated Recall.ai with Symbl.ai! Partaaaayy!

Remember to refer to the API documentation provided by both Symbl.ai and Recall.ai for additional features, parameters, and examples to further extend the capabilities of this integration. I highly recommend taking advantage of Symbl.ai’s conversation APIs and to get the most out of your conversations, leverage Nebula to elevate your conversation understanding.

Stay tuned for future updates and enhancements as both platforms continue to evolve, helping you stay ahead in the conversation analytics space. If you have any questions or need additional help, don’t hesitate to reach out to the Recall.ai and Symbl.ai support teams. Happy conversing!

David vonThenen
David vonThenen
Developer Advocate

David is a self-described Tech geek and Developer Advocate enabling others to process communications to derive conversation intelligence. David talks Kubernetes/containers, VMware virtualization, backup recovery/replication solutions, adaptors in hardware storage connectivity, and everything else that is tech!