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:

Base URL
https://calling.ubiqproject.com/api/v1

The 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:

Request
curl https://calling.ubiqproject.com/api/v1/whoami \
  -H "Authorization: Bearer vk_live_YOUR_KEY"
Response · 200
{
  "tenant_id": "6d1f0b2a-4e7c-4a39-9b85-c2e3f4a5b6d7",
  "auth_method": "api_key",
  "scope": "full"
}

What the API covers

Built in the dashboard

AI employees, workflows, knowledge documents and call recordings are created and managed in the dashboard. The API lists your AI employees and triggers your workflows, but can't create or edit them yet.

Requests and responses

  • Send request bodies as JSON with Content-Type: application/json. The one exception is uploading contacts, which takes a CSV file as multipart/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 Content with 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:

Response · 429
{ "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.

Something unclear or missing? Contact us →