API Reference · Introduction
API Reference
The Daffy Voice REST API lets your own systems — a CRM, a website form, a script — run calling campaigns, send contacts to a live workflow, and manage the phone numbers your AI employees answer on. Every request is made with an API key and returns JSON.
Base URL
All endpoints live under one base URL, and every path in this reference is relative to it:
https://calling.ubiqproject.com/api/v1The API version is part of the path (/api/v1).
Your first request
Create a key in the dashboard (Create an API key), then check it works:
curl https://calling.ubiqproject.com/api/v1/whoami \
-H "Authorization: Bearer vk_live_YOUR_KEY"{
"tenant_id": "6d1f0b2a-4e7c-4a39-9b85-c2e3f4a5b6d7",
"auth_method": "api_key",
"scope": "full"
}What the API covers
Built in the dashboard
Requests and responses
- Send request bodies as JSON with
Content-Type: application/json. The one exception is uploading contacts, which takes a CSV file asmultipart/form-data. - Responses are JSON, except the campaign export, which is a CSV file.
- IDs are UUIDs, such as
9b4e6f12-8a3c-4d71-b05e-2f6a8c1d7e93. - Times are ISO 8601 in UTC, such as
2026-10-08T09:14:22.512341Z. - Phone numbers are in international format, such as
+919876543210. - Deletes return
204 No Contentwith an empty body.
Pagination
There is no pagination. List endpoints return every item in your company at once, newest first, and take no query parameters.
Rate limits
Each IP address may make 120 requests per minute to the API. Above that, requests fail with 429 Too Many Requests until older requests drop out of the one-minute window:
{ "error": "rate_limited", "scope": "ip" }There is no Retry-After header. Wait a few seconds and try again, and send contacts in batches (up to 1,000 per workflow trigger) rather than one request per contact.