# Aircall

> **Info: Paid tier**
>
> Call recording and analysis require a paid tier (recording seat). Not available on the Discovery plan.

### What It Does

Aircall sends your reps' **completed calls**, their **recordings** and **post-call notes** to DURUM.ai in real time. Each call is tied to the right rep, and the recording is downloaded, transcribed and analysed by the DURUM.ai call pipeline.

Aircall does not feed leads, bookings or sales: this integration is about calls only. A safety net re-reads the Aircall API every hour to catch any call the webhook may have missed.

### Before You Start

- An Aircall account with access to the **Dashboard** and the right to generate an API key (**Integrations & API** section).
- Your reps created in DURUM.ai with **the same email as their Aircall account**. That email is what ties each call to the right rep. A rep can also declare their Aircall line number or Aircall user ID in **Profile**, **Call Tracking** section.
- A **recording** seat assigned to each rep whose recordings you want processed. A rep without a seat still has their calls tied and visible, but their recordings are not processed.

### Step-by-Step Connection

1. In Aircall, open the **Dashboard**, then **Integrations & API**, then **API Keys**.
2. Click **Generate an API key**. Copy the **API ID** and the **API Token**.
3. In DURUM.ai, go to **Settings** then **Integrations**, and click **Connect** on the **Aircall** card (Calls category).
   - If DURUM.ai redirects you to Aircall, authorize the app: that is the one-click connection.
   - Otherwise, a **Connect Aircall** window opens: paste the **API ID** and the **API Token**, then click **Connect**. Both modes do exactly the same thing.
4. DURUM.ai validates the access, then:
   - creates in your Aircall account a webhook named **DURUM.ai** pointing to `https://app.durum.ai/api/webhook/aircall-recording`, subscribed to the `call.ended`, `call.commented` and `call.comm_assets_generated` events;
   - imports your Aircall agents and lines: every agent whose email matches a DURUM.ai rep is linked, and every line assigned to a single linked agent is tied to that rep by its number. Lines shared between several agents are not tied.
5. The message "Aircall connected: company name, X/Y agents linked" confirms the connection.

#### If the webhook could not be created

The connection is still saved. Open the Aircall integration settings: DURUM.ai shows the URL to paste by hand.

1. In the **Aircall Dashboard**, open **Integrations**, then **Webhooks**, then **Create Webhook**.
2. Paste the URL shown by DURUM.ai into the **Webhook URL** field.
3. Select the `call.ended`, `call.comm_assets_generated` and `call.commented` events.
4. Save.

### Verify It Works

1. Place a test call from an Aircall line of a linked rep, with recording turned on.
2. Hang up and wait about a minute.
3. In DURUM.ai, open **Data Logs**: a `call.ended` event with source `aircall` should appear with status `processed` and a matched rep.
4. In the **Calls** section, the call record appears, then the recording and transcript a few minutes later.

### Captured Events

| Aircall side | What DURUM.ai creates | What it feeds |
|--------------|-----------------------|---------------|
| `call.ended` | A call record: direction (inbound or outbound), status, duration, agent, Aircall line used, contact (number, email, name), tags. If the recording link is already present, the recording is created at the same time. | Calls section, rep attribution. |
| `call.comm_assets_generated` | The call recording (MP3 link), when Aircall provides it after the call ends. | Download, transcription, analysis. |
| `call.commented` | The note added by the agent, attached to the existing call record. | Call record. |
| Any other Aircall event | none | Received then ignored. |

Two mechanisms complement the webhook:

- **Hourly catch-up**: every hour, DURUM.ai re-reads the calls of the last 26 hours through the Aircall API and adds the missing ones (webhook down, lost event, recording arriving late).
- **Recording download**: every 3 minutes, DURUM.ai downloads pending recordings. Aircall links expire after one hour; if the link has expired, DURUM.ai requests a fresh one from the API.

> **Warning: Recording seat**
>
> A recording is only processed if the matched rep holds a recording seat. Otherwise the call stays visible but the recording is parked with status `skipped_unpaid_seat`. As soon as the seat is activated, parked recordings resume automatically.

### Troubleshooting

| Problem | Solution |
|---------|----------|
| "Invalid Aircall credentials" | Check the API ID and API Token in the Aircall Dashboard, **Integrations & API**, **API Keys**. Generate a new key if needed. |
| "Invalid format" at connection | Copy the API ID and API Token as they are, with no space or colon. |
| "Too many attempts on the Aircall side" | Wait 1 minute and try again. |
| Status `rejected` with "Invalid Aircall webhook token" in Data Logs | The Aircall webhook token is not registered on the DURUM.ai side. Contact your account manager. |
| Call received but no rep matched | The Aircall agent's email matches no rep. Align the rep's email in DURUM.ai, or declare their Aircall identity (line or user ID) in **Profile**, **Call Tracking**. |
| "X/Y agents linked" with X lower than Y | Unlinked agents have no rep with the same email in DURUM.ai. Create or fix the reps, then disconnect and reconnect to rerun the import. |
| Recording parked (`skipped_unpaid_seat`) | The rep has no recording seat. Assign one: the recording is processed on the next pass. |
| Recording missing from the record | Aircall sometimes sends the link after `call.ended`, in `call.comm_assets_generated`. Otherwise the hourly catch-up picks it up. Also check that recording is enabled on the Aircall line. |
| Shared line, calls misattributed | A line assigned to several agents is not tied by number. Attribution then relies on the email or user ID of the agent who took the call. |

### FAQ

**Why an API key rather than a one-click connection?**

The **Connect** button tries the one-click connection first. If it is not available, the API key window opens. Both modes create the same webhook and run the same agent import.

**Does the API key expire?**

No. It is encrypted in DURUM.ai and stays valid until you revoke it in Aircall.

**Does Aircall create leads or bookings?**

No. Aircall only feeds the Calls section and the attribution of calls to reps.

**What happens on disconnect?**

DURUM.ai only removes the webhook pointing to `app.durum.ai/api/webhook/aircall-recording`. Your other Aircall webhooks are never touched.

**Missed calls and voicemails?**

Every completed call creates a record, with its Aircall status (answered, missed, voicemail). A recording is only created if Aircall provides a link.

---

---

Source: https://docs.durum.ai/en/integrations/aircall
