> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Aircall

The Aircall connector lets your AI agent act in each user's Aircall account. Each user signs in to Aircall once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 78 tools.

**Authentication:** OAuth 2.0
**Categories:** Communication, Customer Support
**Tools:** 78: 43 read, 28 write, 7 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Aircall app
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=AIRCALL)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Aircall connection

   In **AgentKit > Connections**, create an Aircall connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Aircall connections use your own OAuth app. Register one with Aircall and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Aircall connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'aircall'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Aircall:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'aircall_calls_list',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "aircall"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Aircall:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="aircall_calls_list",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'aircall_analytics_export_get',
  toolInput: {
    export_id: '<export_id>',
  },
  connector: 'aircall',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="aircall_analytics_export_get",
    tool_input={
        "export_id": "<export_id>",
    },
    connection_name="aircall",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `aircall_analytics_export_get`

Get Analytics Export · Read-only

Get the status of an Analytics report export and, once completed, a time-limited download URL for the CSV.
Returns status (PENDING, COMPLETED or FAILED), downloadUrl and downloadUrlExpiresAt when completed, or errorMessage when failed.
Use aircall_analytics_export_get to poll about once a minute after aircall_analytics_export_create. Call it again to get a fresh URL after the old one expires.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `export_id` (`string`, required): UUID of the export job, from aircall_analytics_export_create's exportID. Example: 9d3f2a1e-2b6c-4f0a-9c3e-1a2b3c4d5e6f

Example input: `{"export_id":"<export_id>"}`

### `aircall_call_action_items_get`

Get Call Action Items · Read-only

Get the action items AI extracted from a call. Requires the Aircall AI Assist or AI Assist Pro package.
Returns action_items with id, call_id, created_at, created_by, updated_at and content.
Use aircall_call_action_items_get for follow-ups to log after a call.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_custom_summary_result_get`

Get Call Custom Summary Result · Read-only

Get the result of the company's custom summary template for a call. Requires the AI Assist Pro package.
Returns the custom summary result for the call.
Use aircall_call_custom_summary_result_get when the company uses custom summary templates. Use aircall_call_summary_get for the standard summary.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_evaluations_get`

Get Call Evaluations · Read-only

Get the AI call evaluations (scorecards with question-level scores and feedback) for a call. Requires the Aircall AI Assist or AI Assist Pro package.
Returns the call's evaluations.
Use aircall_call_evaluations_get for quality-review scores. Use aircall_call_playbook_result_get for playbook adherence.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_get`

Get Call · Read-only

Get one call by ID with its duration, direction, status, timestamps, recording, voicemail, comments, tags and participants.
Returns the call object.
Use aircall_call_get when you know the call ID. Use aircall_calls_list or aircall_calls_search to find calls.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812
- `fetch_aiva_conv` (`boolean`, optional): Set to true to include ai_voice_agents (the AI Voice Agent segments that handled the call) on each call. Default: false.
- `fetch_call_timeline` (`boolean`, optional): Set to true to include ivr_options_selected (the IVR options the caller pressed) on each call. Default: false.
- `fetch_contact` (`boolean`, optional): Set to true to include the matched contact's details in each call. Default: false.
- `fetch_short_urls` (`boolean`, optional): Set to true to include short URLs (for example for recordings and voicemails) in the response. Default: false.

Example input: `{"call_id":812}`

### `aircall_call_playbook_result_get`

Get Call Playbook Result · Read-only

Get the playbook result for a call: how the agent followed the company's call playbook. Requires the AI Assist Pro package.
Returns the playbook result, and the playbook details when fetch_playbook is true.
Use aircall_call_playbook_result_get for playbook adherence. Use aircall_call_evaluations_get for scored call evaluations.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812
- `fetch_playbook` (`boolean`, optional): Set to true to include the playbook's details in the response. Default: false.

Example input: `{"call_id":812}`

### `aircall_call_predicted_csat_get`

Get Call Predicted CSAT · Read-only

Get the AI-predicted customer satisfaction (CSAT) score for a call. Requires the Aircall AI Assist or AI Assist Pro package.
Returns the predicted CSAT result for the call.
Use aircall_call_predicted_csat_get for a satisfaction estimate. Use aircall_call_sentiments_get for per-participant sentiment.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_sentiments_get`

Get Call Sentiments · Read-only

Get the AI sentiment analysis of a call's participants. Requires the Aircall AI Assist or AI Assist Pro package.
Returns sentiment with id, call_id and participants[] with their sentiment value.
Use aircall_call_sentiments_get for sentiment. Use aircall_call_predicted_csat_get for a predicted satisfaction score.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_summary_get`

Get Call Summary · Read-only

Get the AI-generated summary of a call. Requires the Aircall AI Assist or AI Assist Pro package.
Returns summary with id, call_id, created_at and content.
Use aircall_call_summary_get for a short recap. Use aircall_call_custom_summary_result_get for a custom-template summary, and aircall_call_transcription_get for the full text.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_topics_get`

Get Call Topics · Read-only

