Skip to main content

Aircall

This page contains the setup guide and reference information for the Aircall source connector. The connector reads calls, contacts, users, numbers, teams, conversations, campaigns and other company data from the Aircall Public API.

Prerequisites​

  • An Aircall account with the Admin role. Only Admins can open the Aircall Dashboard, where API keys are created (Users).
  • An Aircall API key, made of an API ID and an API token. The connector authenticates every request with Basic authentication, using the API ID as the username and the API token as the password.

Setup guide​

Step 1: Set up Aircall​

Create an Aircall API key:

  1. Log in to the Aircall Dashboard as an Admin.
  2. Go to Integrations & API > API Keys. Aircall's reference calls this the API Keys section of your company's settings.
  3. Click Add a new API key.
  4. Copy the API ID and the API token. Aircall doesn't store the token in plain text and can't show it again, so keep it somewhere safe. If you lose it, create a new key (Basic authentication).

Step 2: Set up the Aircall connector in Airbyte​

For Airbyte Cloud​

  1. Log in to your Airbyte Cloud account.
  2. In the left navigation bar, click Sources, then click New source.
  3. Select Aircall from the list of sources.
  4. Enter a name for the source.
  5. Enter your API ID and API Token.
  6. Optionally, set Window size (days), Contacts window size (days), Concurrent workers and Sync conversation intelligence (AI Assist). See Configuration options.
  7. Click Set up source.

For Airbyte Open Source​

  1. Open your Airbyte Open Source dashboard.
  2. In the left navigation bar, click Sources, then click New source.
  3. Select Aircall from the list of sources.
  4. Enter a name for the source.
  5. Enter your API ID and API Token.
  6. Optionally, set Window size (days), Contacts window size (days), Concurrent workers and Sync conversation intelligence (AI Assist). See Configuration options.
  7. Click Set up source.

Configuration options​

FieldRequiredDescription
API IDYesThe API ID of your Aircall API key.
API TokenYesThe API token shown with the API ID when you created the key.
Window size (days)NoDays of calls requested at a time, from 1 to 365. The default is 1. A window that holds more than 10,000 calls is split and partly read again, so a larger window only saves requests for companies with few calls. If a sync fails with could not split its request window, lower this setting. See 10,000-result limit.
Contacts window size (days)NoDays of newly created contacts requested at a time, from 1 to 365. The default is 30. Lower it if a sync fails with the 10,000-results error for contacts.
Concurrent workersNoNumber of parallel requests, from 1 to 4. The default is 2. All workers share one rate limit.
Sync conversation intelligence (AI Assist)NoAdds the six conversation intelligence streams. Off by default. They need the AI Assist or AI Assist Pro package and cost one request per call for each selected stream on every sync.

Connections created before version 0.5.0 also have a Start date. The connector no longer uses it, and the form hides it.

Supported sync modes​

The Aircall source connector supports the following sync modes:

FeatureSupported?
Full Refresh SyncYes
Incremental SyncYes
Replicate Incremental DeletesNo
SSL connectionYes
NamespacesNo

calls, conversations, conversation_engagements and the six conversation intelligence streams support incremental sync. Each incremental sync reads the last three days again, so use Incremental | Append + Deduped to keep one row per record.

  • calls uses started_at. Calls still in progress and edits made soon after a call reach the destination. Later edits to older calls, such as a tag added weeks later, arrive only with a Refresh and Retain Records sync. Clearing calls, a Refresh and Remove Records sync or an Overwrite mode deletes calls older than six months for good (see Six months of call history).
  • conversations uses the time of the last call or message. Closing, reopening or assigning a conversation without a new call or message doesn't change that time, so those changes arrive with the next activity or a full refresh.
  • conversation_engagements reads the engagements of the conversations that conversations returns, so incremental syncs read only conversations active since three days before the previous sync.
  • The conversation intelligence streams read the results of the calls that calls returns, so incremental syncs read only calls started since three days before the previous sync. Their cursor is call_started_at, the started_at of the call.

Every other stream is full refresh only. Aircall filters some of these lists, such as contacts, numbers and users, by creation date and none of them by update date, so an incremental sync would miss edits to existing records (List all Contacts, List all Numbers).

Supported Streams​

StreamSync modesPrimary keyPlan or add-on
call_action_itemsFull refresh, incrementalcall_id, idAI Assist or AI Assist Pro, opt-in
call_playbook_resultsFull refresh, incrementalidAI Assist Pro, opt-in
call_sentimentsFull refresh, incrementalidAI Assist or AI Assist Pro, opt-in
call_summariesFull refresh, incrementalidAI Assist or AI Assist Pro, opt-in
call_topicsFull refresh, incrementalidAI Assist or AI Assist Pro, opt-in
call_transcriptionsFull refresh, incrementalidAI Assist or AI Assist Pro, opt-in
callsFull refresh, incrementalidAll plans
campaign_outcomesFull refreshidOutbound Campaigns
campaignsFull refreshidOutbound Campaigns
companyFull refreshNoneAll plans
contactsFull refreshidAll plans
conversation_engagementsFull refresh, incrementalidConversations API
conversationsFull refresh, incrementalidConversations API
numbersFull refreshidAll plans
sms_templatesFull refreshidAll plans
tagsFull refreshidAll plans
teamsFull refreshidAll plans
trackersFull refreshidAI Assist or AI Assist Pro
user_availabilityFull refreshidAll plans
user_numbersFull refreshuser_id, idAll plans
usersFull refreshidAll plans
webhooksFull refreshwebhook_idAll plans
whatsapp_templatesFull refreshnumber_id, idNumbers registered for WhatsApp

