NAV Navbar

Introduction

{
  "resource": "Aircall Documentation",
  "contact": "api@aircall.io"
}

Feel free to ping us if you’ve suggestions!

Welcome on Aircall for Developers! Just like you, we are enthusiastic web developers and we love to automate things. With Aircall we are building the next-gen business phone system and we know that one of the best way to do that is to give you the ability to have the hands on your Aircall data. Please find below the full documentation and API reference in order to reach this goal. Happy hacking!

We’re supporting Webhooks. It means that we’re able to call back an endpoint of your choice each time an event occured on your Aircall account (contact added, call created, user switched off… see the events section for a complete list). Webhooks allow you to build many integrations with third-parties you already use (Slack, Zendesk, Zapier…) and require only to set up a public web server.

We’re also maintaining a public API. This service allows you to retrieve your data. For User, Number and Call objects, we are currently supporting index and read actions. For Contact object, we are supporting all of common actions and, bonus point, you’ll be able to perform searches within your contacts!

If you want to know our future plans, feel free to check our public roadmap and upvote your favorite items!

Objects

Aircall data are structured around 4 main types of objects: Number, User, Contact and Call. Whatever you are using (API or Webhooks), you’ll find these objects in the format described below.

Number

Example of a Number object

{
  "id": 123,
  "direct_link": "https://api.aircall.io/v1/numbers/123",
  "name": "My first Aircall Number",
  "digits": "+33 1 76 36 06 95",
  "country": "FR",
  "time_zone": "Europe/Paris",
  "open": true,
  "is_ivr": false,
  "users": [
    {
      "id": 456,
      "direct_link": "https://api.aircall.io/v1/users/456",
      "name": "Madelaine Dupont",
      "email": "madelaine.dupont@aircall.io",
      "available": false
    }
  ]
}

The Number object is a modelization of Aircall’s numbers like you see them in your dashboard (on the left part).

Field Type Description Updatable
id Integer Unique ID of this number
direct_link String API endpoint
name String The name of your Aircall’s Number
digits String International format of the number
country String 2 characters code for the country
time_zone String Time zone of the number set in the dashboard
open Boolean Current state of the number
availability_status String Current availability status of the number. Can be open, custom or closed
is_ivr Boolean Wheter number is an IVR or a normal number. Can be true or false.
users Array List of User linked to this number
messages Object URL to number’s music & messages. See Music & Messages section for more details

There is a lot of libraries that can handle phone numbers’ formatting. We are using libphonenumber, a complex (and complete!) list of Regex pusblished by Google.

Music and Messages

Example of a Number’s messages updatable object

{
  "id": 123,
  [...],
  "messages": {
    "welcome": "https://domain.com/musics/welcome_message.mp3",
    "waiting": "https://domain.com/musics/waiting_music.mp3",
    "ivr": "https://domain.com/musics/ivr_message.mp3",
    "voicemail": "https://domain.com/musics/voicemail_message.mp3",
    "closed": "https://domain.com/musics/closed_message.mp3",
    "callback_later": "https://domain.com/musics/callback_later_message.mp3"
  }
}

You can update your numbers’ Musics & Messages URLs by sending a PUT request on the /numbers route (see the Number endpoint description).

In the messages object, you can set one (or several) of the followings:

Field Type Description Updatable
welcome String Welcome message URL
waiting String Waiting music URL
ivr String IVR message URL
voicemail String Voicemail message URL
closed String Closed message URL
callback_later String Callback Later message

Check our encoding recommendations on our FAQ.

User

Example of a User object

{
  "id": 456,
  "direct_link": "https://api.aircall.io/v1/users/456",
  "name": "Madelaine Dupont",
  "email": "madelaine.dupont@aircall.io",
  "available": "false",
  "numbers": [
    {
      "id": 123,
      "direct_link": "https://api.aircall.io/v1/numbers/123",
      "name": "My first Aircall Number",
      "digits": "+33 1 76 36 06 95",
      "country": "FR",
      "time_zone": "Europe/Paris",
      "open": true
    }
  ]
}

The User object is a modelization of Aircall’s users like you see them in your dashboard (on the right part).