Get the key topics AI detected in a call. Requires the Aircall AI Assist or AI Assist Pro package.
Returns topics with id, call_id, created_at and content (the list of topics).
Use aircall_call_topics_get to see what a call was about.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_transcription_get`

Get Call Transcription · Read-only

Get the transcription of a call or voicemail after it has ended. Requires the Aircall AI Assist or AI Assist Pro package.
Returns transcription with id, call_id, type, call_created_at and content (utterances with speaker, timing and text).
Use aircall_call_transcription_get for the full text. Use aircall_call_summary_get for a short summary.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812
- `mode` (`string`, optional): Transcription mode: async (post-call transcription) or realtime (requires AI Assist Pro). Omit for the default. One of: `async`, `realtime`.

Example input: `{"call_id":812}`

### `aircall_calls_list`

List Calls · Read-only

List the company's calls from the last six months, optionally limited to a creation date range.
Returns calls[] with id, direction, status, duration, started_at, answered_at, ended_at, raw_digits, user, number, recording, voicemail, comments and tags, plus pagination meta.
Use aircall_calls_list to browse recent calls (set order=desc for the latest first). Use aircall_calls_search to filter by user, phone number or direction, and aircall_call_get for one call.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `fetch_aiva_conv` (`boolean`, optional): Set to true to include ai_voice_agents (the AI Voice Agent segments that handled the call) on each call. Default: false.
- `fetch_call_timeline` (`boolean`, optional): Set to true to include ivr_options_selected (the IVR options the caller pressed) on each call. Default: false.
- `fetch_contact` (`boolean`, optional): Set to true to include the matched contact's details in each call. Default: false.
- `fetch_short_urls` (`boolean`, optional): Set to true to include short URLs (for example for recordings and voicemails) in the response. Default: false.
- `from` (`string`, optional): Only return calls created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `to` (`string`, optional): Only return calls created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).

Example input: `{}`

### `aircall_calls_search`

Search Calls · Read-only

Search the company's calls from the last six months by user, phone number, direction or creation date range.
Returns matching calls[] with the same fields as aircall_calls_list, plus pagination meta.
Use aircall_calls_search to filter calls. Use aircall_calls_list to browse all calls.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `direction` (`string`, optional): Only return calls in this direction: inbound or outbound. One of: `inbound`, `outbound`.
- `fetch_aiva_conv` (`boolean`, optional): Set to true to include ai_voice_agents (the AI Voice Agent segments that handled the call) on each call. Default: false.
- `fetch_call_timeline` (`boolean`, optional): Set to true to include ivr_options_selected (the IVR options the caller pressed) on each call. Default: false.
- `fetch_contact` (`boolean`, optional): Set to true to include the matched contact's details in each call. Default: false.
- `fetch_short_urls` (`boolean`, optional): Set to true to include short URLs (for example for recordings and voicemails) in the response. Default: false.
- `from` (`string`, optional): Only return calls created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `phone_number` (`string`, optional): Only return calls to or from this phone number. Example: +18001231234
- `to` (`string`, optional): Only return calls created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).
- `user_id` (`integer`, optional): Only return calls made or received by this user ID. Example: 456

Example input: `{}`

### `aircall_campaign_call_outcomes_list`

List Campaign Call Outcomes · Read-only

List the latest call attempt and recorded outcome for each contact in an Outbound Campaign.
Returns call_outcomes[] with id, call_id, phone_number, attempt_number, max_attempts, is_final, status, duration, outcome and timestamps, plus meta.next_cursor.
Use aircall_campaign_call_outcomes_list to log campaign results in a CRM. Use aircall_campaign_stats_get for totals.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3
- `cursor` (`string`, optional): Opaque cursor from the previous response's meta.next_cursor, to fetch the next page. Omit it for the first page. Cursors are not interchangeable between endpoints.
- `per_page` (`integer`, optional): Number of results per page, up to 50 (higher values are capped at 50). Default: 20. Default: `20`.

Example input: `{"campaign_id":"<campaign_id>"}`

### `aircall_campaign_contacts_list`

List Campaign Contacts · Read-only

List the contacts in an Outbound Campaign's call queue, or look up one contact by phone number.
Returns contacts[] with phone_number, first_name, last_name, email, company_name and note, plus meta.next_cursor.
Use aircall_campaign_contacts_list to see who a campaign will call. Use aircall_campaign_call_outcomes_list for call results.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3
- `cursor` (`string`, optional): Opaque cursor from the previous response's meta.next_cursor, to fetch the next page. Omit it for the first page. Cursors are not interchangeable between endpoints.
- `per_page` (`integer`, optional): Number of results per page, up to 50 (higher values are capped at 50). Default: 20. Default: `20`.
- `phone_number` (`string`, optional): Return only the contact with this phone number. Example: 33612345678

Example input: `{"campaign_id":"<campaign_id>"}`

### `aircall_campaign_get`

Get Campaign · Read-only

Get one Outbound Campaign by ID with its status, run mode, caller ID strategy, retry settings and calling hours.
Returns the campaign object.
Use aircall_campaign_get when you know the campaign ID. Use aircall_campaigns_list to find campaigns.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3

Example input: `{"campaign_id":"<campaign_id>"}`

### `aircall_campaign_outcomes_list`

List Campaign Outcomes · Read-only

List the company's catalogue of custom Campaign Outcomes (disposition labels shared by every Outbound Campaign).
Returns campaign_outcomes[] with id, name, color, created_at and updated_at, plus meta.next_cursor.
Use aircall_campaign_outcomes_list to resolve the custom outcome ids that aircall_campaign_call_outcomes_list returns.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Opaque cursor from the previous response's meta.next_cursor, to fetch the next page. Omit it for the first page. Cursors are not interchangeable between endpoints.
- `per_page` (`integer`, optional): Number of results per page, up to 50 (higher values are capped at 50). Default: 20. Default: `20`.
- `search` (`string`, optional): Only return outcomes whose name contains this text (case-insensitive). Example: callback

Example input: `{}`

### `aircall_campaign_stats_get`

Get Campaign Stats · Read-only

Get progress statistics for an Outbound Campaign. Computed on read; poll at most once a minute.
Returns stats with total_contacts, completed_percentage, connected_contacts, average_call_duration, active_time, active_at and active_calls_count.
Use aircall_campaign_stats_get for totals. Use aircall_campaign_call_outcomes_list for per-contact results.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3

Example input: `{"campaign_id":"<campaign_id>"}`

### `aircall_campaigns_list`

List Campaigns · Read-only

List the company's Outbound Campaigns, optionally filtered by status, name or creator.
Returns campaigns[] with id, name, description, status, run_mode, agent_type and dialing settings, plus meta.next_cursor for the next page.
Use aircall_campaigns_list to find a campaign. Use aircall_campaign_get for one campaign and aircall_campaign_stats_get for its progress.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `created_by` (`string`, optional): Only return campaigns created by these Aircall user IDs, comma-separated. Example: 456,457
- `cursor` (`string`, optional): Opaque cursor from the previous response's meta.next_cursor, to fetch the next page. Omit it for the first page. Cursors are not interchangeable between endpoints.
- `name` (`string`, optional): Only return campaigns whose name contains this text (case-insensitive). Example: Q3
- `per_page` (`integer`, optional): Number of results per page, up to 50 (higher values are capped at 50). Default: 20. Default: `20`.
- `status` (`string`, optional): Only return campaigns in these statuses, comma-separated: draft, in_progress, paused, completed, archived. Example: in_progress,paused

Example input: `{}`

### `aircall_company_get`

Get Company · Read-only

Get the Aircall company (account) the connection belongs to.
Returns the company with its name, users_count and numbers_count.
Use aircall_company_get to confirm which Aircall account is connected.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `aircall_contact_get`

Get Contact · Read-only

Get one shared contact by ID.
Returns the contact with id, first_name, last_name, company_name, information, phone_numbers[] and emails[].
Use aircall_contact_get when you know the contact ID. Use aircall_contacts_search to find one by phone or email.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719

Example input: `{"contact_id":719}`

### `aircall_contacts_list`

List Contacts · Read-only

List the company's shared Aircall contacts with their phone numbers and emails.
Returns contacts[] with id, first_name, last_name, company_name, information, phone_numbers[] and emails[], plus pagination meta.
Use aircall_contacts_list to browse contacts. Use aircall_contacts_search to find a contact by phone number or email, and aircall_contact_get for one contact.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): Only return contacts created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `order_by` (`string`, optional): Field to sort by: created_at or updated_at. Default: created_at. One of: `created_at`, `updated_at`. Default: `created_at`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `to` (`string`, optional): Only return contacts created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).

Example input: `{}`

### `aircall_contacts_search`

Search Contacts · Read-only

Search the company's shared contacts by phone number or email address.
Returns matching contacts[] with the same fields as aircall_contacts_list, plus pagination meta.
Use aircall_contacts_search to look up a caller. Use aircall_contacts_list to browse all contacts.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `email` (`string`, optional): Email address of the contact to find. Example: gary.jennings@example.com
- `from` (`string`, optional): Only return contacts created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `order_by` (`string`, optional): Field to sort by: created_at or updated_at. Default: created_at. One of: `created_at`, `updated_at`. Default: `created_at`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `phone_number` (`string`, optional): Phone number of the contact to find. Example: +19001112222
- `to` (`string`, optional): Only return contacts created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).

Example input: `{}`

### `aircall_dialer_campaign_get`

Get Dialer Campaign · Read-only

Get a user's active Power Dialer campaign. A user has at most one.
Returns id, number_id and created_at, or 404 when the user has no active campaign.
Use aircall_dialer_campaign_get to check for a campaign. Use aircall_dialer_campaign_phone_numbers_list for its numbers. Power Dialer campaigns are separate from Outbound Campaigns (aircall_campaigns_list).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"user_id":456}`

