Developer
⌘K
Dashboard
Getting Started

Introduction

Welcome to the Tabbly API — build voice agent campaigns, manage agents, and retrieve call data.

Introduction

Welcome to the Tabbly Developer API. Use it to build voice automation at scale — create AI agents, buy phone numbers, run outbound campaigns, enable inbound calling, and retrieve call logs from your own applications.

What is the Tabbly API?

The Tabbly API lets you programmatically manage the same resources you configure in the Tabbly dashboard. You can create voice agents, attach phone numbers, schedule campaigns, add contacts, and pull transcripts and recordings — all over standard HTTP requests with JSON responses.

Whether you are integrating Tabbly into a CRM, building an internal ops tool, or automating outbound calling at scale, the API is designed to fit into your existing backend workflows.

Quick start

  1. Obtain your API key and organization ID from the Tabbly dashboard.
  2. Browse voices with Get Voices.
  3. Create a voice agent with Create Agent.
  4. Create a campaign with Create Campaign and add contacts with Add Contacts.
  5. Search and buy phone numbers with Search Phone Numbers, or bring your own DID with Bring Your Own SIP Trunk. (Optional)
  6. Enable inbound calling with Create Inbound. (Optional)
  7. Retrieve call logs with Get Call Logs.
  8. Receive call events in real time with Webhooks. (Optional)

Optional steps

Phone numbers — Not required to create an agent or launch an outbound campaign. Add this step when you need a dedicated number assigned to an agent — for example, as the caller ID on outbound calls or to receive inbound calls from customers. You can buy a Tabbly number or bring your own SIP trunk.

Bring your own SIP — Use your carrier DID for outbound (dashboard), then optionally enable inbound and point your carrier at Tabbly’s SIP URI. See Bring Your Own SIP Trunk.

Inbound calling — Only needed if customers should call your number and reach the AI agent. Outbound campaigns work without inbound setup.

Webhooks — Optional alternative to polling call logs. Configure a URL in Developer API to receive POST payloads when each call ends.

Base URLs

Area Base URL
Campaign endpoints https://www.tabbly.io/dashboard/agents/endpoints/
Agent & voice APIs https://www.tabbly.io/api/
Inbound calling APIs https://www.tabbly.io/api/inbound/
Phone number APIs https://www.tabbly.io/api/phone-numbers/

Authentication

Every request needs your organization API key from the Tabbly dashboard. How you send it depends on the HTTP method.

POST endpoints

Add your key to the JSON body:

json
{
  "api_key": "YOUR_API_KEY"
}

Some POST endpoints also accept the X-API-Key header — see the endpoint page for details.

GET endpoints

Send your key in one of these ways:

Option Example
Header (recommended) X-API-Key: YOUR_API_KEY
Query parameter ?api_key=YOUR_API_KEY

Used on Get Voices and Get Call Logs.

Using the examples in this documentation

All curl samples use YOUR_API_KEY as a placeholder. Replace it with your organization API key before sending the request.

How to get your API key

  1. Log in to the Tabbly dashboard.
  2. Open your organization settings and locate your API key and organization ID.
  3. Store the key securely — treat it like a password. Never commit it to source control or expose it in client-side code.

Response conventions

Most endpoints return a standard envelope:

json
{
  "status": "success",
  "data": { }
}

Errors usually return status: "error" with a message field and an appropriate HTTP status code.

Alternate envelopes

Some endpoint groups use a slightly different shape:

Endpoint group Success Error
Update Campaign { success, message, data } { error }
Get Agents / Get Voices { status, data/count/voices } { error } (no status field)
Phone Numbers { success, ... } { success: false, error }
Add Contacts { status, id, custom_identifier } or bulk { status, summary, results } { status: "error", message } — often with HTTP 200

HTTP status codes

Code Meaning
200 Success (some endpoints also return HTTP 200 for application errors in the JSON body — see Add Contacts)
400 Bad request — missing or invalid parameters
401 Unauthorized — invalid or missing API key
403 Forbidden — wrong organization, inactive subscription, or free-tier restriction
404 Resource not found
405 Method not allowed
409 Conflict (e.g. duplicate inbound phone)
500 Server error
502 External service failure (e.g. SIP provisioning)

Need help?

Visit the Tabbly dashboard or contact your account team for API access and organization setup.