DialSwarm
How it works Product Reception Pricing Guides
Sign in Start free
How it worksProductReceptionPricingGuidesSign in

DialSwarm / Compliance / API

DialSwarm API v1

For automation tools (Zapier, Make) and your own scripts

Base URL: https://dialswarm.com/api/v1. Everything is JSON over HTTPS.

Authentication

Create a key in the workspace under Integrations, API keys, and send it as Authorization: Bearer dsk_.... Creating a key asks you to tick the consent confirmation. When ticked, it is stored and covers every lead sent with that key: "I confirm every number in this list gave prior express written consent to be called by [your company] using an automated or AI voice, and I accept responsibility for that consent." Keys can be revoked at any time. Limit: 60 requests per minute per key (HTTP 429 with Retry-After).

Errors look like { "error": "plain English", "reasons": ["..."] }.

GET /me

Checks the key. Returns { "account": { "id", "email", "company" }, "plan": "basic" }.

GET /campaigns

Returns [ { "id", "name", "status" } ].

POST /leads

Adds one lead with its consent record. The call still has to pass every compliance check when it is dialed (Do Not Call, calling hours in the person's time zone, caller ID).

curl -X POST https://dialswarm.com/api/v1/leads \
  -H "Authorization: Bearer dsk_..." -H "Content-Type: application/json" \
  -d '{
    "name": "Jordan Lee", "phone": "+14155551234", "company": "Globex",
    "campaign_name": "Zapier leads",
    "consent_source": "Web form on globex.com",
    "consent_date": "2026-09-01",
    "consent_business_name": "Your Company Inc"
  }'

Required: phone. Send the consent record with every lead: consent_source (free text), consent_date (YYYY-MM-DD, not in the future) and consent_business_name (your company name, or include consent_override_reason). If a consent field is missing, the lead is still saved with "Entered by the account user", today's date and your company name, so send the real values. Use campaign_id or campaign_name (found or created). Returns 201 with { "id", "campaign_id", "status": "queued" }, or 422 with the reasons.

Webhooks (REST hooks)

POST /hooks with { "target_url": "https://...", "event": "call.completed" } (or meeting.booked) returns 201 with { "id", "secret" }. DELETE /hooks/:id returns 204. Each delivery is a POST of { "event", "id", "created_at", "data" } with the header X-DialSwarm-Signature: sha256=<hex HMAC-SHA256 of the raw body using your hook secret>. A 2xx response is success. Failures are retried after 1 minute, 10 minutes and 1 hour.

Sample data

GET /calls/recent?limit=3 returns the newest completed calls (id, status, outcome, summary, lead, durations, transcript_url, agent). GET /meetings/recent?limit=3 returns booked meetings. Outcomes: interested, not_interested, callback, voicemail, no_answer, busy, rejected, screened, wrong_number, dnc_request, transferred, unknown.

Compliance

The API cannot be used to skip consent. Every lead is saved with a consent record, keys created with the consent confirmation carry a stored attestation, and the platform's other safeguards run at dial time. See Compliance, Terms and Privacy. Questions: [email protected].

DialSwarm

AI agents that make the first call, so your reps make the close.

Product
  • How it works
  • Portal
  • AI reception
  • Pricing
  • Cost calculator
  • What is an AI SDR?
  • Guides
  • Help center
  • Blog
  • Glossary
  • Compare
Who it's for
  • Insurance
  • Real estate
  • Home services
  • B2B software
  • Staffing
  • Mortgage
  • Law firms
  • All industries
Company
  • Referrals
  • Team onboarding
  • API
  • Contact
  • Compliance
Legal
  • Privacy
  • Terms
  • Do not sell my info