### `aircall_dialer_campaign_phone_numbers_list`

List Dialer Campaign Phone Numbers · Read-only

List the phone numbers in a user's active Power Dialer campaign.
Returns numbers[] with id, number, called and created_at.
Use aircall_dialer_campaign_phone_numbers_list to see progress or find a number id to remove.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"user_id":456}`

### `aircall_integration_get`

Get Integration · Read-only

Get the Aircall integration behind this OAuth connection: its name, status, connected numbers and the admin who installed it.
Returns integration with name, custom_name, status, active, company_id, number_ids, numbers_count and user.
Use aircall_integration_get to check which numbers this connection has access to. Works with OAuth connections only.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `aircall_number_get`

Get Number · Read-only

Get one Aircall number by ID, including its settings and assigned users.
Returns the number with id, name, digits, country, time_zone, live_recording_activated, priority, messages and users[].
Use aircall_number_get when you know the number ID. Use aircall_numbers_list to find numbers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `number_id` (`integer`, required): Unique Aircall ID of the number. Example: 673

Example input: `{"number_id":673}`

### `aircall_number_registration_status_get`

Get Number Registration Status · Read-only

Get a number's US messaging compliance registration status (A2P 10DLC, or toll-free registration in the US and Canada).
Returns status and updatedAt.
Use aircall_number_registration_status_get to check whether a US number can send SMS before using aircall_message_send.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `number_id` (`integer`, required): Unique Aircall ID of the number. Example: 673

Example input: `{"number_id":673}`

### `aircall_numbers_list`

List Numbers · Read-only

List the company's Aircall phone numbers (lines).
Returns numbers[] with id, name, digits, country, time_zone, live_recording_activated, priority and messages, plus pagination meta.
Use aircall_numbers_list to find a number ID for messaging or calls. Use aircall_number_get for one number, and aircall_user_numbers_list for one user's numbers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): Only return numbers created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `to` (`string`, optional): Only return numbers created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).

Example input: `{}`

### `aircall_sms_templates_list`

List SMS Templates · Read-only

List the company's saved SMS templates, across all agents, optionally filtered by text.
Returns templates[] with each template's name and body, plus pagination meta.
Use aircall_sms_templates_list to reuse approved wording in aircall_message_send. Use aircall_whatsapp_templates_list for WhatsApp templates.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of templates per page, up to 100. Default: 20. Default: `20`.
- `search` (`string`, optional): Free-text search across template name and body (case- and accent-insensitive). Example: follow-up

Example input: `{}`

### `aircall_tag_get`

Get Tag · Read-only

Get one call tag by ID.
Returns the tag with id, name, color and description.
Use aircall_tag_get when you know the tag ID. Use aircall_tags_list to find tags.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tag_id` (`integer`, required): Unique Aircall ID of the tag. Example: 545

Example input: `{"tag_id":545}`

### `aircall_tags_list`

List Tags · Read-only

List the call tags defined in the company.
Returns tags[] with id, name, color and description, plus pagination meta.
Use aircall_tags_list to find tag IDs for aircall_call_tags_add. Use aircall_tag_get for one tag.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.

Example input: `{}`

### `aircall_team_get`

Get Team · Read-only

Get one Aircall team by ID.
Returns the team with id, name, created_at and its users[].
Use aircall_team_get when you know the team ID. Use aircall_teams_list to find teams.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `team_id` (`integer`, required): Unique Aircall ID of the team. Example: 678

Example input: `{"team_id":678}`

### `aircall_teams_list`

List Teams · Read-only

List the teams in the Aircall company with their members.
Returns teams[] with id, name, created_at and users[], plus pagination meta.
Use aircall_teams_list to find a team_id (for example for aircall_call_transfer). Use aircall_team_get for one team.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.

Example input: `{}`

### `aircall_tracker_get`

Get Tracker · Read-only