Field Type Description Updatable
id Integer Unique ID of this user
direct_link String API endpoint
name String Full name of the user
email String Email of the user
available Boolean Availability status of the user
availability_status String Current availability status of the user. Can be available, custom or unavailable
numbers Array List of Number linked to this user

Team

Example of a Team object

{
  "id": 456,
  "direct_link": "https://api.aircall.io/v1/team/456",
  "name": "Aircall Support Team",
  "users": [
    {
      "id": 45,
      "direct_link": "https://api.aircall.io/v1/users/45",
      "name": "Madelaine Dupont",
      "email": "madelaine.dupont@aircall.io",
      "available": "false"
    }
  ]
}

The Team object is a modelization of Aircall’s teams like you see them in your dashboard

Field Type Description Updatable
id Integer Unique ID of this team
direct_link String API endpoint
name String Full name of the team
users Array List of User linked to this team

Contact

Example of a Contact object

{
  "id": 789,
  "direct_link": "https://api.aircall.io/v1/contacts/789",
  "first_name": "John",
  "last_name": "Doe",
  "company_name": "Acme",
  "information": "",
  "phone_numbers": [
    {
      "label": "Work",
      "value": "+33631000000"
    }
  ],
  "emails": [
    {
      "label": "Work",
      "value": "john.doe@something.io"
    }
  ]
}

The Contact object is a modelization of Aircall’s contacts like you see them in your Aircall App.

Field Type Description Updatable
id Integer Unique ID of this contact
direct_link String API endpoint
first_name String First name of the contact
last_name String Last name of the contact
company_name String Company name of the contact
information String Extra information about the contact
urls Array Contact’s URL pointing to CRMs (used by Aircall)
phone_numbers Array Phone numbers of this contact
emails Array Email addresses of this contact

Phone numbers and email addresses are special properties of the Contact object. Each entry is using extra fields describing its value.

By default, API calls will create new entries for emails and phone numbers but if you provide an id for the object, it will perform an update.

Field Type Description Updatable
id Integer Unique ID, needed for update
label String Type of contact for this entry
value String Raw email address or phone number

Phone number’s values should be formatted as E.164. This is a standard format we are using for the API too.

Please contact us for specific needs on this object. Contact’s management is something hard because of the diversity of the sources and we don’t want to create a pain on that subject.

Call

Example of a Call object

{
  "id": 1234567,
  "direct_link": "https://api.aircall.io/v1/calls/1234567",
  "status": "done",
  "direction": "inbound",
  "started_at": 1431272855,
  "answered_at": 1431272875,
  "ended_at": 1431272928,
  "duration": 32,
  "raw_digits": "+33631000000",
  "voicemail": "https://voicemails.com/010203",
  "recording": "https://recordings.com/090807",
  "asset": "https://assets.aircall.io/calls/1234567/recording",
  "archived": false,
  "missed_call_reason": null,
  "number": {
    "id": 123,
    "direct_link": "https://api.aircall.io/v1/numbers/123",
    "name": "My first Aircall Number",
    "digits": "+33 1 76 36 06 95",
    "country": "FR",
    "time_zone": "Europe/Paris",
    "open": true
  },
  "user": {
    "id": 456,
    "direct_link": "https://api.aircall.io/v1/users/456",
    "name": "Madelaine Dupont",
    "email": "madelaine.dupont@aircall.io",
    "available": "false"
  },
  "contact": {
    "id": 789,
    "direct_link": "https://api.aircall.io/v1/contacts/789",
    "first_name": "John",
    "last_name": "Doe",
    "company_name": "Acme",
    "phone_numbers": [
      {
        "label": "Work",
        "value": "+33631000000"
      }
    ],
    "emails": [
      {
        "label": "Work",
        "value": "john.doe@something.io"
      }
    ]
  },
  "assigned_to": {
    "id": 212,
    "direct_link": "https://api.aircall.io/v1/users/212",
    "name": "Josh Smith",
    "email": "josh.smith@aircall.io",
    "available": "false"
  },
  "teams": [
    {
      "id": 31,
      "direct_link": "https://api.aircall.io/v1/teams/31",
      "name": "Support"
    }
  ],
  "comments": [
    {
      "id": 1234,
      "content": "Hello world!",
      "posted_by": {
        "id": 0,
        "direct_link": "https://api.aircall-staging.com/v1/users/0",
        "name": "Madelaine Dupont",
        "email": "madelaine.dupont@aircall.io",
        "available": true,
        "availability_status": "available"
      },
      "posted_at": 1501250730
    }
  ],
  "tags": [
    {
      "name": "To be called back",
      "tagged_by": {
        "id": 0,
        "direct_link": "https://api.aircall.io/v1/users/0",
        "name": "Madelaine Dupont",
        "email": "madelaine.dupont@aircall.io",
        "available": true,
        "availability_status": "available"
      },
      "tagged_at": 1501249783
    }
  ]
}