Notes:

  • calls includes ivr_options_selected, the IVR options the caller chose (List all Calls). Aircall returns it only for calls from the last two months. Calls synced before version 1.1.0 get it only through a Refresh and Retain Records sync, and only for calls from the last two months. A refresh right after the upgrade loses nothing, because earlier versions never synced the field. A later refresh re-reads calls two to six months old without it, so in Incremental | Append + Deduped it empties the values synced for those calls while they were recent.
  • company has no primary key. Aircall returns a single company object with no identifier (Retrieve Company information).
  • contacts returns shared contacts only (List all Contacts).
  • users reads the User V2 API.
  • user_numbers returns the numbers each user is assigned to, with user_id identifying the user. It makes at least one request per user.
  • webhooks uses webhook_id, the UUID that identifies a webhook. Aircall treats the integer id as the old identifier (List all Webhooks).
  • conversation_engagements returns the calls, messages, WhatsApp messages, assignments, unassignments, closes and reopens of each conversation. The first sync and every full refresh make at least one request per conversation. Each incremental sync re-reads the engagements of every conversation active since three days before the previous sync, so syncing more often than daily repeats most of that work.
  • whatsapp_templates returns the templates of each number, with number_id identifying the number.

Limitations and troubleshooting​

10,000-result limit​

Aircall returns at most 10,000 calls, contacts, conversations or engagements for a single query, even with pagination (Pagination, List all Conversations). The connector works around it per stream:

  • calls are requested one day at a time by default (Window size (days)). A window with more than 10,000 calls is split into smaller time ranges and read again, so some of its calls are sent more than once; Incremental | Append + Deduped keeps one row per call.
  • contacts are requested 30 days of creation date at a time (Contacts window size (days)). If a sync fails with Aircall returns at most 10,000 contacts per request window, lower that setting. A single day with more than 10,000 new contacts can't be read.
  • conversations continue from the time of the last record after every 10,000 records.
  • conversation_engagements returns at most the newest 10,000 engagements of a conversation; older ones aren't synced.

Conversation intelligence​

The call_transcriptions, call_sentiments, call_topics, call_summaries, call_action_items and call_playbook_results streams exist only when Sync conversation intelligence (AI Assist) is on. They need the AI Assist or AI Assist Pro package; playbook results need AI Assist Pro (Conversation Intelligence). Without the package, a sync that selects them fails with Conversation intelligence needs the AI Assist or AI Assist Pro package, or with Playbook results need the AI Assist Pro package for call_playbook_results. Add the package, or deselect the streams your plan doesn't include. If you turn the option off, also refresh the source schema or deselect the six streams: a sync that still selects them reports them as incomplete.

Each selected stream reads the calls of the sync, reusing the calls responses already fetched in the same sync when the request matches, then makes one request per call. The first sync and every full refresh request every call Aircall keeps (six months). Each incremental sync requests the calls started since three days before the previous sync, so daily syncs request about four days of calls each time. All selected streams share the connector's rate limit of 100 requests per minute, so their times add up: each stream takes about an hour per 6,000 calls. For a company with 1,000 calls a day and daily syncs, each stream adds about 40 minutes to every sync and about 30 hours to the first sync; all six take about 4 hours per sync and about 180 hours (seven and a half days) for the first sync. In incremental sync modes, a first sync that stops early, after a failure or at the platform's sync time limit, resumes from its last checkpoint in the next sync and re-reads the three days of calls before it. In full refresh modes, the next sync starts again with all six months of calls. Select only the streams you need, and in incremental modes select one or two of them for the first sync and add the others in later syncs. Calls with no result, such as missed calls, are skipped with a log message.

Results that change after the call, such as edited action items, reach an incremental sync only while their call is within the three-day lookback. Later changes arrive only with a Refresh and Retain Records sync, as for calls.

Six months of call history​

Aircall keeps only six months of call history in the API (List all Calls). The connector reads calls from 365 days back on every full refresh and on the first incremental sync, which covers all the history Aircall keeps. Older calls aren't returned, so syncing calls in an Overwrite mode, clearing it, or running a Refresh and Remove Records sync deletes calls older than six months from the destination for good. Keep calls in Incremental | Append + Deduped, and use Refresh and Retain Records to re-read the last six months. In Incremental | Append + Deduped, that refresh empties ivr_options_selected for calls two to six months old, because Aircall returns it only for calls from the last two months. Copy the calls table before you clear it or change its sync mode.

Rate limit​

