Skip to main content

Aircall

This connector captures data from Aircall into Estuary collections.

Supported data resources​

The following data resources are supported:

ResourceReplication Mode
callsIncremental
companyFull Refresh
contactsIncremental
numbersFull Refresh
tagsFull Refresh
teamsFull Refresh
user_availabilityFull Refresh
usersFull Refresh
webhooksFull Refresh

By default, each resource is mapped to an Estuary collection through a separate binding.

tip

Aircall limits every list request to 10,000 results. The connector requests calls in time windows that each stay under that limit, so accounts with any number of calls can be captured in full.

Calls keep changing after they start: they are ended, tagged, commented, assigned, and gain recordings. The connector re-reads each call 24 hours after it started to capture those changes. Changes made more than 24 hours later are only captured by backfilling the calls binding, which can be scheduled with the schedule resource config setting. calls has no schedule by default, since each backfill re-reads up to six months of calls.

Aircall only serves the last six months of calls through its API, so calls is backfilled from the later of the configured start date and roughly six months ago. The recording and voicemail links on calls are signed URLs that expire within a few hours of being captured. Each call's contact holds only the id of the matching contact in the contacts collection. Aircall matches it by phone number when the call is read, so it reflects contacts that existed when the call was last captured.

tip

The contacts stream re-captures all contacts with periodic backfills. These backfills can be scheduled with the schedule resource config setting. By default, contacts's schedule is 0 0 * * *, which means the stream attempts to backfill every day at 00:00 UTC. If more than 10,000 contacts change between two polls, the connector re-reads every contact to capture them.

Aircall doesn't expose deleted contacts, so contacts deleted in Aircall remain in the collection. Only shared contacts are available through the Aircall API; users' personal contacts are not captured.

Prerequisites​

To set up the Aircall source connector, you'll need an Aircall API ID and API token. Creating API keys requires an Aircall admin account.

Configuration​

You configure connectors either in the Estuary web app, or by directly editing the catalog specification file. See connectors to learn more about using connectors. The values and specification sample below provide configuration details specific to the Aircall source connector.

Properties​

Endpoint​

PropertyTitleDescriptionTypeRequired/Default
/credentials/api_idAPI IDThe Aircall API ID.stringRequired
/credentials/api_tokenAPI TokenThe Aircall API token.stringRequired
/credentials/credentials_titleAuthentication MethodName of the credentials set. Set to API Token.stringRequired
/start_dateStart DateUTC date and time in the format YYYY-MM-DDTHH:MM:SSZ. Calls started before this date will not be replicated. Aircall only serves the last six months of calls, so earlier dates are clamped to that horizon. Other streams capture all of their data regardless of this date. If left blank, the start date will be set to 30 days before the present date.string

Bindings​

PropertyTitleDescriptionTypeRequired/Default
/nameData resourceName of the data resource.stringRequired
/intervalIntervalInterval between data syncs.string
/scheduleBackfill scheduleThe schedule for automatically backfilling this binding. Accepts a cron expression. For example, a schedule of 0 0 * * * means the binding will initiate a new backfill at 00:00 UTC every day. If left empty, the binding will not automatically backfill.string

Sample​

captures:
${PREFIX}/${CAPTURE_NAME}:
endpoint:
connector:
image: ghcr.io/estuary/source-aircall-native:v1
config:
credentials:
credentials_title: API Token
api_id: <secret>
api_token: <secret>
start_date: 2026-04-01T00:00:00Z
bindings:
- resource:
name: calls
target: ${PREFIX}/calls
- resource:
name: contacts
schedule: 0 0 * * *
target: ${PREFIX}/contacts
- resource:
name: users
target: ${PREFIX}/users
{...}

Webhook signing tokens​

The webhooks stream omits each webhook's token, which is the secret Aircall uses to sign the events it sends to that webhook.