Compliance
Create compliance application API
Submit a phone number compliance application for India (DLT) with your business details, CIN certificate and GST certificate.
POST
/
compliance
/
create
cURL
curl --request POST \
--url https://api.bolna.ai/compliance/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form first_name=Jane \
--form last_name=Doe \
--form 'company_name=Acme Technologies Pvt Ltd' \
--form gst_number=29ABCDE1234F1Z5 \
--form cin_file=@example-file \
--form gst_file=@example-fileimport requests
url = "https://api.bolna.ai/compliance/create"
files = {
"cin_file": ("example-file", open("example-file", "rb")),
"gst_file": ("example-file", open("example-file", "rb"))
}
payload = {
"first_name": "Jane",
"last_name": "Doe",
"company_name": "Acme Technologies Pvt Ltd",
"gst_number": "29ABCDE1234F1Z5"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('first_name', 'Jane');
form.append('last_name', 'Doe');
form.append('company_name', 'Acme Technologies Pvt Ltd');
form.append('gst_number', '29ABCDE1234F1Z5');
form.append('cin_file', '<string>');
form.append('gst_file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.bolna.ai/compliance/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bolna.ai/compliance/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bolna.ai/compliance/create"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bolna.ai/compliance/create")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bolna.ai/compliance/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"message": "submitted"
}Send the request as
multipart/form-data. All fields are required, and both cin_file and gst_file must be PDFs of at most 10 MB. See the compliance requirements for details on each document.
Review usually takes 12–24 hours. Track the application with the list or get API: its status moves from submitted to accepted or rejected. Once it is accepted, you can buy phone numbers.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
multipart/form-data
Legal first name of the applicant.
Example:
"Jane"
Legal last name of the applicant.
Example:
"Doe"
Registered business name. Maximum 50 characters.
Maximum string length:
50Example:
"Acme Technologies Pvt Ltd"
GST registration number. It must exactly match the number on the uploaded GST certificate.
Example:
"29ABCDE1234F1Z5"
CIN (Corporate Identification Number) certificate. PDF only, maximum 10 MB.
GST registration certificate. PDF only, maximum 10 MB.
Response
Compliance application submitted for review
Was this page helpful?
⌘I
cURL
curl --request POST \
--url https://api.bolna.ai/compliance/create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form first_name=Jane \
--form last_name=Doe \
--form 'company_name=Acme Technologies Pvt Ltd' \
--form gst_number=29ABCDE1234F1Z5 \
--form cin_file=@example-file \
--form gst_file=@example-fileimport requests
url = "https://api.bolna.ai/compliance/create"
files = {
"cin_file": ("example-file", open("example-file", "rb")),
"gst_file": ("example-file", open("example-file", "rb"))
}
payload = {
"first_name": "Jane",
"last_name": "Doe",
"company_name": "Acme Technologies Pvt Ltd",
"gst_number": "29ABCDE1234F1Z5"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('first_name', 'Jane');
form.append('last_name', 'Doe');
form.append('company_name', 'Acme Technologies Pvt Ltd');
form.append('gst_number', '29ABCDE1234F1Z5');
form.append('cin_file', '<string>');
form.append('gst_file', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.bolna.ai/compliance/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bolna.ai/compliance/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bolna.ai/compliance/create"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bolna.ai/compliance/create")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bolna.ai/compliance/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"first_name\"\r\n\r\nJane\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"last_name\"\r\n\r\nDoe\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"company_name\"\r\n\r\nAcme Technologies Pvt Ltd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_number\"\r\n\r\n29ABCDE1234F1Z5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cin_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"gst_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"message": "submitted"
}
