Set up the inbound agent
Configure the agent on the number withPATCH /v1/phone/numbers/{id} (scope phone:write). Bind an inboxId too — that is where answered calls land.
Every field is optional and independent; pass
null to reset one to its default. The number object returns all four, so GET /v1/phone/numbers/{id} always shows how the line is set up.
What lands in your inbox
When the caller hangs up — or says goodbye and the agent hangs up — Dairo writes a summary, pulls out the caller’s structured notes, and delivers the call to the number’s bound inbox as a message withchannel: "voice". It fires the normal message.received webhook, so an agent picks it up with read_mailbox or its event loop, exactly like an email or a Telegram message.
Say you call your number and tell it: “Hey Dairo, remember I need to call the bank tomorrow.” This message arrives in your inbox:
channelMetadata.notes is the part your agent acts on. Each note has a kind — task, note, reminder, or message — the text, and a due as the caller said it ("tomorrow", "Friday 3pm"), or null when there is none. The readable textBody repeats the summary, the notes, and the full transcript for a human skimming the inbox.
The call itself
An inbound call is a regularphone_call with direction: "inbound" — list it with GET /v1/phone/calls, fetch its transcript and recording, and follow it with the call.status_changed webhook, all as on Making calls. Its notes field carries the same notes as the inbox message: