⚡API
API Keys let you access Ring Tonic data programmatically. Use them to build custom integrations, sync call data with your CRM, or power dashboards.
Want an AI assistant to use Ring Tonic for you instead? Connect Claude, Cursor, or Windsurf with an MCP key and ask in plain language — same data, no code.
Creating an API Key
Go to Settings → API Keys
Enter a descriptive name (e.g., "SEO Utils Integration")
Choose the key's scopes — pick the Read-only preset, Full access, or toggle individual scopes yourself
(Optional) Set an Expiration: Never, 30, 90, or 365 days
Click Create API Key
Copy your key immediately — you won't see it again

Store your key securely. Treat it like a password. Anyone with your key can access your data.
Using Your API Key
Include the key in the Authorization header of all requests:
Managing Keys
View keys
Settings → API Keys
See last used
Check the "Last Used" column
Revoke key
Click the trash icon → Confirm
Revoking is permanent. Any integrations using that key will immediately stop working.
Available Endpoints
Full interactive documentation — every endpoint with request and response schemas, plus a built-in "Try It" console — lives here:
You can read campaigns, call logs (with recordings and transcriptions), contacts, conversions, tracking numbers, call flows, tags, webhook endpoints, form submissions, blocked numbers, products & services, and appointments.
Creating and Changing Data
The API can now build and maintain your account, not just read from it. Onboarding a new client no longer has to be a session in the dashboard — it can be a script.
Campaigns
✅
✅
✅
Call flows
✅
✅
✅
Tracking numbers
✅
✅
✅
Tags
✅
✅
✅
Products & services
✅
✅
✅
Webhook endpoints
✅
✅
✅
Appointments
✅
✅
—
Blocked numbers
✅
—
✅
Call logs
—
✅
✅
Contacts
—
—
✅
A few actions go beyond simple create and update:
Attach or detach a call flow on a campaign, to change how its calls are answered
Duplicate a call flow, to reuse a working setup for another client
Rotate a webhook signing secret, or send a test event to confirm your endpoint is reachable
Book, reschedule, cancel, or mark an appointment completed or no-show — the same booking engine the AI agent and the dashboard use
Deleting a call flow changes how calls are answered. Every campaign using that flow is detached and falls back to its simple forwarding settings. Check which campaigns use a flow before removing it.
Call flows and phone numbers can now be managed end to end. You can design a flow, publish it, and buy the number that answers it without opening the dashboard. Both are covered in their own sections below.
Building Call Flows
A call flow is a set of steps — greet the caller, check business hours, ring a team, take a message — connected together. The API works with the same flows the Call Flow Builder produces, so you can design one by hand and then reproduce it for every client with a script.
Each flow has two copies: the draft you are editing, and the published version that is answering calls. Writing to a flow only ever changes the draft.
A flow is written whole, not step by step. There is no way to add or remove a single step: whatever you send becomes the draft, so a step you leave out is removed along with its connections.
Always read the flow first, change the parts you want, and send the whole thing back. Building the request from scratch for a small edit will delete the rest of the flow.
Buying and Releasing Numbers
Onboarding a client can now include getting them a number. The API can search what is available, buy one, point it at a campaign, and give it back when the client leaves.
Releasing a number is permanent. The number returns to the carrier's pool, and anyone can buy it next. Calls to it stop reaching you immediately, and existing marketing that still shows the number will ring a stranger. If you only want to stop using a number on a campaign, unassign it instead — it stays in your inventory.
📅 Booking Appointments
Ring Tonic can book and manage appointments from your own tools — a scheduler, a CRM, or a script — using the same booking engine the AI agent and the dashboard use. A booking made this way shows up in the Appointments hub, syncs to Google Calendar when it's connected, and is attributed back to the call it came from.
This needs the appointments write scope on the key. Booking for a brand-new caller — someone who isn't a contact yet — additionally needs the contacts write scope, because it creates a contact record.
A booking request looks like this:
A clashing time warns, but does not block. If the slot overlaps something already booked, the request comes back with a conflict you can act on. To book anyway, send it again with ignore_conflicts turned on — and, because it creates a record, a fresh Idempotency-Key.
Safe Retries
If a request times out, you rarely know whether it succeeded. Send it again and you risk creating the same campaign twice.
To avoid that, include an Idempotency-Key header on any request that creates something. Choose a unique value per action — a UUID works well:
Retry with the same key and you get the original response back instead of a second campaign. Use a new key for each genuinely new action.
Limiting What the API Can Spend
Workspace owners can cap how many phone numbers the API is allowed to buy per day, so an integration with a bug can't run up a bill overnight.
Common Questions
Last updated
