Authorization header. See Authentication to get your token.
List voice models
GET https://app.tingting.io/api/v1/voice-models/
Returns all available AI voices you can use in your campaigns.
Response fields
Unique identifier for the voice model. Use this value as the
voice parameter when creating or updating a campaign.Human-readable name for the voice.
The voice identifier used in OTP requests (e.g.
"np_rija").Whether this voice requires a premium subscription.
Example
Response
List campaigns
GET https://app.tingting.io/api/v1/campaign/
Returns a paginated list of all your campaigns.
Query parameters
Number of results to return per page.
Number of results to skip before returning results.
Filter campaigns by status. Accepted values:
Not Started, Completed, Terminated, Running, Scheduled.Example
Response
Get campaign details
GET https://app.tingting.io/api/v1/campaign/{campaign_id}/
Returns the full details for a single campaign.
Path parameters
The ID of the campaign to retrieve.
Example
Response
Create a campaign
POST https://app.tingting.io/api/v1/campaign/create/
Creates a new campaign. After creating the campaign, use the sub-endpoints below to configure the voice, add contacts, and then run the campaign.
You can use dynamic tags in your
message and sms_message fields using curly brace syntax — for example, {name}, {age}, or {salary}. TingTing fills in these variables per contact when the campaign runs. For example: "नमस्कार, {tags_name}, हजुर {tags_age} वर्षको हुनुहुन्छ".Request body
A display name for your campaign.
The delivery channel for the campaign. Accepted values:
PHONE, SMS, SMS & PHONE.Array of phone group IDs to include in this campaign.
The voice message text. Supports dynamic tags using
{variable_name} syntax.The SMS message text. Required when
services is SMS or SMS & PHONE. Supports the same dynamic tag syntax as message.An optional description for your own reference.
ISO 8601 date or datetime string for when the campaign should start (e.g.,
"2025-07-08" or "2025-07-08T14:00:00"). If omitted, the campaign runs immediately when you call the Run Campaign endpoint.Voice model ID from List Voice Models.
Maximum number of credits to spend on this campaign. The campaign stops when the limit is reached.
Example
Response
Set voice and category
PATCH https://app.tingting.io/api/v1/campaign/create/{campaign_id}/message/
Assigns a voice model and sets the message category for a campaign. Call this after creating the campaign.
Path parameters
The ID of the campaign to configure.
Request body
Voice model ID from List Voice Models.
Message delivery type. Accepted values:
Text, Audio.Adjusts the playback speed of the voice message. Use
"1.00" for normal speed.When
true, saves the campaign as a draft without making it ready to run.Example
Response
Add a single contact
POST https://app.tingting.io/api/v1/campaign/{campaign_id}/add-contact/
Adds a single phone number to a campaign. You can optionally provide custom variable values for dynamic tags used in the campaign message.
Path parameters
The ID of the campaign to add the contact to.
Request body
The phone number to add to the campaign.
Key-value pairs matching the dynamic tags in your campaign message. For example, if your message contains
{name} and {age}, provide {"name": "Rajesh", "age": 23}.Example
Response
Add multiple contacts
POST https://app.tingting.io/api/v1/campaign/{campaign_id}/add-contact/
Adds multiple phone numbers in a single request using the contacts array. Contacts that already exist in the campaign are skipped.
Path parameters
The ID of the campaign to add contacts to.
Request body
Array of contact objects to add. Each object must include
number and optionally other_variables.Example
Response
Upload bulk contacts
PATCH https://app.tingting.io/api/v1/campaign/create/{campaign_id}/detail/
Uploads an Excel file (.xlsx) containing contacts and their custom variable values. The API validates the file and returns a preview of column names, sample values, and the total number of valid rows.
Path parameters
The ID of the campaign to upload contacts to.
Request body
An
.xlsx file. Each row represents a contact. Include a column for the phone number and additional columns for any dynamic tag variables used in your campaign message.Example
Response
Update a campaign
PATCH https://app.tingting.io/api/v1/campaign/{campaign_id}/
Updates one or more fields on an existing campaign. Only the fields you include in the request body are updated.
Path parameters
The ID of the campaign to update.
Request body
New display name for the campaign.
Updated delivery channel. Accepted values:
PHONE, SMS, SMS & PHONE.Updated voice message text.
Updated SMS message text.
Updated schedule as an ISO 8601 date or datetime string.
Example
Delete a campaign
DELETE https://app.tingting.io/api/v1/campaign/{campaign_id}/
Permanently deletes a campaign and all its associated contacts.
Path parameters
The ID of the campaign to delete.
Example
Contact management
List contacts
GET https://app.tingting.io/api/v1/campaign-detail/{campaign_id}/
Returns a paginated list of all contacts in a campaign, along with per-contact call outcomes and credit usage.
Path parameters
The ID of the campaign whose contacts you want to list.
Response fields
Array of contact records.
Total credits consumed across all contacts in the campaign.
Breakdown of contacts by carrier.
Example
Get contact info
GET https://app.tingting.io/api/v1/campaign/{contact_id}/attributes/
Returns the custom attribute values stored for a specific contact.
Path parameters
The ID of the contact whose attributes you want to retrieve.
Example
Response
Edit contact number
PATCH https://app.tingting.io/api/v1/phone-number/update/{contact_id}/
Updates the phone number for a specific contact.
Path parameters
The ID of the contact to update.
Request body
The new phone number to assign to this contact.
Example
Edit contact attributes
PATCH https://app.tingting.io/api/v1/campaign/{contact_id}/attributes/
Updates the custom attribute values for a specific contact. The keys you provide must match the dynamic tag names used in the campaign message.
Path parameters
The ID of the contact whose attributes you want to update.
Request body
One or more key-value pairs matching the dynamic tag names in your campaign message. For example:
{"name": "Ram", "age": "22", "salary": "200000"}.Example
Delete a contact
DELETE https://app.tingting.io/api/v1/phone-number/delete/{contact_id}/
Permanently removes a contact from a campaign.
Path parameters
The ID of the contact to delete.
Example
Response
Testing
Test voice
POST https://app.tingting.io/api/v1/test-speak/riri/{campaign_id}/
Generates a preview audio file so you can hear how your message will sound before running the campaign.
Path parameters
The ID of the campaign whose message you want to preview.
Request body
Voice model ID (1–5) to use for the preview. Get the available IDs from List Voice Models.
The text to convert to speech for the preview.
Example
Response
Demo call
POST https://app.tingting.io/api/v1/demo-call/{contact_id}/
Triggers a real test call to a specific contact before you launch the full campaign. Use this to verify that the message, voice, and dynamic tags work correctly end-to-end.
Path parameters
The ID of the contact to call for the demo.
Example
Run campaign
POST https://app.tingting.io/api/v1/run-campaign/{campaign_id}/
Starts a campaign. If you set a schedule when creating the campaign, it will begin at that time. If no schedule was set, the campaign starts immediately.
Path parameters
The ID of the campaign to run.
Example
- Scheduled response
- Immediate response
Download report
Download call outcome data for a campaign as a CSV file.Campaign report
GET https://app.tingting.io/api/v1/download/{campaign_id}/report/
Downloads a CSV report containing per-contact call outcomes, durations, and credit usage for the specified campaign.
Path parameters
The ID of the campaign to download the report for.
Example
Survey report
GET https://app.tingting.io/api/v1/download/survey/{survey_id}/report/
Downloads a report for a survey campaign. Returns CSV by default. Pass ?format=json to receive JSON instead.
Path parameters
The ID of the survey to download the report for.
Query parameters
Response format. Accepted values:
csv, json.