- Load leads in. Create campaigns and add contacts from your CRM, Clay, Zapier or anywhere else. Reps then open the campaign in Dialbird and start dialing.
- Get outcomes out. Subscribe to
campaign.call.completedto receive each call’s result (its disposition, note, contact and call details) as soon as it is known.
api:campaigns:read or api:campaigns:write scope. They also need the dialer on the workspace’s plan; otherwise every campaign endpoint returns 403 forbidden.
Load leads into a campaign
Create a campaign, then add contacts to it. Every campaign calls and texts from the inboxes you give it ininbox_ids: its dialer sessions and SMS broadcasts can use only those numbers. Get the ids from GET /inboxes.
inbox_idsis required: 1 to 10 inboxes, in the order the dialer rotates through them. A request without it returns400 validation_erroroninbox_ids.- The token acts as the user who created it. An admin’s token can use any inbox. A member’s token can use only the inboxes that member is assigned to:
GET /inboxeslists every inbox in the workspace, and an inbox the member isn’t on returns403 forbidden. - Admins can change a campaign’s numbers later in Dialbird.
inbox_ids became required on campaign creation. Integrations that create campaigns with only a name must now send it.- Send 1 to 500 contacts per request.
- Each contact needs 1–5
phones, in the order they should be dialed. Use E.164, or national format in your workspace’s country. - A contact whose first usable number is already in the campaign counts as a duplicate and is not added again. A contact with no usable number is skipped.
extra_fieldskeeps any other columns as text. Reps see them in the dialer, and they come back on the contact and in the webhook.- Everything you add through the API appears as one “API” entry in the campaign’s import history in Dialbird.
GET /campaigns/{id}/contacts, filterable by status and disposition_id), update one (for example set "status": "do_not_call"), or remove one. See the API reference.
Call outcome webhook
Subscribe tocampaign.call.completed the same way as any other webhook. Dialbird sends one event for each dialer call that rang, once its outcome is final:
If the rep later changes the disposition, Dialbird sends the event again with the same
attempt_id, so treat the latest one as current. A connected call nobody gives a disposition sends nothing.
outcome is one of:
The same call also sends
call.outgoing.completed, so you can subscribe to just one of them..png)