Build on Unbound.
Ship faster.
REST API, WebSocket subscriptions, SQL-like queries, and a full SDK. Everything you need to build on top of, or deeply integrate with, Unbound.
Everything is
an API.
Every feature in Unbound is accessible via REST. Auth with a Bearer token. Base URL is namespace-scoped.
Voice, AI, Workflows, Messaging, Task Router, Knowledge Base, and more.
HTTP for CRUD, WebSocket for real-time event streams.
Your data is fully isolated: https://yourco.api.region.app1svc.com
Simple token auth on every request. API keys managed via the dashboard.
SQL for your
contact center data.
UOQL (Unbound Object Query Language) is a full SQL-like query language for your CRM and contact center data. Run it from workflows, the API, or the CLI.
POST /object/query/v2
Content-Type: application/json
Authorization: Bearer <token>
{
"query": "SELECT firstName, lastName, phone, lastCallDate FROM people WHERE status = 'active' AND lastCallDate > '2026-01-01' ORDER BY lastCallDate DESC LIMIT 50"
}Query any object: contacts, CDRs, tasks, sessions, knowledge base articles, and your own custom objects.
Real-time events
on everything you care about.
Subscribe to any object type and receive live events the moment data changes. Built on Socket.IO v4 with namespace isolation.
// Connect and subscribe to call events
const socket = io("https://socket.region.app1svc.com", {
auth: { namespace: "yourco", tokenType: "cookie" }
});
socket.on("objects.event", (event) => {
// Fires on every CDR create/update in real time
console.log(event.objectName, event.action, event.data);
});Live call dashboards
CDR events fire the instant a call starts, updates, or ends.
Agent status boards
Worker availability changes broadcast in real time.
CRM sync
Object changes propagate immediately to connected integrations.
First-class SDK.
Zero boilerplate.
The @unboundcx/sdk is the official JavaScript/TypeScript client. Built and maintained by the Unbound team.
npm install @unboundcx/sdkimport UnboundSDK from "@unboundcx/sdk";
const unbound = new UnboundSDK({
namespace: "yourco",
token: process.env.UNBOUND_API_TOKEN,
region: "us-east-1"
});
// Query contacts
const contacts = await unbound.objects.query("people", {
conditions: [{ field: "status", operator: "equals", value: "active" }],
limit: 100
});
// Start a workflow session
const session = await unbound.workflows.createSession(workflowVersionId, {
engagementSessionId: engId,
sipCallId: callId
});
// Send SMS
await unbound.messaging.sendSms({
to: "+15551234567",
from: "+15559876543",
body: "Your appointment is confirmed for tomorrow at 2pm."
});Command line.
Full power.
# Install
npm install -g @unboundcx/cli
unbound login
# List workflows
unbound workflows list
# Inspect a workflow
unbound workflows inspect <id>
# Query objects with UOQL
unbound query "SELECT * FROM people WHERE phone LIKE '555%'"
# List queues
unbound queues list
# Check agent status
unbound agents list --queue supportEvery API capability accessible from the terminal.
Connect to
everything else.
Webhooks
Receive inbound events from Stripe, Telnyx, Google, AWS SNS, and any HTTP source.
OAuth 2.0
Connect external providers with PKCE, encrypted state, and automatic token refresh.
Google Calendar
Sync calendar events and video room scheduling with webhook notifications.
Telnyx
Native telephony integration for voice, SMS/MMS, and fax via Telnyx.
AWS SES
Transactional and campaign email delivery through Amazon SES.
AWS Bedrock
AI reranking and model access for knowledge base search and generative features.
Fax
Send and receive faxes via Telnyx integration. Same API, different channel.
10DLC & Toll-Free
Full US SMS campaign registration, brand verification, and compliance built in.
Custom Objects
Define your own data schemas, query them with UOQL, and use them in workflows.
API-first,
always.
Every Unbound feature ships with a documented REST endpoint on day one.
Get API Access