Companies
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
APIs for managing company accounts within the Arattai Business Platform. A company is the top-level entity that owns businesses and business numbers. Each company goes through a verification lifecycle before it can be used for production messaging.
Host: https://business.arattai.in/api/v1
Required header: Arattai-CompanyId is required for all APIs except GET /companies (List Companies) and GET /companies/{id} (Get a Company).
The full set of attributes returned for a company is documented under the Company schema in the API reference below.
Verification Status Workflow
unverified → in_progress → verified
in_progress → rejected → unverified (resubmit)
Notes
- The company
{id}is a unique numeric identifier, returned as a string in the response. - Optional string fields are omitted from the response when not set.
Error Response Format
{"code": "error_code", "message": "A human-readable description."}
Attribute
/companies/{id}.Allowed values:
company- A regular company account that owns its own businesses and business numbers.bsp- A Business Solution Provider account that manages businesses on behalf of other companies.
unverified → in_progress → verified, with in_progress → rejected → unverified (resubmission) as an alternate path.
Allowed values:
unverified- Default status for a newly created company. Can be submitted for admin review once all required fields and documents are in place.in_progress- Submitted for admin review and awaiting a decision. The submission can be withdrawn, which reverts the company tounverified.verified- Approved by an admin and ready for production use. Must have statusverifiedbefore it can create verified businesses under it.rejected- Declined by an admin.rejection_reasonexplains why, and the company can be corrected and resubmitted, which moves it back tounverified.
entity_sub_type values are valid for this company. Always present in responses, and defaults to company when not specified at creation (including for legacy records).
Allowed values:
sole_proprietorship- Individually owned, unincorporated business. Valid sub-types:registered,unregistered.partnership- Business owned jointly by two or more partners. Valid sub-types:registered,unregistered.company- Incorporated company. Valid sub-types:pvt,public_listed,llp.government_entity- Government-owned or government-affiliated organization. No sub-type applies,entity_sub_typemust be omitted.
entity_type. Always present unless entity_type is government_entity, where it must be omitted entirely.
Allowed values:
registered- Registered sole proprietorship or partnership.unregistered- Unregistered sole proprietorship or partnership.pvt- Private limited company.public_listed- Publicly listed company.llp- Limited liability partnership.
creator. Always present in responses, and equals creator when the company has never been updated.{
"id": "118331297",
"display_name": "Northbrook Retail",
"legal_name": "Northbrook Retail Ltd",
"contact_email": "admin@northbrookretail.com",
"registration_id": "27AAAAA0000A1Z5",
"representative_name": "Scott Fisher",
"type": "company",
"status": "verified",
"rejection_reason": "Registration document is illegible.",
"last_approved_time": "1768992318139",
"last_rejected_time": "1768992318139",
"last_submitted_time": "1768992318139",
"entity_type": "company",
"entity_sub_type": "pvt",
"address": {
"street_1": "Vallancherry",
"street_2": "Estancia IT park",
"city": "Chennai",
"state": "Tamilnadu",
"country": "India",
"pin_code": "827000",
"latitude": 13.0827,
"longitude": 80.2707
},
"website": "https://arattai.com",
"phonenumber": "8883159888",
"phone_country_code": "+91",
"phone_region_code": "IN",
"language_code": "fr",
"time_zone": "Asia/Kolkata",
"description": "Retail company operating across South India.",
"created_time": "1768992318139",
"modified_time": "1769155408184",
"creator": {
"id": "501000000002001",
"display_name": "Ryan West",
"email": "ryan.west@example.com",
"zuid": "72816325"
},
"modifier": {
"id": "501000000002001",
"display_name": "Ryan West",
"email": "ryan.west@example.com",
"zuid": "72816325"
}
}
List Companies
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Returns all companies the authenticated user belongs to.
Arattai-CompanyId header is not required for this endpoint.GET /companies/{id} with that one company's ID. It returns 200 with an array containing exactly 1 entry when the authenticated user belongs to a company, or 204 with no response body when they do not.Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 60 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.READ
headers_data = Map();
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies"
type: GET
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies")
.get()
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
fetch('https://business.arattai.in/api/v1/companies', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/v1/companies", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "GET",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies",
"headers": {
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies"),
Headers =
{
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://business.arattai.in/api/v1/companies");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request GET \
--url https://business.arattai.in/api/v1/companies \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"url": "/api/v1/companies",
"type": "company",
"data": [
{
"id": "118331297",
"display_name": "Northbrook Retail",
"legal_name": "Northbrook Retail Ltd",
"contact_email": "admin@northbrookretail.com",
"registration_id": "27AAAAA0000A1Z5",
"representative_name": "Scott Fisher",
"type": "company",
"status": "verified",
"entity_type": "company",
"entity_sub_type": "pvt",
"language_code": "fr",
"time_zone": "Asia/Kolkata",
"website": "https://arattai.com",
"phonenumber": "8883159888",
"phone_country_code": "+91",
"phone_region_code": "IN",
"address": {
"country": "India",
"street_1": "Vallancherry",
"street_2": "Estancia IT park",
"city": "Chennai",
"state": "Tamilnadu",
"pin_code": "827000",
"latitude": 13.0827,
"longitude": 80.2707
},
"creator": {
"id": "501000000002001",
"display_name": "Ryan West",
"email": "ryan.west@example.com",
"zuid": "72816325"
},
"modifier": {
"id": "501000000002001",
"display_name": "Ryan West",
"email": "ryan.west@example.com",
"zuid": "72816325"
},
"created_time": "1768992318139",
"modified_time": "1769155408184"
}
]
}
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Get a Company
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Retrieve the full details of a specific company by its ID, including verification status, address, and entity information.
Arattai-CompanyId header is not required for this endpoint.Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 60 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.READ
Path Parameters
headers_data = Map();
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID"
type: GET
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID")
.get()
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/v1/companies/COMPANY_ID", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "GET",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID",
"headers": {
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID"),
Headers =
{
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://business.arattai.in/api/v1/companies/COMPANY_ID");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request GET \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"url": "/api/v1/companies/118331297",
"type": "company",
"data": {
"id": "118331297",
"display_name": "Northbrook Retail",
"legal_name": "Northbrook Retail Ltd",
"contact_email": "admin@northbrookretail.com",
"registration_id": "27AAAAA0000A1Z5",
"representative_name": "Scott Fisher",
"type": "company",
"status": "verified",
"entity_type": "company",
"entity_sub_type": "pvt",
"language_code": "fr",
"time_zone": "Asia/Kolkata",
"website": "https://arattai.com",
"phonenumber": "8883159888",
"phone_country_code": "+91",
"phone_region_code": "IN",
"address": {
"country": "India",
"street_1": "Vallancherry",
"street_2": "Estancia IT park",
"city": "Chennai",
"state": "Tamilnadu",
"pin_code": "827000",
"latitude": 13.0827,
"longitude": 80.2707
},
"creator": {
"id": "501000000002001",
"display_name": "Ryan West",
"email": "ryan.west@example.com",
"zuid": "72816325"
},
"modifier": {
"id": "501000000002001",
"display_name": "Ryan West",
"email": "ryan.west@example.com",
"zuid": "72816325"
},
"created_time": "1768992318139",
"modified_time": "1769155408184"
}
}
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "not_found",
"message": "The requested resource was not found."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Upload Company Logo
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Upload a logo image for a company. The uploaded logo is stored and a logo URL is returned, which can be used to download the logo via the GET /companylogo/{base64Encoded} endpoint.
Possible Error Codes
| Error Code | Description |
|---|---|
invalid_content_type | File content-type is not allowed or mismatched. |
file_size_too_large | File exceeds the 5 MB maximum allowed size. |
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 20 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.CREATE
Arguments
Maximum size: 5 MB.
Supported formats:
jpeg, jpg, png, avif, webp.
Path Parameters
Headers
parameters_data = Map();
parameters_data.put("field1", "value1")
parameters_data.put("field2", "value2")
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/logo"
type: POST
headers: headers_data
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/logo")
.post(body)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.addHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.build();
Response response = client.newCall(request).execute();
const form = new FormData();
form.append("field1", "value1");
form.append("field2", "value2");
const options = {
method: 'POST',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
}
};
options.body = form;
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/logo', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n"
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "multipart/form-data; boundary=---011000010111000001101001"
}
conn.request("POST", "/api/v1/companies/COMPANY_ID/logo", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "POST",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/logo",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN",
"content-type": "multipart/form-data; boundary=---011000010111000001101001"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/logo");
var request = new RestRequest(Method.POST);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/logo"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
Content = new MultipartFormDataContent
{
new StringContent("value1")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "field1",
}
}
},
new StringContent("value2")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "field2",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/logo"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
req.Header.Add("content-type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = new FormData();
data.append("field1", "value1");
data.append("field2", "value2");
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://business.arattai.in/api/v1/companies/COMPANY_ID/logo");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request POST \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/logo \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: multipart/form-data' \
--form field1=value1 \
--form field2=value2
{
"file": "<binary image file>"
}
{
"logo_url": "/api/v1/companylogo/YWJjMTIzZGVmNDU2"
}
{
"code": "invalid_content_type",
"message": "File content-type is not allowed or mismatched"
}
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent"
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "file_size_too_large",
"message": "The uploaded file exceeds the maximum allowed size of 5 MB."
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
{
"code": "operation_failed",
"message": "An unexpected error occurred while processing the request"
}
Delete Company Logo
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Remove the logo associated with a company. After deletion the company will have no logo image.
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 20 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.DELETE
Path Parameters
Headers
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/logo"
type: DELETE
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/logo")
.delete(null)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'DELETE',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/logo', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN"
}
conn.request("DELETE", "/api/v1/companies/COMPANY_ID/logo", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "DELETE",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/logo",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/logo");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/logo"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/logo"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("DELETE", "https://business.arattai.in/api/v1/companies/COMPANY_ID/logo");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request DELETE \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/logo \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "not_found",
"message": "The requested resource was not found."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Download Company Logo
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Download the company logo as a binary image stream. The {base64Encoded} token is the path segment returned in the logo_url field of the POST /companies/{id}/logo response. Use the full logo_url value directly. Do not construct this path manually.
Arattai-CompanyId header is not required for direct logo access. There is no GET /companies/{id}/logo convenience endpoint. Always use the logo_url returned by the upload endpoint.Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 30 requests per minute
- Lock Period (Wait time before consecutive API requests) - 5 minutes
OAuth Scope : ArattaiBusiness.companies.READ
Path Parameters
logo_url field returned by the upload logo endpoint.headers_data = Map();
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2"
type: GET
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2")
.get()
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
fetch('https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/v1/companylogo/YWJjMTIzZGVmNDU2", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "GET",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companylogo/YWJjMTIzZGVmNDU2",
"headers": {
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2"),
Headers =
{
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request GET \
--url https://business.arattai.in/api/v1/companylogo/YWJjMTIzZGVmNDU2 \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "not_found",
"message": "The requested resource was not found."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Upload Verification Document
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Upload a verification document for a company. One document per (company, type) combination is stored. If a document already exists for the specified type, re-uploading replaces it (upsert behavior) rather than returning an error.
Legitimacy documents prove the company's own legal standing: gst, msme, fssai, udyam, pan, shops_establishment, incorporation_certificate, utility_bill.
Connection-proof documents prove the applicant's association with the company: representative_id_front, representative_id_back, authorization_letter. Government ID requires both front and back as separate uploads.
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 20 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.CREATE
Arguments
Maximum size: 5 MB for images (jpeg, jpg, png, gif); 10 MB for PDF.
Supported formats: jpeg, jpg, png, gif, pdf.
Path Parameters
Allowed values:
gst- GST registration certificate.msme- MSME/Udyog registration certificate.fssai- FSSAI food license certificate.udyam- Udyam registration certificate.pan- PAN card of the company.shops_establishment- Shops and Establishment Act registration certificate.incorporation_certificate- Certificate of incorporation.utility_bill- Utility bill used as proof of address.representative_id_front- Front side of the representative's government ID.representative_id_back- Back side of the representative's government ID.authorization_letter- Letter authorizing the representative to act on behalf of the company.
Headers
parameters_data = Map();
parameters_data.put("field1", "value1")
parameters_data.put("field2", "value2")
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"
type: POST
headers: headers_data
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst")
.post(body)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.addHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.build();
Response response = client.newCall(request).execute();
const form = new FormData();
form.append("field1", "value1");
form.append("field2", "value2");
const options = {
method: 'POST',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
}
};
options.body = form;
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n"
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "multipart/form-data; boundary=---011000010111000001101001"
}
conn.request("POST", "/api/v1/companies/COMPANY_ID/verificationfiles/gst", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "POST",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/verificationfiles/gst",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN",
"content-type": "multipart/form-data; boundary=---011000010111000001101001"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst");
var request = new RestRequest(Method.POST);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
Content = new MultipartFormDataContent
{
new StringContent("value1")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "field1",
}
}
},
new StringContent("value2")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "field2",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
req.Header.Add("content-type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = new FormData();
data.append("field1", "value1");
data.append("field2", "value2");
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request POST \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: multipart/form-data' \
--form field1=value1 \
--form field2=value2
{
"file": "<binary document or image file>"
}
{
"id": "501000000003001",
"type": "gst",
"content_type": "application/pdf",
"file_name": "gst_certificate_v2.pdf",
"status": "unverified",
"download_url": "/api/v1/verificationfiles/ZGVmNDU2Z2hpNzg5",
"created_time": "1768992318139",
"modified_time": "1769200000000"
}
{
"id": "501000000003001",
"type": "utility_bill",
"content_type": "application/pdf",
"file_name": "gst_certificate.pdf",
"status": "unverified",
"download_url": "/api/v1/verificationfiles/YWJjMTIzZGVmNDU2",
"created_time": "1768992318139",
"modified_time": "1769155408184"
}
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "file_size_too_large",
"message": "The uploaded file exceeds the maximum allowed size."
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Update Verification Document
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Replace the file for an existing verification document. The document record's metadata (type, status) is preserved; only the file content is replaced.
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 20 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.UPDATE
Arguments
Maximum size: 5 MB for images (jpeg, jpg, png, gif); 10 MB for PDF.
Path Parameters
Allowed values:
gst- GST registration certificate.msme- MSME/Udyog registration certificate.fssai- FSSAI food license certificate.udyam- Udyam registration certificate.pan- PAN card of the company.shops_establishment- Shops and Establishment Act registration certificate.incorporation_certificate- Certificate of incorporation.utility_bill- Utility bill used as proof of address.representative_id_front- Front side of the representative's government ID.representative_id_back- Back side of the representative's government ID.authorization_letter- Letter authorizing the representative to act on behalf of the company.
Headers
parameters_data = Map();
parameters_data.put("field1", "value1")
parameters_data.put("field2", "value2")
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"
type: PATCH
headers: headers_data
parameters: parameters_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=---011000010111000001101001");
RequestBody body = RequestBody.create(mediaType, "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n");
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst")
.patch(body)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.addHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001")
.build();
Response response = client.newCall(request).execute();
const form = new FormData();
form.append("field1", "value1");
form.append("field2", "value2");
const options = {
method: 'PATCH',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'multipart/form-data; boundary=---011000010111000001101001'
}
};
options.body = form;
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n"
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "multipart/form-data; boundary=---011000010111000001101001"
}
conn.request("PATCH", "/api/v1/companies/COMPANY_ID/verificationfiles/gst", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "PATCH",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/verificationfiles/gst",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN",
"content-type": "multipart/form-data; boundary=---011000010111000001101001"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n");
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
request.AddHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001");
request.AddParameter("multipart/form-data; boundary=---011000010111000001101001", "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Patch,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
Content = new MultipartFormDataContent
{
new StringContent("value1")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "field1",
}
}
},
new StringContent("value2")
{
Headers =
{
ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "field2",
}
}
},
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field1\"\r\n\r\nvalue1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"field2\"\r\n\r\nvalue2\r\n-----011000010111000001101001--\r\n")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
req.Header.Add("content-type", "multipart/form-data; boundary=---011000010111000001101001")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = new FormData();
data.append("field1", "value1");
data.append("field2", "value2");
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("PATCH", "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request PATCH \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: multipart/form-data' \
--form field1=value1 \
--form field2=value2
{
"file": "<binary replacement document>"
}
{
"id": "501000000003001",
"type": "gst",
"content_type": "application/pdf",
"file_name": "gst_certificate_updated.pdf",
"status": "unverified",
"download_url": "/api/v1/verificationfiles/eHl6MDEyMzQ1Njc4",
"created_time": "1768992318139",
"modified_time": "1769200000000"
}
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "not_found",
"message": "The requested resource was not found."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Delete Verification Document
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Delete a specific verification document from a company.
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 20 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.DELETE
Path Parameters
Allowed values:
gst- GST registration certificate.msme- MSME/Udyog registration certificate.fssai- FSSAI food license certificate.udyam- Udyam registration certificate.pan- PAN card of the company.shops_establishment- Shops and Establishment Act registration certificate.incorporation_certificate- Certificate of incorporation.utility_bill- Utility bill used as proof of address.representative_id_front- Front side of the representative's government ID.representative_id_back- Back side of the representative's government ID.authorization_letter- Letter authorizing the representative to act on behalf of the company.
Headers
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"
type: DELETE
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst")
.delete(null)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'DELETE',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN"
}
conn.request("DELETE", "/api/v1/companies/COMPANY_ID/verificationfiles/gst", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "DELETE",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/verificationfiles/gst",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst");
var request = new RestRequest(Method.DELETE);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Delete,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("DELETE", "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request DELETE \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles/gst \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "not_found",
"message": "The requested resource was not found."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
List Verification Documents
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Retrieve all verification documents uploaded for a company. Returns an array of verification document objects including their type, status, and download URL.
id path parameter and the Arattai-CompanyId header must reference the same company. The path parameter identifies which company's documents to fetch; the header authenticates that the request is scoped to that company. Both are required and must match.Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 30 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.READ
Path Parameters
Headers
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles"
type: GET
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles")
.get()
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'GET',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN"
}
conn.request("GET", "/api/v1/companies/COMPANY_ID/verificationfiles", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "GET",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/verificationfiles",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles");
var request = new RestRequest(Method.GET);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request GET \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/verificationfiles \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
[
{
"id": "501000000003001",
"type": "utility_bill",
"content_type": "application/pdf",
"file_name": "utility_bill_jan2026.pdf",
"status": "verified",
"download_url": "/api/v1/verificationfiles/YWJjMTIzZGVmNDU2",
"created_time": "1768992318139",
"modified_time": "1769155408184"
},
{
"id": "501000000003002",
"type": "representative_id_front",
"content_type": "image/jpeg",
"file_name": "id_front.jpg",
"status": "unverified",
"download_url": "/api/v1/verificationfiles/ZGVmNDU2Z2hpNzg5",
"created_time": "1769000000000",
"modified_time": "1769000000000"
}
]
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Download Verification Document
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Download a verification document as a binary file stream. The {base64Encoded} token is the path segment from the download_url field in the verification document object. The token encodes the company ID and attachment ID for secure access.
download_url value from the verification document object directly. Do not construct this path manually.Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 30 requests per minute
- Lock Period (Wait time before consecutive API requests) - 5 minutes
OAuth Scope : ArattaiBusiness.companies.READ
Path Parameters
download_url field of the verification document object.headers_data = Map();
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2"
type: GET
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2")
.get()
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};
fetch('https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = { 'Authorization': "Bearer REPLACE_BEARER_TOKEN" }
conn.request("GET", "/api/v1/verificationfiles/YWJjMTIzZGVmNDU2", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "GET",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/verificationfiles/YWJjMTIzZGVmNDU2",
"headers": {
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri("https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2"),
Headers =
{
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request GET \
--url https://business.arattai.in/api/v1/verificationfiles/YWJjMTIzZGVmNDU2 \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "not_found",
"message": "The requested resource was not found."
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Submit Company for Verification
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Submit a company for admin review. This is the only way admin review is triggered; company creation does not trigger it automatically.
Eligible statuses: unverified (first-time submission) or rejected (resubmission after rejection). Any other status returns 403.
Before submitting, all of the following must already be set on the company, otherwise the request is rejected with 403 invalid_operation listing every missing item in one response:
legal_name,contact_email,address,registration_id,representative_name- At least one legitimacy document uploaded (
gst,msme,fssai,udyam,pan,shops_establishment,incorporation_certificate, orutility_bill) - Connection verification satisfied by either all 3 connection documents uploaded, or a verified domain matching the company's current
websitehostname. Domain verification is performed against thewebsitefield already set on the company; there is no separate API to initiate or check it.
in_progress and the submission enters admin review asynchronously.
Possible Error Codes
| Error Code | Description |
|---|---|
invalid_operation | Missing required fields or documents for submission. The error message lists every missing item. |
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 10 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.CREATE
Path Parameters
Headers
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/submit"
type: POST
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/submit")
.post(null)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'POST',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/submit', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN"
}
conn.request("POST", "/api/v1/companies/COMPANY_ID/submit", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "POST",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/submit",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/submit");
var request = new RestRequest(Method.POST);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/submit"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/submit"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://business.arattai.in/api/v1/companies/COMPANY_ID/submit");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request POST \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/submit \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "invalid_operation",
"message": "Only unverified or rejected companies can be submitted for verification"
}
{
"code": "invalid_operation",
"message": "Missing required fields for submission: registration_id, legitimacy_documents"
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}
Withdraw Company Verification Submission
AI Tools
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Open in ChatGPT
Open in ChatGPT to ask questions about this page
Open in Claude
Open in Claude to ask questions about this page
Copy as Markdown
Copy this page as markdown to use with AI assistants
View as Markdown
Open this page as markdown in a new tab
Withdraw a company's pending verification submission. Only allowed while status is in_progress. Any other status returns 403.
On success, company status reverts to unverified and the pending admin review is cancelled asynchronously. Does not affect rejection_reason or last_submitted_time.
Rate Limits
- Threshold Limit (Number of API calls allowed within a minute) - 10 requests per minute
- Lock Period (Wait time before consecutive API requests) - 10 minutes
OAuth Scope : ArattaiBusiness.companies.CREATE
Path Parameters
Headers
headers_data = Map();
headers_data.put("Arattai-CompanyId", "SOME_STRING_VALUE");
headers_data.put("Authorization", "Bearer REPLACE_BEARER_TOKEN");
response = invokeUrl
[
url: "https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke"
type: POST
headers: headers_data
connection: <connection_name>
];
info response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke")
.post(null)
.addHeader("Arattai-CompanyId", "SOME_STRING_VALUE")
.addHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN")
.build();
Response response = client.newCall(request).execute();
const options = {
method: 'POST',
headers: {
'Arattai-CompanyId': 'SOME_STRING_VALUE',
Authorization: 'Bearer REPLACE_BEARER_TOKEN'
}
};
fetch('https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import http.client
conn = http.client.HTTPSConnection("business.arattai.in")
headers = {
'Arattai-CompanyId': "SOME_STRING_VALUE",
'Authorization': "Bearer REPLACE_BEARER_TOKEN"
}
conn.request("POST", "/api/v1/companies/COMPANY_ID/revoke", headers=headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
const http = require("https");
const options = {
"method": "POST",
"hostname": "business.arattai.in",
"port": null,
"path": "/api/v1/companies/COMPANY_ID/revoke",
"headers": {
"Arattai-CompanyId": "SOME_STRING_VALUE",
"Authorization": "Bearer REPLACE_BEARER_TOKEN"
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
var client = new RestClient("https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke");
var request = new RestRequest(Method.POST);
request.AddHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
request.AddHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
IRestResponse response = client.Execute(request);
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke"),
Headers =
{
{ "Arattai-CompanyId", "SOME_STRING_VALUE" },
{ "Authorization", "Bearer REPLACE_BEARER_TOKEN" },
},
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Arattai-CompanyId", "SOME_STRING_VALUE")
req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
const data = null;
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke");
xhr.setRequestHeader("Arattai-CompanyId", "SOME_STRING_VALUE");
xhr.setRequestHeader("Authorization", "Bearer REPLACE_BEARER_TOKEN");
xhr.send(data);
curl --request POST \
--url https://business.arattai.in/api/v1/companies/COMPANY_ID/revoke \
--header 'Arattai-CompanyId: SOME_STRING_VALUE' \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
{
"code": "invalid_input",
"message": "Either the input stream or parameter is invalid or absent."
}
{
"code": "invalid_oauthtoken",
"message": "You are not authenticated to do this operation."
}
{
"code": "invalid_operation",
"message": "Only companies with a pending verification submission can be withdrawn"
}
{
"code": "invalid_method",
"message": "Invalid method"
}
{
"code": "too_many_requests",
"message": "You have reached the maximum number of requests"
}