DialerBee APIv1 · 1.0.0-rc6

Calls, leads and messages

Click-to-call, SMS and adding a lead that is dialled at once are available once your account administrator has switched them on and made a sending key: see Sending for the setup and every error a send can answer. WhatsApp messages are not available yet: they answer 403 tier_not_enabled for every account until DialerBee announces them in the changelog. Adding a lead to a draft, ready or paused campaign works with leads:write.

Click-to-call

POST /v1/calls (scope calls:originate, a sending key) connects one of your agents with a customer, for example from a "Call" button in your CRM.

curl -sS https://app.dialerbee.com/api/v1/calls \
  -H "Authorization: Bearer $DIALERBEE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"to": "+12125550101", "agent_extension": "3901"}'
  1. DialerBee checks that the agent (by agent_extension or agent_email) belongs to your account and is signed in and ready, and holds the agent for this call (shown as ringing), so no other call reaches them meanwhile. Otherwise, or when the agent is already held for another call, the answer is 409 agent_unavailable and nothing is dialled.
  2. Every compliance check runs before the dial: Do-Not-Call, calling hours, caller ID ownership and blocked countries. A refusal is 422 dial_refused (errors[0].code says why), on_dnc or blocked_country, nothing is dialled and the agent is free again at once.
  3. DialerBee dials the customer from one of your own verified caller IDs (or the caller_id you name, which must be one of your verified numbers: any other number is 422 dial_refused with caller_id_not_registered, before anything is dialled) and joins the agent when the customer answers.

The answer is 201 with status: "dialing" and the call_id when the call record can be matched at once (otherwise null: the call still appears in GET /v1/calls and in the call.completed webhook). Retry only with the same Idempotency-Key: a new key places a new call.

Speed-to-lead

POST /v1/leads (scope leads:write) adds one lead the moment it arrives, for example from a web form. It runs the same checks as an import (phone, field rules, duplicates, Do-Not-Call, blocked countries) and answers with the same per-lead status.

WhatsApp

POST /v1/whatsapp/messages (scope whatsapp:send) sends exactly one of text or an approved template (name and its params) from your own WhatsApp number. Every message carries your own client_reference; a second message with the same reference answers 409 duplicate_client_reference and nothing is sent again. A free text outside the customer's 24-hour service window can be refused by WhatsApp: use a template there.

SMS

POST /v1/sms is Tier 2: it needs the scope messages:send (a sending key) and your account's SMS switch (Tiers). The number goes through the same compliance checks as the console first (Do-Not-Call, calling hours, consent, blocked countries, balance), and every message carries your own client_reference: a repeat is refused and nothing is sent twice.