curl --request PUT \
--url https://app.thinnest.ai/api/v1/phone-numbers/business-details \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'businessName=Acme Traders Private Limited' \
--form gstRegistered=true \
--form document=@example-fileconst form = new FormData();
form.append('businessName', 'Acme Traders Private Limited');
form.append('gstRegistered', 'true');
form.append('document', '(the GST certificate, gst-certificate.pdf)');
const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://app.thinnest.ai/api/v1/phone-numbers/business-details', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/phone-numbers/business-details"
files = { "document": ("example-file", open("example-file", "rb")) }
payload = {
"businessName": "Acme Traders Private Limited",
"gstRegistered": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.put(url, data=payload, files=files, headers=headers)
print(response.text)Send Business Details
Sends the business’s details for approval, as multipart/form-data: the legal name, whether it is registered for GST, and one document — the GST certificate if it is, otherwise its Certificate of Incorporation or its Udyam certificate (say which in documentKind; incorporation is assumed). PDF, JPG or PNG, at most 5 MB, filename at most 99 characters. This is the Business details form in the console, run by the same code. The details go to India’s numbering authority in the business’s name, so this needs a full key. There is one live application per workspace: sending while one is being checked, or after it was approved, is 409; sending after a rejected one corrects that application in place (200), and a first or expired one creates a new application (201). Approval usually takes a few minutes — read it with Get Business Details, then rent the number. Needs a paid plan.
curl --request PUT \
--url https://app.thinnest.ai/api/v1/phone-numbers/business-details \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'businessName=Acme Traders Private Limited' \
--form gstRegistered=true \
--form document=@example-fileconst form = new FormData();
form.append('businessName', 'Acme Traders Private Limited');
form.append('gstRegistered', 'true');
form.append('document', '(the GST certificate, gst-certificate.pdf)');
const options = {method: 'PUT', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://app.thinnest.ai/api/v1/phone-numbers/business-details', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/phone-numbers/business-details"
files = { "document": ("example-file", open("example-file", "rb")) }
payload = {
"businessName": "Acme Traders Private Limited",
"gstRegistered": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.put(url, data=payload, files=files, 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 business's legal name, as on its certificate.
"Acme Traders Private Limited"
Whether the business is registered for GST.
true, false The one certificate: PDF, JPG or PNG, at most 5 MB, filename at most 99 characters.
Which certificate document is. Optional: gst when registered for GST, otherwise incorporation. When not registered it may be incorporation or udyam.
gst, incorporation, udyam Response
A rejected application was corrected and sent again, in place.
The workspace's application for Indian numbers. Only status is present when nothing has been sent (none).
none — nothing sent. submitted — being checked. accepted — approved. rejected — correct what reviewNote says and send again. suspended — approval withdrawn; no new number can be rented. expired — lapsed; send again. draft — started and never sent.
none, draft, submitted, accepted, rejected, suspended, expired "submitted"
The legal name the application was sent under; null if it could not be read just now.
"Acme Traders Private Limited"
Whether the business said it is registered for GST.
Which document was sent.
gst, incorporation, udyam, null When it was last sent.
Present on a rejected application: what to correct.
True when the details are approved, so an Indian number can be rented.