Get one Tracker and the calls that currently match its filters. Requires the Aircall AI Assist or AI Assist Pro package.
Returns the tracker and calls[] with call_id, start_time, duration_seconds and direction, plus meta.next_token for the next page.
Use aircall_tracker_get to find calls where tracked keywords came up. Use aircall_trackers_list to find trackers.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `tracker_id` (`integer`, required): Unique Aircall ID of the Tracker. Example: 321
- `agent_ids` (`string`, optional): Only match calls handled by these user IDs, comma-separated. Example: 123,456
- `direction` (`string`, optional): Only match calls in this direction: inbound or outbound. One of: `inbound`, `outbound`.
- `end_time` (`integer`, optional): Only match calls before this time, as a Unix timestamp in milliseconds. Defaults to now and can't be in the future. Example: 1767830400000
- `limit` (`integer`, optional): Number of matched calls per page, up to 50. Default: 20. Default: `20`.
- `line_ids` (`string`, optional): Only match calls on these number (line) IDs, comma-separated. Example: 673,719
- `next_token` (`string`, optional): Pagination cursor: the meta.next_token value from the previous response.
- `start_time` (`integer`, optional): Only match calls after this time, as a Unix timestamp in milliseconds. Defaults to 7 days before end_time. Example: 1767225600000

Example input: `{"tracker_id":321}`

### `aircall_trackers_list`

List Trackers · Read-only

List the conversation Trackers (keyword and phrase monitors) configured for the company. Requires the Aircall AI Assist or AI Assist Pro package.
Returns trackers with id, title, type, filters and query terms.
Use aircall_trackers_list to find a tracker_id. Use aircall_tracker_get to see the calls that match a tracker.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `aircall_user_availability_get`

Get User Availability · Read-only

