Docs
Business360 & modules
Every check in one call. Pick modules with include, pay only for the ones that succeed.
Send one identifier — gstin, cin or pan. Business360 resolves the rest, runs each module in parallel with source fallback, and returns one block per module plus a summary with risk flags.
Three ways to buy
| Option | How | Price |
|---|---|---|
| Single API | Call one endpoint, e.g. POST /v1/gst/verify | its own price, e.g. ₹0.75 |
| Business360 (full) | POST /v1/business360 without include | ₹10.00 (vs ₹14.75) |
| Business360 (custom) | include with the modules you want | sum of chosen modules, capped at ₹10.00 |
The include parameter
Custom bundle
curl https://api.apiserver.in/v1/business360 \
-H "Authorization: Bearer as_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"gstin":"29AAJCK4821M1Z1","include":["gst","pan","directors"]}'const res = await fetch("https://api.apiserver.in/v1/business360", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APISERVER_KEY ?? "as_test_YOUR_KEY"}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"gstin": "29AAJCK4821M1Z1",
"include": [
"gst",
"pan",
"directors"
]
}),
});
const { success, data, meta, error } = await res.json();
console.log(meta.charged, meta.amount_inr); // failed calls are never chargedimport os, requests
res = requests.post(
"https://api.apiserver.in/v1/business360",
headers={
"Authorization": f"Bearer {os.getenv('APISERVER_KEY', 'as_test_YOUR_KEY')}",
},
json={
"gstin": "29AAJCK4821M1Z1",
"include": ["gst", "pan", "directors"],
},
timeout=10,
)
body = res.json()
print(body["meta"]["charged"], body["meta"]["amount_inr"])<?php
$ch = curl_init('https://api.apiserver.in/v1/business360');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . (getenv('APISERVER_KEY') ?: 'as_test_YOUR_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'gstin' => '29AAJCK4821M1Z1',
'include' => ['gst', 'pan', 'directors'],
]),
]);
$body = json_decode(curl_exec($ch), true);
echo $body['meta']['charged'] ? 'charged' : 'not charged';| Module | Same data as | Price if it succeeds |
|---|---|---|
gst — GST profile | gst-verify | ₹0.75 |
gst_returns — GST returns | gst-returns | ₹1.00 |
pan — PAN | pan-verify | ₹2.00 |
company — Company master | company | ₹3.50 |
directors — Directors | directors | ₹4.00 |
cin_pan — CIN ↔ PAN | cin-to-pan | ₹3.50 |
Omit include for the full bundle. Unknown modules fail validation with 400.
Module statuses
| status | Meaning | Billed |
|---|---|---|
ok | Module returned data. | its single-API price |
failed | Every source failed for this module; see error.code. | ₹0 |
not_found | The source has no record for this module. | ₹0 |
skipped | Not applicable, e.g. MCA modules for a proprietorship. See reason. | ₹0 |
A failed module inside a 200 response
{
"directors": {
"status": "failed",
"data": null,
"error": {
"code": "PROVIDER_TIMEOUT",
"message": "The source did not answer in time."
},
"charged": false,
"amount_inr": 0,
"attempts": 2,
"latency_ms": 731
}
}Billing rules
- Each module is billed at its single-API price only if it succeeds.
- Custom bundle = sum of the selected modules' prices, never more than ₹10.00.
- All six requested and all succeed → ₹10.00.
- Some fail →
min(sum of succeeded modules, ₹10.00). - If every requested module fails, the whole call returns an error and costs ₹0.
meta.billingshows the sum, the cap and what the cap saved.
Worked examples
| Request | Outcome | You pay |
|---|---|---|
| Full bundle | all 6 succeed (sum ₹14.75) | ₹10.00 |
| Full bundle | directors fails (sum ₹10.75) | ₹10.00 |
| Full bundle | directors + company fail (sum ₹7.25) | ₹7.25 |
| include: gst, pan, directors | directors fails (sum ₹2.75) | ₹2.75 |
| include: gst, pan | both succeed (sum ₹2.75) | ₹2.75 |
Build and price a custom call interactively in the bundle builder, then run it in the playground.