The Call object is a modelization of Aircall’s calls like you see them in your Activity Feed. The structure is a mix of other objects.

Field Type Description Updatable
id Integer Unique ID of this call
direct_link String API endpoint
status String Current status of the call. Could be initial, answered or done
direction String Direction of the call. Could be inbound or outbound
started_at Integer UNIX timestamp when the call started
answered_at Integer UNIX timestamp when the call has been answered
ended_at Integer UNIX timestamp when the call ended
duration Integer Duration of the call in seconds
raw_digits String International format of the number of the caller or the callee
voicemail String If present, the direct URL of a voicemail (mp3 file) for this call
recording String If present, the direct URL of the live recording (mp3 file) for this call
asset String If present, the webpage containing the voicemail or live recording for this call
archived Boolean Tells you if this call needs follow up
missed_call_reason String (Beta) A code representing why the call was missed. If present, can be out_of_opening_hours, short_abandoned, abandoned_in_ivr, no_available_agent or agents_did_not_answer
number Object Number attached to this call
user Object User who took or made the call
contact Object Contact attached to this call
assigned_to Object User assigned to this call
teams Array (Beta) Teams assigned to this call
comments Array Notes added to this call
tags Array Tags added to this call


In order to analyze this object, you can follow these steps:

  1. Check the status of the call. Every ended call has its status set to “done” and has been hangup.
  2. Discover the metadata of the call by reading the direction and duration fields.
  3. Link the raw_digits of the callee (for an outbound call) or the caller (for an inbound call) to your own data.
  4. Listen to the voicemail if the value is not empty.
  5. Inspect number, user and contact in order to make something particular for this call like archive, call back or compute analytics!

Tag

Example of a Tag object

{
  "id": 123,
  "name": "Sales",
  "color": "#000000",
  "description": "A sales call"
}

The Tag object is a modelization of tags you see on calls.

Field Type Description Updatable
id Integer Unique ID of this tag
name String The display name of this tag
color String The color that this tag is displayed in
description String A longer description of the tag

Webhook

Example of a Webhook object

{
  "id": 223,
  "direct_link": "https://api.aircall.io/v1/webhooks/223",
  "url": "https://myserver.com",
  "active": true,
  "events": ["call.created","call.ended"],
  "token": "secretanduniquetoken"
}

The Webhook object is a modelization of Aircall’s webhooks like you see them in your Aircall Dashboard.

Field Type Description Updatable
id Integer Unique ID of this webhook
direct_link String API endpoint
url String Valid URL to your web server
active Boolean Status of this webhook (Default true)
events Array List of events registered. If events field is empty, all events will be attached to this webhook
token String Unique token for request’s authentication

Please contact us for specific needs on this object. We could work together in order to create an Aircall integration with your software.

API

The root endpoint of Aircall API is: https://api.aircall.io/v1. We recommend you fetch our API over https.

Authentication

If you’re using curl, try this…

$> curl https://apiID:apiToken@api.aircall.io/v1/ping

You should get the response: { "ping": "pong" }

In order to start using the API, you’ll need an Aircall account. Sign up if you don’t have one.

Once you’re logged in, go to your company’s settings. In the API Keys section, click on Add a new API key and get your API ID and your API token in order to start using the API. Do not forget to copy/paste your API token somewhere safe, we won’t be able to retrieve it for you as we don’t store it as plain text!

We use HTTP basic authentication in order to authorize API requests. Just add your API ID as username and your API token as password to each of your API requests.