Get the current detailed availability of one user, as shown in the Dashboard activity feed.
Returns availability: available, offline, do_not_disturb, in_call or after_call_work.
Use aircall_user_availability_get for one user. Use aircall_users_availabilities_list for everyone.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"user_id":456}`

### `aircall_user_get`

Get User · Read-only

Get one Aircall user by user ID or email address.
Returns the user with id, name, email, availability_status, substatus, time_zone, language and wrap_up_time.
Use aircall_user_get when you know the user. Use aircall_users_list to find users.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`string`, required): Unique Aircall ID of the user, or the user's email address. Example: 456 or john.doe@example.com

Example input: `{"user_id":"<user_id>"}`

### `aircall_user_numbers_list`

List User Numbers · Read-only

List the Aircall phone numbers (lines) a user is assigned to.
Returns numbers[] with id, name, digits, country and time_zone.
Use aircall_user_numbers_list to find which number_id a user can call from (for aircall_user_call_start). Use aircall_numbers_list for every number in the company.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.

Example input: `{"user_id":456}`

### `aircall_users_availabilities_list`

List Users Availabilities · Read-only

List the current detailed availability of every user in the company.
Returns users[] with id and availability (available, offline, do_not_disturb, in_call or after_call_work).
Use aircall_users_availabilities_list to see who can take a call now. Use aircall_user_availability_get for a single user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): Only return users created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `to` (`string`, optional): Only return users created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).

Example input: `{}`

### `aircall_users_list`

List Users · Read-only

List the users (admins and agents) in the Aircall company, with their availability status, time zone and language.
Returns users[] with id, name, email, available, availability_status and substatus, plus pagination meta.
Use aircall_users_list to browse users. Use aircall_user_get for one user by ID or email, and aircall_users_availabilities_list for live availability of every user.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, optional): Only return users created at or after this time, as a UNIX timestamp in seconds. Example: 1704067200 (2024-01-01).
- `order` (`string`, optional): Sort order by creation date: asc (oldest first) or desc (newest first). Default: asc. One of: `asc`, `desc`. Default: `asc`.
- `page` (`integer`, optional): Page number of results to return, starting at 1. Aircall returns meta.next_page_link when more pages exist. Default: 1. Default: `1`.
- `per_page` (`integer`, optional): Number of results per page, between 1 and 50. Default: 20. Default: `20`.
- `to` (`string`, optional): Only return users created at or before this time, as a UNIX timestamp in seconds. Example: 1735689599 (2024-12-31).

Example input: `{}`

### `aircall_whatsapp_status_get`

Get WhatsApp Status · Read-only

Get the WhatsApp registration status of an Aircall number and whether it can send messages.
Returns wabaId, status (ONLINE, OFFLINE or NOT_REGISTERED), canSendMessage and business verification details.
Use aircall_whatsapp_status_get before aircall_whatsapp_message_send to check the line is ready.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `number_id` (`integer`, required): Unique Aircall ID of the number. Example: 673

Example input: `{"number_id":673}`

### `aircall_whatsapp_templates_list`

List WhatsApp Templates · Read-only

List the WhatsApp message templates of a WhatsApp-registered Aircall number, optionally filtered by status or category.
Returns templates with their id, name, status, category and components, plus a nextToken for the next page.
Use aircall_whatsapp_templates_list to find a template id for aircall_whatsapp_message_send.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `number_id` (`integer`, required): Unique Aircall ID of the WhatsApp-capable number. Example: 673
- `category` (`string`, optional): Only return templates in this category. One of: `UTILITY`, `MARKETING`, `AUTHENTICATION`.
- `limit` (`integer`, optional): Maximum number of templates to return per page. Example: 20
- `sort` (`string`, optional): Sort direction: asc or desc. One of: `asc`, `desc`.
- `status` (`string`, optional): Only return templates with this approval status. One of: `APPROVED`, `REJECTED`, `PAUSED`, `FLAGGED`, `PENDING_DELETION`.
- `token` (`integer`, optional): Pagination cursor: the nextToken value from the previous response. Example: 20

Example input: `{"number_id":673}`

### `aircall_ai_voice_agent_call_trigger`

Trigger AI Voice Agent Call · Write

Ask an Aircall Outbound AI Voice Agent to call a contact, for example for an appointment reminder or a follow-up. The request is queued and placed when a calling slot is free.
Returns id, idempotency_key, status (PENDING) and virtual_agent_id (HTTP 202).
Use aircall_ai_voice_agent_call_trigger for AI-placed calls. Use aircall_user_call_start for a call placed by a human user. The agent must be configured in the Aircall Dashboard with a phone number and a first message.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `agent_id` (`string`, required): ID of the Outbound Voice Agent, from the Outbound Call Workflow tab of the agent's configuration page. Example: agent-abc123
- `contact_phone` (`string`, required): Phone number to call, with country code. A leading + is optional. Example: +15551234567
- `idempotency_key` (`string`, required): Unique key for this call request; sending the same key twice won't create a second call. Use a new key for every retry. Example: appt-reminder-2026-03-15-cust-12345
- `context` (`object`, optional): Values for the {{variable}} placeholders in the agent's first message, voicemail message and guidelines. Every variable in the first message and voicemail message must be present. Add a timezone key (IANA, such as America/New_York) when a value is a UTC datetime. Example: {"first_name": "Jane", "appointment_date": "March 20th at 2:00 PM"}
- `expiration_seconds` (`integer`, optional): How long, in seconds, to keep trying to place the call if the concurrency limit is reached: 60 to 86400. Default: 3600. Default: `3600`.

Example input: `{"agent_id":"<agent_id>","contact_phone":"<contact_phone>","idempotency_key":"<idempotency_key>"}`

### `aircall_analytics_export_create`

Create Analytics Export · Write

Start an asynchronous Analytics report export (CSV), such as the call history or user status history for a date range. Requires the Analytics+ entitlement.
Returns exportID, createdAt and status (PENDING).
Use aircall_analytics_export_create to request a report, then poll aircall_analytics_export_get with the exportID until it is COMPLETED.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `filter` (`object`, required): Report filters. Required: timezone (IANA, such as Europe/Paris) and dateFilter with exactly one of relative (LAST_MONTH, LAST_WEEK, THIS_MONTH, THIS_WEEK, TODAY or YESTERDAY) or absoluteRange (fromDate and toDate as YYYY-MM-DD). Optional array filters include userIDs, teamIDs, lineIDs, tagIDs, callIDs and customerNumbers (always arrays, even for one value), plus callTypes, duration, hours and voicemail or AI flags. Example: {"timezone": "Europe/Paris", "dateFilter": {"absoluteRange": {"fromDate": "2026-05-01", "toDate": "2026-05-15"}}, "teamIDs": [4242]}
- `report_name` (`string`, required): Report to export. CALLS_HISTORY is the raw call log; USER_STATUS_HISTORY is raw status changes; USER_ACTIVITY_* reports aggregate per user. One of: `CALLS_HISTORY`, `USER_STATUS_HISTORY`, `USER_ACTIVITY_AVAILABILITY_BREAKDOWN`, `USER_ACTIVITY_AVERAGE_AFTER_CALL_WORK_TIME_PER_USER`, `USER_ACTIVITY_AVERAGE_INBOUND_IN_CALL_TIME_PER_USER`, `USER_ACTIVITY_AVERAGE_OUTBOUND_IN_CALL_TIME_PER_USER`, `USER_ACTIVITY_CALL_VOLUME_AND_TIME`, `USER_ACTIVITY_CALLS_HANDLED`, `USER_ACTIVITY_PERCENTAGE_OF_TIME_IN_EACH_STATUS`, `USER_ACTIVITY_RINGING_ATTEMPTS_PER_USER`, `USER_ACTIVITY_WORK_TIME_AND_AVAILABILITY`, `USER_ACTIVITY_RINGING_ATTEMPTS`.
- `export_options` (`object`, optional): File options: format (only CSV is supported) and exportName, a name echoed back on retrieve. Example: {"format": "CSV", "exportName": "calls-history-may-2026"}
- `options` (`object`, optional): Report options: dateBreakdown (HOURLY, DAILY, WEEKLY or MONTHLY) for USER_ACTIVITY_* reports, and SLA settings slaTimeToAnswerInSeconds and slaIncludedCallUnansweredReasons for call-based metrics. Example: {"dateBreakdown": "DAILY", "slaTimeToAnswerInSeconds": 20}

Example input: `{"filter":{},"report_name":"CALLS_HISTORY"}`

### `aircall_call_comment_create`

Comment on Call · Write

Add a comment (note) to a call. A call holds at most five comments, and comments can't be edited or deleted afterwards.
Returns HTTP 201 when the comment is added.
Use aircall_call_comment_create to log a note on a call. Use aircall_call_tags_add to categorize the call instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812
- `content` (`string`, required): Text of the comment. Emojis are removed. Example: Please call back this customer.

Example input: `{"call_id":812,"content":"<content>"}`

### `aircall_call_insight_card_create`

Create Call Insight Card · Write

Show an Insight Card with custom data to the agent in Aircall Workspace during an ongoing call. Cards are not stored after the call ends.
Returns HTTP 201 when the card is displayed.
Use aircall_call_insight_card_create to surface CRM context (account, owner, links) to the agent on a live call. The payload must be under 10 KB.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the ongoing call. Example: 812
- `contents` (`array`, required): Lines of the Insight Card, in display order. Each line has a type: title (a large heading with text and an optional link), shortText (a line with text, an optional label and an optional link) or user (a user card with a label and a user_id). Example: [{"type": "title", "text": "My CRM", "link": "https://crm.example.com"}, {"type": "shortText", "label": "Account ID", "text": "6789"}, {"type": "user", "label": "Account Owner", "user_id": 12345}]

Example input: `{"call_id":812,"contents":[{"type":"title","text":"My CRM","link":"https://crm.example.com"},{"type":"shortText","label":"Account ID","text":"6789"},{"type":"user","label":"Account Owner","user_id":12345}]}`

### `aircall_call_recording_pause`

Pause Call Recording · Write

Pause live recording on an ongoing call.
Returns no content (HTTP 204) when recording is paused.
Use aircall_call_recording_pause during a call, for example before sensitive details are shared. Use aircall_call_recording_resume to start recording again.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the ongoing call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_recording_resume`

Resume Call Recording · Write

Resume live recording on an ongoing call after it was paused.
Returns no content (HTTP 204) when recording resumes.
Use aircall_call_recording_resume after aircall_call_recording_pause.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the ongoing call. Example: 812

Example input: `{"call_id":812}`

### `aircall_call_tags_add`

Add Call Tags · Write

Tag a call with one or more existing tags.
Returns HTTP 201 when the tags are applied.
Use aircall_call_tags_add to categorize a call. Get tag IDs from aircall_tags_list, or create one with aircall_tag_create.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the call. Example: 812
- `tags` (`array`, required): List of tag IDs to apply to the call. Example: [545, 546]

Example input: `{"call_id":812,"tags":[545,546]}`

### `aircall_call_transfer`

Transfer Call · Write

