Call Transcripts and Insights

Getting Started

After a call ends, Aircall generates AI insights about your call. In this initial guide we will cover the four items listed below. But there are also dedicated guides for summaries, playbooks, and QA evaluations.

Transcription

Speaker-separated transcript with timestamps and language detection.

GETtranscription.created
Sentiments

Overall mood of each external participant — positive, neutral, or negative.

GETsentiment.created
Topics

Key subjects discussed during the call, returned as an array of strings.

GETtopics.created
Action items

Tasks and follow-ups extracted from the conversation by Aircall AI.

GETaction_item.created
☝️

Limited to some plans and languages
AI and Transcription API is not available for all plans and languages. Check our pricing page to learn more about it.


If you are going to try some of the code examples make sure you have:

  • An Aircall account with access to AI and Transcription API
  • Transcription enabled on at least one phone number. See our help center article. for a full walkthrough
  • A valid OAuth access token or Basic Auth credentials

About AI insights data

Transcripts and insights are generated asynchronously after a call ends. Each data insight has a dedicated webhook and REST API endpoint. See the table below for orientation

⏲️ Timing📣 Webhook events📚 REST API Endpoints🚚 Payload
TranscriptionSeconds to minutes after the call depending on the call lengthtranscription.createdRetrieve transcriptionNOT Included in webhook
TopicsSeconds after the calltopics.createdRetrieve topicsIncluded in webhook
Action itemsSeconds after the callaction_item.createdRetrieve action itemsOne action item in each webhook.
SentimentsSeconds after the callsentiment.createdRetrieve SentimentsIncluded in webhook
☝️

Note on testing and mock calls.
Only recorded calls with an external participant produce a transcript. Internal-only calls, solo calls, and calls without recording enabled return no transcription data.

Webhooks setup

To receive Conversation Intelligence events, create a webhook that includes the events you need. Full tutorial on webhooks here. Example:

const createWebhook = async (accessToken) => {
   const response = await fetch('https://api.aircall.io/v1/webhooks', {
      method: 'POST',
      headers: {
         'Authorization': `Bearer ${accessToken}`,
         'Content-Type': 'application/json'
      },
      body: JSON.stringify({
         custom_name: 'YOUR_APP_NAME',
         url: 'https://your.server.com/aircall/webhook',
         events: ['transcription.created', 'sentiment.created', 'topics.created', 'action_item.created']
      })
   });

   const data = await response.json();

   if (!response.ok) {
      throw new Error(data.message || 'Failed to create webhook');
   }

   const webhookToken = data.webhook.token;
   return webhookToken;
};

Transcription

☝️

Not all languages are supported.
Check our help center article for more information

Transcription payload and delivery is a bit different from our standard webhook events due to the fact that transcriptions can be too big to be sent in a webhook and processing them might also take longer time.

Because of that, the recommended approach is

  1. Subscribe to transcription webhook. This webhook, with event name transcription.created, will notify you once the transcription is ready but it will come without the transcription payload. It will provide a Conversation intelligence object which will contain a call ID.
  2. Grab the call ID Retrieve the transcription use the transcription REST API endpoint. You can find an example of the payload in the API reference.

Sentiments

Sentiment analysis evaluates the overall mood of each external participant on the call. It returns a single value per participant — not a per-utterance breakdown. The data comes inside the webhooks but you can also fetch it with the API.

Possible values

POSITIVE

Satisfied, grateful, or happy

NEUTRAL

No strong positive or negative signals

NEGATIVE

Frustrated, dissatisfied, or upset

Topics

Aircall identifies the key subjects discussed during a call and returns them as an array of short descriptive strings — for example, "billing", "IVR setup", or "account migration". Same as sentiment, data is inside the webhook events but you can also fetch it using the API.

Key fieldsWhat it returns
topic.contentAn array of topic strings extracted from the call. Typically 3–5 items depending on the length and complexity of the conversation.

Topics are useful for routing, tagging, or categorizing calls in your integration. You could auto-tag calls in your CRM based on the topics returned, or build dashboards that track topic frequency across your team.

Action items

Action items are specific tasks or follow-ups extracted from the conversation — things like "send the pricing proposal" or "schedule a follow-up call for next Tuesday".

Action items are particularly valuable for CRM integrations. You can automatically create follow-up tasks from the actions Aircall extracts, ensuring nothing from the call falls through the cracks.

☝️

About Webhook deliveries
Unlike the other insight types, action items are delivered as one webhook event per action item — not as a single event containing the full list. If a call produces 4 action items, your endpoint receives 4 separate action_item.created events, each containing a single item in data.content


You can also fetch the data by sending a request to our REST API: GET /v1/calls/:call_id/action_items

Key fieldsWhat it returns
action_items[]Array of spoken segments, each containing:
  • id
Unique identifier for the action item.
  • content
The text describing the action to take.
  • ai_generated
true if the action item was extracted by AI, false if added manually by an agent.

Action Item webhook example

{
  "resource": "conversation_intelligence",
  "event": "action_item.created",
  "timestamp": 1725377226,
  "token": "abcdefghijklmnop123456",
  "data": {
    "id": "12345678",
    "call_id": "123456789",
    "call_uuid": "CAaeb06cacd3e82e839ed5b850df61a472",
    "content": "Create an engineering escalation ticket flagged as high priority for the webhook event delivery problem affecting customer's production workflow.",
    "number_id": 1144850,
    "created_at": "2026-04-28T11:53:45.815Z"
  }
}


Did this page help you?