Please note that you can create as many API keys as you want. Feel free to create a lot of applications with your data and ping us if you think we should integrate one of them directly into Aircall.

Usage

GET https://api.aircall.io/v1/numbers

{
  "meta": {
    "count": 2,
    "current_page": 1,
    "per_page": 2,
    "next_page": "https://api.aircall.io/v1/numbers?page=2&per_page=2",
    "previous_page": null
  },
  "numbers": [
    {
      "id": 123,
      "direct_link": "https://api.aircall.io/v1/numbers/123",
      "name": "My first Aircall Number",
      "digits": "+33 1 76 36 06 95",
      "country": "FR",
      "time_zone": "Europe/Paris",
      "open": true
    },
    {
      "id": 444,
      "direct_link": "https://api.aircall.io/v1/numbers/444",
      "name": "My second Aircall Number",
      "digits": "+1 510 444 8209",
      "country": "US",
      "time_zone": "US/Pacific",
      "open": false
    }
  ]
}

We’re currently limiting the rate of API requests to 60 requests per minute per company. You can use extra headers available in API responses.

Header Description
X-AircallApi-Limit Limit of requests for the API key used,
X-AircallApi-Remaining Remaining requests for this API key,
X-AircallApi-Reset Timestamp when the counter will be reset.

Tell us if you need to make more requests per minute, we would add a higher rate limit to your API keys.

Each API response is formatted as JSON. We encapsulate data under the name of the resource (plural form if it’s a list). When you’re retrieving a list of objects, we are sending a meta property in order to allow you to browse objects easily.

Property Description
count number of resources in the response,
current_page index of pagination,
per_page number of objects sent per page,
next_page URL to be fetched for more objects,
previous_page URL to be fetched for the previous objects.

Endpoints

GET https://api.aircall.io/v1/contacts/789

{
  "contact": {
    "id": 789,
    "direct_link": "https://api.aircall.io/v1/contacts/789",
    "first_name": "John",
    "last_name": "Doe",
    "company_name": "Acme",
    "phone_numbers": [
      {
        "label": "Work",
        "value": "+33631000000"
      }
    ],
    "emails": [
      {
        "label": "Work",
        "value": "john.doe@something.io"
      }
    ]
  }
}

You can fetch and retrieve several object data when you’re authenticated:

Test your code

Fetch this route to test your authentication flow:

Method Path Description
GET /ping Test purpose

Company routes

Retrieve basic data on your company

Method Path Description
GET /company Generic data about the account

User routes

Get your Users list, retrieve, create and update info about a specific user, and start an outbound call on a user’s app.

Method Path Description Parameters
GET /users List of users
GET /users/:id Retrieve data for a specific User
POST /users Create a User
PUT /users/:id Update data for a specific User
POST /users/:id/calls Start an outbound call for a specific User See details below

Team routes

Get your Teams list, retrieve, create, update and destroy any team you want.

Method Path Description
GET /teams List of teams
GET /teams/:id Retrieve data for a specific Team
POST /teams Add a Team
POST /teams/:id/users Add a User to a Team
DELETE /teams/:id/users Remove a User from a Team

Number routes

Get your Numbers list, retrieve and update info about a specific number.

Method Path Description
GET /numbers List of numbers
GET /numbers/:id Retrieve data for a specific Number
PUT /numbers/:id Update data for a specific Number

Call routes

Search in your calls, setup a custom link attached to a call, transfer calls and delete recording.

Method Path Description Parameters
GET /calls List of calls
GET /calls/search Search for calls See extra parameters section
GET /calls/:id Retrieve data for a specific Call
POST /calls/:id/transfers Transfer the Call to another user or team See details below
POST /calls/:id/link Display a link in-app to the User who answered a specific Call Set a link in request’s body
POST /calls/:id/metadata Display custom informations during a Call in the Phone app Set link, first_name, last_name and/or company_name in request’s body
POST /calls/:id/comments Comment the Call Set content in request’s body
DELETE /calls/:id/recording Delete the recording of a specific Call, this action cannot be undone
DELETE /calls/:id/voicemail Delete the voicemail of a specific Call, this action cannot be undone
POST /calls/:id/tags Set the Tags for a specific Call. Set tags in the request body as an array of tag IDs ([321, 1234, 4321])
POST /calls/:id/pause_recording Pause recording on a live Call See details below
POST /calls/:id/resume_recording Resume recording on a live Call See details below