Transfer an ongoing call to a user, a team, or an external phone number.
Returns no content (HTTP 204) when the transfer starts.
Use aircall_call_transfer on a live call. Set exactly one of user_id, team_id or number. External-number transfers only work for inbound calls that have not been answered yet.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `call_id` (`integer`, required): Unique Aircall ID of the ongoing call. Example: 812
- `dispatching_strategy` (`string`, optional): How a team transfer rings team members: simultaneous (everyone at once, the default), random (one by one in random order) or longest_idle (one by one, longest idle first). Only valid with team_id. One of: `simultaneous`, `random`, `longest_idle`.
- `number` (`string`, optional): External phone number to transfer the call to, in E.164 format. Only works for unanswered inbound calls. Set only one of user_id, team_id or number. Example: +18001231234
- `team_id` (`string`, optional): ID of the team to transfer the call to. Set only one of user_id, team_id or number. Example: 678
- `user_id` (`string`, optional): ID of the user to transfer the call to. Set only one of user_id, team_id or number. Example: 456

Example input: `{"call_id":812}`

### `aircall_campaign_contacts_add`

Add Campaign Contacts · Write

Add up to 100 contacts to an Outbound Campaign and queue them for dialing. Safe to retry: numbers already in the campaign are reported, not added twice.
Returns queued_count, rejected_count and contacts[] (one result per submitted contact, in the same order) with status and, if rejected, reason.
Use aircall_campaign_contacts_add to feed contacts into a campaign. Use aircall_campaign_contact_remove to take one out.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3
- `contacts` (`array`, required): Contacts to add, 1 to 100. Each needs a phone_number. Human-agent campaigns also accept first_name, last_name, email, company_name and note; AI Voice Agent campaigns accept aiva_variables (string keys to string values) instead. Example: [{"phone_number": "+13105550123", "first_name": "Gary", "last_name": "Jennings"}]
- `country_code` (`string`, required): ISO 3166-1 alpha-2 country used to read numbers written in national format. A wrong country silently produces numbers in another country. Example: US
- `position` (`string`, optional): Where the contacts go in the existing queue: bottom (default) or top (ahead of everyone waiting). One of: `top`, `bottom`. Default: `bottom`.

Example input: `{"campaign_id":"<campaign_id>","contacts":[{"phone_number":"+13105550123","first_name":"Gary","last_name":"Jennings"}],"country_code":"<country_code>"}`

### `aircall_campaign_launch`

Launch Campaign · Write

Launch a draft Outbound Campaign: build its call queue and start dialing.
Returns the campaign with status in_progress.
Use aircall_campaign_launch once, on a draft campaign. Use aircall_campaign_resume for a paused one. You must set compliance_acknowledged to true.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3
- `compliance_acknowledged` (`boolean`, required): Must be true. Confirms your company has the right to call every contact in the campaign and accepts responsibility for consent, do-not-call rules and calling hours. One of: `true`.

Example input: `{"campaign_id":"<campaign_id>","compliance_acknowledged":true}`

### `aircall_campaign_pause`

Pause Campaign · Write

Pause an in-progress Outbound Campaign. New attempts stop; calls already in progress finish.
Returns the campaign with status paused.
Use aircall_campaign_pause to stop dialing temporarily. Use aircall_campaign_resume to restart.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3

Example input: `{"campaign_id":"<campaign_id>"}`

### `aircall_campaign_resume`

Resume Campaign · Write

Resume a paused Outbound Campaign.
Returns the campaign with status in_progress.
Use aircall_campaign_resume after aircall_campaign_pause. Use aircall_campaign_launch for a draft campaign.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3

Example input: `{"campaign_id":"<campaign_id>"}`

### `aircall_contact_create`

Create Contact · Write

Create a shared contact in Aircall with at least one phone number. Sending the same payload twice creates a duplicate.
Returns the new contact with its id and the ids of its phone numbers and emails.
Use aircall_contact_create for a new contact. Use aircall_contacts_search first to avoid duplicates, and aircall_contact_update to change an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `phone_numbers` (`array`, required): The contact's phone numbers (at least one, at most 20). Each item needs a label (such as Work or Mobile) and a value (the phone number). Example: [{"label": "Work", "value": "+19001112222"}]
- `company_name` (`string`, optional): The contact's company name, up to 255 characters. Example: Acme Corp
- `emails` (`array`, optional): The contact's email addresses (at most 20). Each item needs a label (such as Office) and a value (the email address). Example: [{"label": "Office", "value": "gary.jennings@example.com"}]
- `first_name` (`string`, optional): The contact's first name, up to 255 characters. Example: Gary
- `information` (`string`, optional): Extra free-text information about the contact, for example an external CRM ID. Example: external_custom_id:87123
- `last_name` (`string`, optional): The contact's last name, up to 255 characters. Example: Jennings

Example input: `{"phone_numbers":[{"label":"Work","value":"+19001112222"}]}`

### `aircall_contact_email_add`

Add Contact Email · Write

Add an email address to a contact (at most 20 per contact).
Returns the created email with its id.
Use aircall_contact_email_add to add an email. Use aircall_contact_email_update to change an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `value` (`string`, required): The email address. Example: gary.jennings@example.com
- `label` (`string`, optional): Label for the email, such as Office or Personal. Example: Office

Example input: `{"contact_id":719,"value":"<value>"}`

### `aircall_contact_email_update`

Update Contact Email · Write