Aircall allows 120 requests per minute per company, shared by every API key and integration on your Aircall account (Rate limiting). Each sync uses at most 100 of them and, when Aircall rejects a request for exceeding the limit, waits until Aircall resets the counter. Raising Concurrent workers doesn't raise the limit. Aircall Support can raise the limit for your API keys. A higher limit saves the waits when your syncs and other integrations together exceed it, but a single sync still sends at most 100 requests per minute.

Streams that sync no records​

Some streams need an Aircall add-on or a specific number setup. When your company doesn't have it, Aircall refuses the requests, and the connector logs a message for each refused request instead of failing the sync:

StreamRequirement
conversations, conversation_engagementsThe Conversations API must be enabled for your company (List all Conversations). Without it, each sync still spends one request per 30 days since January 2014 on each of the two streams, about 157 each, so deselect both streams.
trackersThe AI Assist or AI Assist Pro package (List all Trackers).
whatsapp_templatesOnly numbers registered for WhatsApp return templates (List WhatsApp Templates).

If a sync fails with Aircall rejected the API ID and API token or Aircall returned HTTP 403, the API key is wrong or was deleted, or your Aircall plan doesn't include that data. Create a new API key and update the source, or check your plan. For the conversation intelligence streams, see Conversation intelligence.

Upgrading to 1.0.0​

Version 1.0.0 adds primary keys to calls and contacts, changes the webhooks primary key to webhook_id, makes numbers and teams full refresh only, and changes several column types. Some destinations need a step before you upgrade or before the first 1.0.0 sync: ClickHouse for Full Refresh | Append users (Before you upgrade) and Snowflake for append-mode calls (If you keep an append-mode calls table). After upgrading, refresh the source schema and switch numbers and teams from an Incremental mode to Full Refresh | Overwrite. Clearing calls or switching it to an Overwrite mode deletes calls older than six months for good. Follow the migration guide.

IP allow list​

If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.

Reference​

Config fields reference

Field
Type
Property name
string
api_id
string
api_token
integer
contacts_window_in_days
integer
num_workers
string
start_date
integer
window_in_days

Changelog​

Expand to review
VersionDatePull RequestSubject
1.1.02026-11-1192012Add user_numbers, IVR options on calls and opt-in conversation intelligence streams
1.0.02026-11-1190838Add primary keys to calls and contacts, key webhooks on webhook_id, make numbers and teams full refresh only, and declare the column types the Aircall API documents
0.6.12026-11-1091341Update dependencies
0.6.02026-11-0990837Add conversations, conversation_engagements, campaigns, campaign_outcomes, trackers, sms_templates and whatsapp_templates streams
0.5.02026-11-0990835Read calls incrementally in daily windows that split at Aircall's 10,000-result limit, read contacts in date windows, honour Aircall's rate limit, declare user_availability id and availability, and read numbers and teams once per sync
0.4.272026-10-1388524Update dependencies
0.4.262026-10-0687742Update dependencies
0.4.252026-09-2987057Update dependencies
0.4.242026-09-2385909Migrate the users stream to the Aircall User V2 API ahead of the V1 sunset and add pagination
0.4.232026-09-2286517Update dependencies
0.4.222026-09-1585956Update dependencies
0.4.212026-09-0885381Update dependencies
0.4.202026-08-1884505Update dependencies
0.4.192026-08-1183832Update dependencies
0.4.182026-08-0483374Update dependencies
0.4.172026-07-2882810Update dependencies
0.4.162026-07-2182307Update dependencies
0.4.152026-07-1481718Update dependencies
0.4.142026-06-3080992Update dependencies
0.4.132026-06-2380364Update dependencies
0.4.122026-06-1679750Update dependencies
0.4.112026-06-0979207Update dependencies
0.4.102026-06-0278574Update dependencies
0.4.92026-04-2877183Update dependencies
0.4.82026-04-2176490Update dependencies
0.4.72026-03-1774979Update dependencies
0.4.62026-02-1073001Update dependencies
0.4.52026-01-2772373Update dependencies
0.4.42026-01-1471503Update dependencies
0.4.32025-12-0270282Update dependencies
0.4.22025-10-2965055Update dependencies
0.4.12025-09-1266197Update to CDK v7
0.4.02024-08-2344597Refactor connector to manifest-only format
0.3.02024-08-1944437Fix pagination
0.2.122024-08-1743879Update dependencies
0.2.112024-08-1043482Update dependencies
0.2.102024-08-0343101Update dependencies
0.2.92024-07-2742743Update dependencies
0.2.82024-07-2042357Update dependencies
0.2.72024-07-1341708Update dependencies
0.2.62024-07-1041448Update dependencies
0.2.52024-07-0941156Update dependencies
0.2.42024-07-0640801Update dependencies
0.2.32024-06-2540503Update dependencies
0.2.22024-06-2139920Update dependencies
0.2.22024-06-2039681Update dependencies
0.2.12024-06-0638454[autopull] base image + poetry + up_to_date
0.2.02023-06-20Correcting availablity typoCorrecting availablity typo
0.1.02023-04-19InitInitial commit