Contacts

Create and retrieve contacts

Method Path Description
GET /contacts List of contacts
GET /contacts/search Search within contacts (see parameters below)
POST /contacts Create a new Contact
GET /contacts/:id Retrieve data for a specific Contact
POST /contacts/:id Update data for a specific Contact
DELETE /contacts/:id Delete a specific Contact

You have to replace :id by the effective ID of the object.

Please refer to the Contact object description in order to see which parameters you should send to our API. We’ll perform validation before inserting new contacts (like presence of a name or value of a field).

Tags

Get a list of tags, retrieve and update info about a specific tag.

Method Path Description
GET /tags List of tags
POST /tags Create a new Tag
GET /tags/:id Retrieve data for a specific Tag
PUT /tags/:id Update data for a specific Tag
DELETE /tags/:id Delete a specific Tag

You have to replace :id by the effective ID of the object.

Please refer to the Tag object description in order to see which parameters you should send to our API. We’ll perform validation before inserting new tag (like presence of a name or value of a field).

Webhooks

Create and retrieve webhooks

Method Path Description
GET /webhooks List of webhooks
POST /webhooks Create a new Webhook
GET /webhooks/:id Retrieve data for a specific Webhook
PUT /webhooks/:id Update data for a specific Webhook
DELETE /webhooks/:id Delete a specific Webhook

You have to replace :id by the effective ID of the object.

Please refer to the Webhook object description in order to see which parameters you should send to our API. We’ll perform validation before inserting new webhooks (like validity of url).

Transfer a call

POST https://api.aircall.io/v1/calls/:call_id/transfers

// use this JSON to transfer the call to a user:
{
  "user_id": 456
}

// use this JSON to transfer the call to a team:
{
  "team_id": 987
}

If you want to transfer a Call to another User, you have to provide its ID in the request’s body.

Parameter Description
call_id ID of the call to transfer
user_id ID of the user you want to transfer the call to
team_id ID of the team you want to transfer the call to

Here are the possible HTTP codes for the response:

HTTP Code Description
204 Success
400 The given call has already ended
404 User not found or Call not found

Pause recording on a call

This feature is currently in beta and is disabled by default. For access, please contact us.

POST https://api.aircall.io/v1/calls/123/pause_recording

Parameter Description
call_id ID of the call to pause recording on

Here are the possible HTTP codes for the response:

HTTP Code Description
204 Success
400 The given call has already ended
403 This feature is disabled for the given api key
404 Call not found
405 Recording is disabled on the call’s number

Resume recording on a call

This feature is currently in beta and is disabled by default. For access, please contact us.

POST https://api.aircall.io/v1/calls/123/resume_recording

Parameter Description
call_id ID of the call to resume recording on

Here are the possible HTTP codes for the response:

HTTP Code Description
204 Success
400 The given call has already ended
403 This feature is disabled for the given api key
404 Call not found
405 Recording is disabled on the call’s number

Start an outbound call

This feature is currently in beta and is disabled by default. For access, please contact us.

POST https://api.aircall.io/v1/users/:user_id/calls

{
  "number_id": 123,
  "to": "+11234567"
}

To start an outbound Call for a User, you must provide a Number id to start the call from and a number to dial in the request’s body.

Parameter Description
user_id ID of the user to start the call for
number_id ID of the Aircall Number to use for the call
to The number to dial in E164 format

Here are the possible HTTP codes for the response:

HTTP Code Description
204 Success
400 Number not found or invalid number to dial
403 The feature is not enabled for the given API key
405 The User is unavailable

Extra parameters

When you’re browsing or performing searches within objects, you can add extra parameter to your queries, as GET parameters.

Parameter Description Default
page Pagination for list of objects 1
per_page Number of objects fetched per request 20
order Reorder entries per order_by value, asc or desc asc
order_by Set the order field (only for contacts), created_at or updated_at created_at
from Set a minimal creation date for objects (UNIX timestamp) (none)
to Set a maximal creation date for objects (UNIX timestamp) (none)

