API reference
Dial Dozer exposes seven key-authenticated operations plus public booking, Dynamic Number Insertion (DNI), provider ingress, and signed outbound webhooks.
Key-authenticated operations
Section titled “Key-authenticated operations”| Operation | Method and path | Scope | Limit |
|---|---|---|---|
| Create or deduplicate a lead | POST /hooks/lead_intake.php | leads:write | 120/hour/key |
| Get a lead | GET /hooks/api_v1.php?r=leads/{lead_id} | leads:read | 300/hour/key* |
| Get a conversation | GET /hooks/api_v1.php?r=conversations/{lead_id} | conversations:read | 300/hour/key* |
| Send a message or note | POST /hooks/api_v1.php?r=messages | messages:write | 300/hour/key* |
| Queue a CTI dial | POST /hooks/api_v1.php?r=cti/dial | cti | 300/hour/key* |
| Look up a caller | GET /hooks/api_v1.php?r=cti/lookup&phone=... | cti | 300/hour/key* |
| Ingest KPI points | POST /hooks/kpi_ingest.php | metrics:write | 600/hour/key |
* All key-authenticated endpoint families currently increment the same per-key/hour counter. Each endpoint then applies its own threshold (120, 300, or 600), so traffic to one family can exhaust a stricter family. The five api_v1.php operations also share the 300 threshold.
Use X-Api-Key for authentication. A JSON/form api_key field also works, but headers avoid leaking credentials into payload logs.
curl --fail-with-body \ -H "X-Api-Key: $DIALDOZER_API_KEY" \ "https://app.dialdozer.com/hooks/api_v1.php?r=leads/12345"Other integration surfaces
Section titled “Other integration surfaces”- Outbound webhooks — signed business events delivered to your HTTPS endpoint.
- Dynamic Number Insertion — browser-safe pool leases and attribution events.
- Public booking — slot listing, booking, and token-based rescheduling.
- Provider webhooks — Telnyx, Twilio, and SendGrid ingress.
- Errors and rate limits — status codes, fixed windows, and retry guidance.
- OpenAPI — downloadable OpenAPI 3.1 JSON/YAML for the seven key-auth operations.
Current contract boundaries
Section titled “Current contract boundaries”The API is query-routed PHP, not a rewritten /v1/... REST surface. IDs are numeric. Tenant-bound keys can only address leads in campaigns mapped to their organization; platform-global keys are not tenant-restricted. Pagination is not currently exposed: conversation reads return at most the latest 200 merged entries.