Companies

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

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

id
string
Unique identifier of the company, returned as a string. Note: This value is a set of numeric characters. Use this value in the path of all subsequent calls that act on this company, for example /companies/{id}.
display_name
string
Display name of the company, shown throughout the Arattai Business Platform and in administrative communications.
contact_email
string
Primary contact email address for the company. Must be set before the company can be submitted for verification. Always present in responses, returned as an empty string when not yet set.
registration_id
string
Registration number taken from an accepted legitimacy document, such as a GST certificate or Certificate of Incorporation (CIN). Must be set before the company can be submitted for verification. Omitted from the response entirely when not set.
representative_name
string
Full name of the company's authorized representative, exactly as it appears on their government-issued ID. Must be set before the company can be submitted for verification. Always present in responses, returned as an empty string when not yet set.
type
string
Indicates whether this account is a regular company or a Business Solution Provider (BSP) that manages other businesses on their behalf. Read-only.
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.
status
string
Current verification status of the company. A company moves through this lifecycle, in order: 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 to unverified.
  • verified - Approved by an admin and ready for production use. Must have status verified before it can create verified businesses under it.
  • rejected - Declined by an admin. rejection_reason explains why, and the company can be corrected and resubmitted, which moves it back to unverified.
rejection_reason
string
Human-readable explanation of why the company was rejected during admin review. Present only after a rejection has occurred, and preserved in the response even after the company is corrected and resubmitted.
last_approved_time
string
Timestamp of the most recent admin approval, as epoch milliseconds (string). Present only once the company has been approved at least once.
last_rejected_time
string
Timestamp of the most recent admin rejection, as epoch milliseconds (string). Present only once the company has been rejected at least once.
last_submitted_time
string
Timestamp of the most recent verification submission, as epoch milliseconds (string). Present only once the company has been submitted for verification at least once.
entity_type
string
Legal structure of the company entity. Determines which 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_type must be omitted.
entity_sub_type
string
Sub-classification within the selected 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.
address
object
Structured postal address of the company. Always present in responses, returned as an object with empty-valued fields when no address has been set.
Show Sub-Attributes arrow
street_1
string
Street address line 1.
street_2
string
Street address line 2.
city
string
City name.
state
string
State or province name.
country
string
Country name.
pin_code
string
Postal or zip code.
latitude
number
Latitude coordinate of the address, -90 to 90.
longitude
number
Longitude coordinate of the address, -180 to 180.
website
string
Company website URL. Always present in responses, returned as an empty string when not set.
phonenumber
string
Company contact phone number, without country code. Always present in responses, returned as an empty string when not set.
phone_country_code
string
Country code for the company phone number, always including the leading "+" (e.g. "+91"). Always present in responses, returned as an empty string when not set.
phone_region_code
string
ISO 3166-1 alpha-2 region code for the company phone number (e.g. "IN"). Always present in responses, returned as an empty string when not set.
language_code
string
ISO 639-1 language code used as the default for businesses created under this company (e.g. "en", "fr"). Always present in responses, returned as an empty string when not set.
time_zone
string
Timezone string used as the default for businesses created under this company (e.g. "Asia/Kolkata"). Always present in responses, returned as an empty string when not set.
description
string
Free-text description of the company. Omitted from the response entirely when not set.
created_time
string
Timestamp when the company was created, as epoch milliseconds (string).
modified_time
string
Timestamp when the company was last modified, as epoch milliseconds (string).
creator
object
User who created the company.
Show Sub-Attributes arrow
id
string
Unique identifier of the user.
display_name
string
Display name of the user.
email
string
Email address of the user.
zuid
string
Zoho account ID (ZUID) of the user.
modifier
object
User who last modified the company. Same shape as creator. Always present in responses, and equals creator when the company has never been updated.
Show Sub-Attributes arrow
id
string
Unique identifier of the user.
display_name
string
Display name of the user.
email
string
Email address of the user.
zuid
string
Zoho account ID (ZUID) of the user.

Example

{ "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

Returns all companies the authenticated user belongs to.

⚠
NoteArattai-CompanyId header is not required for this endpoint.


⚠
NoteAn access token is currently scoped to a single company, so this endpoint is functionally equivalent to calling 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

Request Example

Click to copy
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'

Response Example

{ "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

Retrieve the full details of a specific company by its ID, including verification status, address, and entity information.

⚠
NoteArattai-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

id
string
(Required)
The unique identifier of the company to retrieve.

Request Example

Click to copy
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'

Response Example

{ "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 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_typeFile content-type is not allowed or mismatched.
file_size_too_largeFile 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

file
binary
(Required)
Image file to upload as the company logo.
Maximum size: 5 MB.
Supported formats: jpeg, jpg, png, avif, webp.

Path Parameters

id
string
(Required)
The unique identifier of the company to upload the logo for.

Headers

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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

Body Parameters

Click to copy

Response Example

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

id
string
(Required)
The unique identifier of the company whose logo should be deleted.

Headers

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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'

Response Example

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.

⚠
NoteArattai-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

base64Encoded
string
(Required)
The base64-encoded token from the logo_url field returned by the upload logo endpoint.

Request Example

Click to copy
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'

Response Example

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

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.

⚠
NoteAt least one legitimacy document and all three connection-proof documents (or a verified domain) are required before submitting a company for verification.

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

file
binary
(Required)
Document or image file to upload.
Maximum size: 5 MB for images (jpeg, jpg, png, gif); 10 MB for PDF.
Supported formats: jpeg, jpg, png, gif, pdf.

Path Parameters

id
string
(Required)
The unique identifier of the company.
type
string
(Required)
The type of verification document being uploaded.
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

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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

Body Parameters

Click to copy
{ "file": "<binary document or image file>" }

Response Example

{ "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

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

file
binary
(Required)
Replacement document or image file.
Maximum size: 5 MB for images (jpeg, jpg, png, gif); 10 MB for PDF.

Path Parameters

id
string
(Required)
The unique identifier of the company.
type
string
(Required)
The type of verification document whose file is being replaced.
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

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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

Body Parameters

Click to copy
{ "file": "<binary replacement document>" }

Response Example

{ "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

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

id
string
(Required)
The unique identifier of the company.
type
string
(Required)
The type of verification document to delete.
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

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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'

Response Example

{ "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

Retrieve all verification documents uploaded for a company. Returns an array of verification document objects including their type, status, and download URL.

⚠
NoteThe 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

id
string
(Required)
The unique identifier of the company.

Headers

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request. Must match the `id` path parameter.

Request Example

Click to copy
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'

Response Example

[ { "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

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.

⚠
NoteUse the full 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

base64Encoded
string
(Required)
The base64-encoded token from the download_url field of the verification document object.

Request Example

Click to copy
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'

Response Example

{ "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

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, or utility_bill)
  • Connection verification satisfied by either all 3 connection documents uploaded, or a verified domain matching the company's current website hostname. Domain verification is performed against the website field already set on the company; there is no separate API to initiate or check it.
On success, company status moves to in_progress and the submission enters admin review asynchronously.

Possible Error Codes

Error Code Description
invalid_operationMissing 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

id
string
(Required)
The unique identifier of the company to submit for verification.

Headers

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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'

Response Example

{ "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

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.

⚠
NoteThis withdraws a pending verification submission and is unrelated to revoking OAuth tokens. To revoke an OAuth token, see Revoking OAuth tokens.


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

id
string
(Required)
The unique identifier of the company whose pending submission should be withdrawn.

Headers

Arattai-CompanyId
string
(Required)
The unique identifier of the company for this request.

Request Example

Click to copy
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'

Response Example

{ "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" }