Extra parameters (Contacts)

When performing searches within contacts, you can specify some other parameters like:

Parameter Description
phone_number Phone number of a contact you’re searching for
email Email address of a contact you’re searching for

Extra parameters (Calls)

To display a specific link during an incoming call, add it in the body of your request as a JSON object:

Parameter Description
link Link you want to display in-app

When performing searches within calls, you can also add tags, user_id, and phone_number parameters:

Parameter Description
tags Tags of a call you’re searching for (it will match all the tags if you send an array)
user_id Id of the calling or receiving User of calls you’re searching for
phone_number The calling or receiving phone number of calls you’re searching for

Extra parameters (Teams)

If you’re adding or removing a User to a Team, you should send the user id.

Parameter Description
id User id to add or remove

Webhooks

Register endpoints

If you’re using ngrok, typing this…

$> ngrok -subdomain=my-webhooks 80

…will create https://my-webhooks.ngrok.com

In order to start using webhooks, you need an Aircall account. Sign up if you don’t have one.

Once you are logged in, go to your integrations’ page. Click on the Webhook block then on the green Install button. Provide a valid URL in the url text field and select all the events you want to subscribe to and… that’s it!

Please note that you can register as many webhooks as you want. Feel free to mix events in order to create a powerful automation of your phone system.

Usage

Example of a simple web server written in NodeJS

const express = require('express'),
   bodyParser = require('body-parser');

const app = express();
const SERVER_PORT = 8080;

app.use(bodyParser.json());

/**
 *  [GET] / route will show a basic JSON file
 */
app.get('/', (req, res) => {
  res.json({'message': 'Server is running'});
});

/**
 *  [POST] / will listen to Aircall webhooks
 */
app.post('/', (req, res) => {
  // Print Webhook's payload
  console.log(req.body);
  res.status(200);
});

app.listen(SERVER_PORT, () => {
  console.log(`Server listening on port ${SERVER_PORT}`);
});

Each time an event occurs on your Aircall account, we are calling back your webhooks. It means that you can build automated tasks, specific to your business, based on these events. Find below the list of events and their description.

Once you’ve registered endpoints, you need to set up a simple web server in order to receive events on these endpoints. Events are sent through payloads and your server needs only to allow POST requests and has to be able to parse JSON in order to read them.

Payloads

Example of a JSON payload

{
  "resource": "number",
  "event": "number.closed",
  "timestamp": 1431272855,
  "token": "1f9c0c4f16f1afad6b00dc998f3d41ce",
  "data": {
    "id": 456,
    "direct_link": "https://api.aircall.io/v1/numbers/123",
    "name": "My first Aircall Number",
    "digits": "+33 1 76 36 06 95",
    "country": "FR",
    "time_zone": "Europe/Paris",
    "open": false,
    "users": [
      {
        "id": 456,
        "direct_link": "https://api.aircall.io/v1/users/456",
        "name": "Madelaine Dupont",
        "email": "madelaine.dupont@aircall.io",
        "available": false
      }
    ]
  }
}

When we trigger an event, we build a JSON payload and send it to your webhook. This payload mixes the JSON formatting of an Aircall’s object (Number, User, Contact, Call) and some metadata like an absolute timestamp or the name of the event.

Field Type Description
resource String Name of the resourcefor this event. Could be number, user, contact or call
event String Event’s name for this payload. See the complete list below
timestamp Integer UNIX timestamp when the payload was built
token String Unique token used by Aircall in order to authenticate the request
data Object Modelization of the resource at the timestamp value

Of course, you can mix webhooks with our API. A best practice could be to fetch the direct link each time you receive a webhook in order to get the latest data about an object.

Examples

We would like to share with you some implementations of webhooks. We’ve already built Slack, Zendesk and Zapier integrations in order to make them directly available from your dashboard (ie without coding)!

Events

Here is the complete list of events sent on webhooks. We refresh every half hour the availability of each number and user for the events “opened” and “closed”.