Update one of a contact's email addresses. The value must be sent every time.
Returns the updated email.
Use aircall_contact_email_update to change an email. Get email_id from aircall_contact_get.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `email_id` (`integer`, required): Unique Aircall ID of the contact email (from the contact's emails[].id). Example: 9170
- `value` (`string`, required): The email address, sent every time. Example: gary.jennings@example.com
- `label` (`string`, optional): Label for the email, such as Office or Personal. Example: Office

Example input: `{"contact_id":719,"email_id":9170,"value":"<value>"}`

### `aircall_contact_phone_number_add`

Add Contact Phone Number · Write

Add a phone number to a contact (at most 20 per contact). The number is normalized before it is stored.
Returns the created phone number with its id.
Use aircall_contact_phone_number_add to add a number. Use aircall_contact_phone_number_update to change an existing one.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `value` (`string`, required): The phone number. It should be a valid number so agents can dial it. Example: +19001112222
- `label` (`string`, optional): Label for the number, such as Work, Mobile or Home. Example: Mobile

Example input: `{"contact_id":719,"value":"<value>"}`

### `aircall_contact_phone_number_update`

Update Contact Phone Number · Write

Update one of a contact's phone numbers. The value must be sent every time.
Returns the updated phone number.
Use aircall_contact_phone_number_update to change a number. Get phone_number_id from aircall_contact_get.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `phone_number_id` (`integer`, required): Unique Aircall ID of the contact phone number (from the contact's phone_numbers[].id). Example: 9171
- `value` (`string`, required): The phone number, sent every time. Example: +19001112222
- `label` (`string`, optional): Label for the number, such as Work, Mobile or Home. Example: Work

Example input: `{"contact_id":719,"phone_number_id":9171,"value":"<value>"}`

### `aircall_contact_update`

Update Contact · Write

Update a shared contact's name, company or information. Only the fields you send change.
Returns the updated contact.
Use aircall_contact_update for name and company fields. Use aircall_contact_phone_number_add / aircall_contact_phone_number_update and aircall_contact_email_add / aircall_contact_email_update to change phone numbers and emails.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `company_name` (`string`, optional): New company name. Can't be blank. Example: Acme Corp
- `first_name` (`string`, optional): New first name. Can't be blank. Example: Gary
- `information` (`string`, optional): New free-text information. Can't be blank. Example: external_custom_id:87123
- `last_name` (`string`, optional): New last name. Can't be blank. Example: Jennings

Example input: `{"contact_id":719}`

### `aircall_dialer_campaign_create`

Create Dialer Campaign · Write

Create an active Power Dialer campaign for a user with a list of phone numbers to call. A user can have only one active campaign.
Returns no content (HTTP 204) when the campaign is created.
Use aircall_dialer_campaign_create to queue numbers for one agent. Use aircall_dialer_campaign_phone_numbers_add to add to an existing campaign.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `phone_numbers` (`array`, required): Phone numbers to call, at least one valid number. Example: ["+19161112222", "+18001112222"]
- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"phone_numbers":["+19161112222","+18001112222"],"user_id":456}`

### `aircall_dialer_campaign_phone_numbers_add`

Add Dialer Campaign Phone Numbers · Write

Add phone numbers to a user's active Power Dialer campaign. They are appended in Aircall Workspace.
Returns no content (HTTP 204) when the numbers are added.
Use aircall_dialer_campaign_phone_numbers_add for an existing campaign. Use aircall_dialer_campaign_create when the user has none.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `phone_numbers` (`array`, required): Phone numbers to add, at least one valid number. Example: ["+19161112222"]
- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"phone_numbers":["+19161112222"],"user_id":456}`

### `aircall_group_message_send`

Send Group Message · Write

Send a group SMS from an SMS-capable Aircall number into a group conversation in the agents' inbox, creating it if needed. Up to 10 participants including the sender.
Returns the message with id, status, participants, body and timestamps.
Use aircall_group_message_send for a group thread. Use aircall_message_send for one recipient.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, required): Text of the message, up to 1600 characters. Example: Hi all, here is the meeting link.
- `number_id` (`integer`, required): Unique Aircall ID of the SMS-capable number to send from. Example: 673
- `participants` (`array`, required): Phone numbers to include in the group conversation, in E.164 format (up to 9 besides the sender). Example: ["+13105550123", "+13105550124"]
- `agent_id` (`integer`, optional): ID of the user to attribute the message to. Example: 456

Example input: `{"body":"<body>","number_id":673,"participants":["+13105550123","+13105550124"]}`

### `aircall_message_send`

Send Message · Write

Send an SMS from an SMS-capable Aircall number into the agents' conversation inbox, creating the conversation if needed. Agents on the number can see it and continue the conversation.
Returns the message with id, status, direction, raw_digits, body and timestamps.
Use aircall_message_send for one-to-one conversational SMS. Use aircall_group_message_send for a group conversation and aircall_whatsapp_message_send for WhatsApp. Not for high-volume sending.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `body` (`string`, required): Text of the message, up to 1600 characters. Example: Hi, thanks for your call today!
- `number_id` (`integer`, required): Unique Aircall ID of the SMS-capable number to send from. Example: 673
- `to` (`string`, required): Recipient phone number in E.164 format. Example: +13105550123
- `agent_id` (`integer`, optional): ID of the user to attribute the message to. Example: 456

Example input: `{"body":"<body>","number_id":673,"to":"<to>"}`

### `aircall_number_update`

Update Number · Write

Update an Aircall number's name, call recording setting or priority. Only the fields you send change.
Returns the updated number.
Use aircall_number_update to rename a line or turn call recording on or off.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `number_id` (`integer`, required): Unique Aircall ID of the number. Example: 673
- `live_recording_activated` (`boolean`, optional): Set to true to record calls on this number (inbound and outbound), or false to stop.
- `name` (`string`, optional): New name for the number. Can't be empty. Example: French Office
- `priority` (`integer`, optional): Routing priority of the number: 0 (no priority) or 1 (top priority). One of: `0`, `1`.

Example input: `{"number_id":673}`

### `aircall_tag_create`

Create Tag · Write

Create a call tag with a unique name and a color.
Returns the new tag with its id.
Use aircall_tag_create when the tag doesn't exist yet. Use aircall_tags_list first to check, and aircall_call_tags_add to apply it to a call.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `color` (`string`, required): Tag color as a hexadecimal code. Example: #00B388
- `name` (`string`, required): Tag name. Must be unique in the company. Example: Follow-up

Example input: `{"color":"<color>","name":"<name>"}`

### `aircall_tag_update`

Update Tag · Write

Rename or recolor a call tag. Aircall requires both name and color on every update.
Returns the updated tag.
Use aircall_tag_update to change a tag. Use aircall_tag_create for a new one.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `color` (`string`, required): Tag color as a hexadecimal code. Example: #00B388
- `name` (`string`, required): Tag name. Must be unique in the company. Example: Follow-up
- `tag_id` (`integer`, required): Unique Aircall ID of the tag. Example: 545

Example input: `{"color":"<color>","name":"<name>","tag_id":545}`

### `aircall_user_call_start`

Start Outbound Call · Write

