curl --request POST \
--url https://app.thinnest.ai/api/v1/do-not-call \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "+919876543210",
"reason": "Complaint by email, 6 Oct"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({phone: '+919876543210', reason: 'Complaint by email, 6 Oct'})
};
fetch('https://app.thinnest.ai/api/v1/do-not-call', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/do-not-call"
payload = {
"phone": "+919876543210",
"reason": "Complaint by email, 6 Oct"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)Add Do-Not-Call Number
Puts a number on the list; from then on no outbound call rings it. Adding a number already there changes nothing and answers 200 with the entry as it was. A build key may do this — it only ever stops calls.
curl --request POST \
--url https://app.thinnest.ai/api/v1/do-not-call \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "+919876543210",
"reason": "Complaint by email, 6 Oct"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({phone: '+919876543210', reason: 'Complaint by email, 6 Oct'})
};
fetch('https://app.thinnest.ai/api/v1/do-not-call', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/do-not-call"
payload = {
"phone": "+919876543210",
"reason": "Complaint by email, 6 Oct"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace. Refused with 404 (Workspace not found.) when the id is unknown, is not one of your customers, or is not an org_… id; 410 when that customer was deleted (restore it with POST /customers/{id}/restore until it is erased); 403 when the key belongs to one customer workspace (it cannot act as another); 400 when your workspace is not a developer workspace. /customers/* and GET /customers/usage are your own workspace's and refuse the header with 400: call them without it.
"org_3fKq9TzQ1mN8vB2xR7cLpA"
Body
The number, with its country code. Spaces, dashes and brackets are ignored; a number without one is read as Indian.
"+91 98765 43210"
Why, in your own words — kept for whoever later wonders whether to remove it. 200 characters at most.
"Complaint by email, 6 Oct"
Response
Already on the list; the existing entry.
A number no outbound call may ring.
do_not_call E.164, with the plus.
"+919876543210"
How it got here: added in the console, by this API, or by the agent when the caller asked during a call.
console, api, call "call"
The call it was asked on, as Get Call takes it, when source is call.
"out_9f2c1a44-6b0e-4c1d-8a7f-2e5b3c9d1f60"
"Asked on a call not to be called again."
"2026-10-07T09:12:44.018Z"