Name Description
number.created When a new number is created on your account
number.opened When a number opens according to its opening hours
number.closed When a number closes according to its opening hours
number.deleted When a number is deleted on your account
contact.created When a new contact is created on Aircall
contact.updated When a contact is updated on Aircall
contact.deleted When a contact is deleted on Aircall
user.created When a new user is created on your account
user.opened When an user becomes available according to its working hours
user.connected When an user is logged in Aircall Phone
user.closed When an user becomes unavailable according to its working hours
user.disconnected When an user is logged out of Aircall Phone
user.deleted When a user is deleted on your account
call.created When a new call starts
call.answered When a call is answered
call.hungup When a call is hung up
call.ended When a call ends on your account. It will be sent ~20sec after call is actually hung up, time to gather extra data like recording etc.
call.assigned When a call is assigned to someone
call.archived When a call is archived
call.tagged When a call is tagged by someone
call.untagged When a call is untagged by someone
call.commented When a call is commented by someone
call.transferred When a call is transferred to another person
call.ringing_on_agent When a call starts ringing on an agent’s app (currently in beta, please contact us for access)
call.agent_declined When an agent declines an inbound call (currently in beta, please contact us for access)


Feel free to contact us if we forgot some valuable events. We could add them in order to fit your needs!

Libraries

Currently we don’t provide libraries for specific programming languages. However, our webhooks and API use JSON. This format is widespread in the web ecosystem and you can easily find a parser for your favorite language :)

Feel free to ping us if you’ve special queries on this subject or if you built an open-source library for Aircall in order to share it with our community!

Changelog

Date Version Changes
2018-06-15 1.8.2 Add possibility to transfer a call to a Team
2018-05-31 1.8.1 Add call.agent_declined Webhook event
2018-05-30 1.8.0 Add call.ringing_on_agent Webhook event
2018-05-25 1.7.9 New /users/:id/calls endpoint for User object
2018-05-16 1.7.8 Add asset attribute to Call object
2018-04-25 1.7.7 New /calls/:id/pause_recording and /calls/:id/resume_recording endpoints for Call object
2018-04-03 1.7.6 New /calls/:id/tags endpoint for Tags
2018-04-02 1.7.5 Add Tag actions through API
2018-03-20 1.7.4 Allow user_id and phone_number params on Calls search endpoint. Add call.transferred Webhook event
2018-01-11 1.7.3 Allow emails and phone_number update via Contact update endpoint
2017-12-16 1.7.2 Add call.tagged, call.untagged and call.commented Webhook events
2017-12-15 1.7.1 New /calls/:id/comments route to add a comment to a call
2017-12-05 1.7.0 Add Team creation through API
2017-11-22 1.6.0 Add User creation through API
2017-10-02 1.5.0 Add Webhooks management through API
2017-09-18 1.4.5 New /calls/:id/metadata route to display extra info during a call
2017-09-18 1.4.4 Add possibility to update User’s & Number’s name
2017-09-15 1.4.3 Add call.hungup event to Webhooks object
2017-09-06 1.4.2 Add is_ivr parameter on Number object
2017-07-21 1.4.1 Add order_by parameter on Contact list
2017-03-07 1.4.0 Add availability_status update on Users and Numbers objects
2017-01-16 1.3.0 Add user.connected and user.disconnected events for Webhooks
2016-11-08 1.2.0 Add transfers endpoint
2016-10-24 1.1.8 Add Delete endpoints on Call object
2016-10-23 1.1.7 Add search by tags on Call list
2016-05-23 1.1.6 Add information field on Contact object
2016-05-02 1.1.5 Add tags in Call object
2015-11-17 1.1.4 Add link in-app endpoint for Call object
2015-10-08 1.1.3 Add call.answered event for Webhooks
2015-10-01 1.1.2 Add two timestamps in Call object
2015-09-28 1.1.1 Add recording URL in Call object
2015-08-03 1.1.0 API public release
2015-07-31 1.0.9 API beta release
2015-07-30 1.0.4 Add comments to Call object
2015-07-29 1.0.3 Add assignment to Call object
2015-07-28 1.0.2 Introducing direct API links
2015-07-27 1.0.1 Update Contact object
2015-06-02 1.0.0 Public release
2015-05-25 0.9.0 Beta release
2015-05-18 0.1.0 Alpha release
2015-05-10 0.0.1 Initial release