Start an outbound call from a user's Aircall Workspace (click-to-call) to a phone number, using one of the user's Aircall numbers.
Returns no content (HTTP 204) when the call starts.
Use aircall_user_call_start to place the call immediately. Use aircall_user_dial to only pre-fill the number and let the user press call. The user must be available, not on a call, using Aircall Workspace on desktop, and assigned to the number.
Run aircall_user_numbers_list first to get a number_id the user can call from.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `number_id` (`integer`, required): ID of the Aircall number to call from. The user must be assigned to it and it must be active. Get it from aircall_user_numbers_list. Example: 673
- `to` (`string`, required): Phone number to call, in E.164 format. Example: +18001231234
- `user_id` (`integer`, required): Unique Aircall ID of the user who places the call. Example: 456

Example input: `{"number_id":673,"to":"<to>","user_id":456}`

### `aircall_user_dial`

Dial Number in Workspace · Write

Pre-fill a phone number in a user's Aircall Workspace dialer (click-to-dial) so they can start the call and pick the number to call from.
Returns no content (HTTP 204) when the dialer is filled.
Use aircall_user_dial to let the user confirm the call. Use aircall_user_call_start to place it right away. The user must be available, not on a call, and using Aircall Workspace on desktop.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `to` (`string`, required): Phone number to dial, in E.164 format. Example: +18001231234
- `user_id` (`integer`, required): Unique Aircall ID of the user whose dialer is filled. Example: 456

Example input: `{"to":"<to>","user_id":456}`

### `aircall_whatsapp_message_send`

Send WhatsApp Message · Write

Send a WhatsApp text or template message from a WhatsApp-capable Aircall number into the agents' conversation inbox.
Returns the message with id, status, direction, raw_digits, body and timestamps.
Use aircall_whatsapp_message_send for WhatsApp. Set text inside an open 24-hour conversation window, or template_params to start or re-open one (get template IDs from aircall_whatsapp_templates_list). Use aircall_message_send for SMS.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `external_number` (`string`, required): Recipient phone number in E.164 format. Example: +13105550123
- `line_id` (`integer`, required): ID of the WhatsApp-capable Aircall number to send from. Example: 673
- `agent_id` (`integer`, optional): ID of the user to attribute the message to. Example: 456
- `template_params` (`object`, optional): Template to send instead of text: the template id, plus optional body and buttons arrays of key/value substitutions and an optional header object. Set either text or template_params, not both. Example: {"id": "1234", "body": [{"key": "{{1}}", "value": "Jordan"}]}
- `text` (`string`, optional): Text of the message, up to 4096 characters. Only works inside an open 24-hour conversation window. Set either text or template_params, not both. Example: Your order has shipped.

Example input: `{"external_number":"<external_number>","line_id":673}`

### `aircall_campaign_contact_remove`

Remove Campaign Contact · Destructive

Remove a contact from an Outbound Campaign so it won't be dialed. A contact with no attempts is deleted; one with attempts has its remaining retries cancelled.
Returns no content (HTTP 204) when the contact is removed.
Use aircall_campaign_contact_remove to undo aircall_campaign_contacts_add for one number.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `campaign_id` (`string`, required): UUID of the Outbound Campaign, as returned by aircall_campaigns_list. Example: 019f3614-18e7-7b49-aef3-93159c4ed9e3
- `phone_number` (`string`, required): The contact's phone number in international format as digits without the leading +, as returned by aircall_campaign_contacts_list. Example: 33612345678

Example input: `{"campaign_id":"<campaign_id>","phone_number":"<phone_number>"}`

### `aircall_contact_delete`

Delete Contact · Destructive

Delete a shared contact from the company. This can't be undone.
Returns no content (HTTP 204) when the contact is deleted.
Use aircall_contact_delete to remove a contact entirely. Use aircall_contact_phone_number_delete or aircall_contact_email_delete to remove one detail.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact to delete. Example: 719

Example input: `{"contact_id":719}`

### `aircall_contact_email_delete`

Delete Contact Email · Destructive

Remove one email address from a contact.
Returns no content (HTTP 204) when the email is removed.
Use aircall_contact_email_delete to remove an email. Get email_id from aircall_contact_get.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `email_id` (`integer`, required): Unique Aircall ID of the contact email (from the contact's emails[].id). Example: 9170

Example input: `{"contact_id":719,"email_id":9170}`

### `aircall_contact_phone_number_delete`

Delete Contact Phone Number · Destructive

Remove one phone number from a contact.
Returns no content (HTTP 204) when the number is removed.
Use aircall_contact_phone_number_delete to remove a number. Get phone_number_id from aircall_contact_get.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `contact_id` (`integer`, required): Unique Aircall ID of the contact. Example: 719
- `phone_number_id` (`integer`, required): Unique Aircall ID of the contact phone number (from the contact's phone_numbers[].id). Example: 9171

Example input: `{"contact_id":719,"phone_number_id":9171}`

### `aircall_dialer_campaign_delete`

Delete Dialer Campaign · Destructive

Delete a user's active Power Dialer campaign and all of its phone numbers.
Returns no content (HTTP 204) when the campaign is deleted.
Use aircall_dialer_campaign_delete to clear a campaign. Use aircall_dialer_campaign_phone_number_delete to remove one number.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"user_id":456}`

### `aircall_dialer_campaign_phone_number_delete`

Delete Dialer Campaign Phone Number · Destructive

Remove one phone number from a user's active Power Dialer campaign.
Returns no content (HTTP 204) when the number is removed.
Use aircall_dialer_campaign_phone_number_delete to drop one number. Get its id from aircall_dialer_campaign_phone_numbers_list.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `phone_number_id` (`integer`, required): Unique Aircall ID of the campaign phone number (from aircall_dialer_campaign_phone_numbers_list). Example: 4671488
- `user_id` (`integer`, required): Unique Aircall ID of the user. Example: 456

Example input: `{"phone_number_id":4671488,"user_id":456}`

### `aircall_tag_delete`

Delete Tag · Destructive

Delete a call tag. The tag is also removed from every call that has it.
Returns no content (HTTP 204) when the tag is deleted.
Use aircall_tag_delete to retire a tag everywhere.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `tag_id` (`integer`, required): Unique Aircall ID of the tag to delete. Example: 545

Example input: `{"tag_id":545}`

## Related

Other Communication connectors ([all 73](/agentkit/connectors/?category=communication)):

- [Crisp](/agentkit/connectors/crisp/): Scalekit connector, API key, 50 tools
- [Gmail](/agentkit/connectors/gmail/): Scalekit connector, OAuth, 48 tools
- [Google Calendar](/agentkit/connectors/googlecalendar/): Scalekit connector, OAuth, 30 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
