Every call logged against the right candidate, without you doing it.
Aircall is a call and meeting tool, and one of the 52 tools hyreflow connects to Claude, ChatGPT and other AI assistants. Through hyreflow, an AI agent can run 21 actions: 12 that look something up and 9 that create or change records. Aircall runs on your own Aircall account: hyreflow charges no credits for it, and Aircall bills you as before.
Your agent pulls Aircall call logs, transcripts and summaries and writes them onto the candidate record in your CRM. It can dial out and send SMS too. The call ends up on record, not in someone's memory.
Aircall reads and writes. Calls flow in; notes flow out to the CRM.
With hyreflow connected, you ask for the outcome in plain language and the assistant runs Aircall for you. For example:
In a hyreflow run, Aircall is most often paired with Bullhorn, Lusha, Fathom and Recruit CRM.
the record the call notes belong on
the direct dials worth calling in the first place
the recorded interviews Aircall does not cover
call activity onto the candidate
Through hyreflow, an AI agent can run 21 Aircall actions: 12 that look something up and 9 that create or change records. Aircall runs on your own Aircall account: hyreflow charges no credits for it, and Aircall bills you as before.
| Aircall action | What it does | Cost through hyreflow |
|---|---|---|
| Search calls | Looks something up | no hyreflow credits |
| Search contacts | Looks something up | no hyreflow credits |
| Create contact | Creates or changes a record | no hyreflow credits |
| Create webhook | Creates or changes a record | no hyreflow credits |
| Send message | Creates or changes a record | no hyreflow credits |
| Comment call | Creates or changes a record | no hyreflow credits |
| Delete contact | Creates or changes a record | no hyreflow credits |
| Delete webhook | Creates or changes a record | no hyreflow credits |
| Dial | Creates or changes a record | no hyreflow credits |
| Tag call | Creates or changes a record | no hyreflow credits |
| Aircall action | What it does | Cost through hyreflow |
|---|---|---|
| Update contact | Creates or changes a record | no hyreflow credits |
| List calls | Looks something up | no hyreflow credits |
| List contacts | Looks something up | no hyreflow credits |
| List numbers | Looks something up | no hyreflow credits |
| List tags | Looks something up | no hyreflow credits |
| List users | Looks something up | no hyreflow credits |
| List webhooks | Looks something up | no hyreflow credits |
| Get call | Looks something up | no hyreflow credits |
| Get call summary | Looks something up | no hyreflow credits |
| Get contact | Looks something up | no hyreflow credits |
| Get transcription | Looks something up | no hyreflow credits |
One credit is priced on the pricing page. The full price list for every tool is in the pricing tables.
One hyreflow skill calls Aircall as part of the run. A skill is a whole pipeline your agent already knows, end to end.
hyreflow ships a written playbook for Aircall, and the agent loads it before the first call. Auth, rate limits, what each call costs, which actions need your approval, and the mistakes worth avoiding. It is the difference between an agent that knows the tool and one that guesses at it.
Read the Aircall docs →HOW in lib/aircall.py. Docs: developer.aircall.io/api-references.
https://api.aircall.io/v1 · Auth: HTTP Basic — username=your Aircall API ID, password=your API Token (an Aircall admin generates them under Integrations > API keys; the token is shown once; never hardcode). (Multi-company partner apps use OAuth bearer — not in this adapter.)page / per_page (max 50); iter_calls/iter_contacts auto-walk via meta.next_page_link. Calls & Contacts capped at 10,000 items total; history is 6 months.X-AircallApi-Remaining).Calls: list_calls/iter_calls, get_call, search_calls, tag_call, comment_call, get_transcription, get_call_summary. Contacts: list/iter/search/get/create/update/delete (phone_numbers & emails are [{label,value}]). Also list_users, dial, list_numbers, list_tags, webhooks, send_message (SMS). request() covers the rest.
dial, send_message, tag_call, comment_call are write/outbound actions on a live phone system — confirm before bulk; pilot one.
Read source: pull call logs + transcripts/summaries → write as candidate activity into the ATS. Write target: comment_call to log recruiter notes; dial for click-to-call.
lib/aircall.pyImport: from lib.aircall import Aircall → instantiate Aircall() (reads key from env). Base: https://api.aircall.io/v1. Generic passthrough: request(method, path, *, params, json).
comment_call(call_id: int, content: str) -> Any — POST /calls/{id}/comments — add a note to a call.create_contact(payload: dict) -> Any — POST /contacts — phone_numbers/emails are lists of {label,value}.create_webhook(url: str, *, events: list[str] | None = None, **params) -> Any — POST /webhooks — subscribe to events (e.g. call.created, call.ended).delete_contact(contact_id: int) -> Anydelete_webhook(webhook_id: str) -> Any — DELETE /webhooks/{id} — remove a webhook subscription.dial(user_id: int, number: str) -> Any — POST /users/{id}/dial — push a number to a user's phone.get_call(call_id: int) -> Anyget_call_summary(call_id: int) -> Anyget_contact(contact_id: int) -> Anyget_transcription(call_id: int) -> Any — GET /calls/{id}/transcription — call transcript (falls back to /realtime_transcription).iter_calls(**params) -> Iterator[dict]iter_contacts(**params) -> Iterator[dict]list_calls(**params) -> Any — GET /calls — historical calls (page/per_page; from/to UNIX, direction, etc.).list_contacts(**params) -> Anylist_numbers(**params) -> Anylist_tags(**params) -> Anylist_users(**params) -> Any — GET /v2/users — users with default_number_id + availability (v1 users is deprecated).list_webhooks(**params) -> Anyping() -> Any — GET /ping — verify the API ID + token (returns {"ping": "pong"}).search_calls(**params) -> Any — GET /calls/search — filter calls (phone_number, user_id, tags, from/to...).search_contacts(**params) -> Any — GET /contacts/search — by phone_number / email.send_message(number_id: int, to: str, body: str) -> Any — POST /numbers/{id}/messages/native/send — send an SMS from an Aircall number (shows in its inbox).tag_call(call_id: int, tags: list[str]) -> Any — POST /calls/{id}/tags — apply tags to a call.update_contact(contact_id: int, payload: dict) -> Any — POST /contacts/{id} — update a contact (partial fields OK).Yes. hyreflow is a connector for Claude, ChatGPT and other AI assistants. Once hyreflow is connected, you ask for the outcome in plain language and the assistant calls Aircall for you. hyreflow exposes 21 Aircall actions this way.
Yes. Aircall runs on your own Aircall account. You connect it to hyreflow once, hyreflow charges no credits for the calls, and Aircall bills you as before.
Aircall runs on your own Aircall account: hyreflow charges no credits for it, and Aircall bills you as before.
Add the hyreflow MCP server to your assistant and sign in. hyreflow calls the Aircall API directly and exposes its actions as tools the assistant can run, so there is no separate Aircall server to install.
Connect hyreflow to Claude or ChatGPT and ask for the outcome. It reads the playbook above before it makes a single call.