Early accessWe're onboarding teams in batches. The sandbox and docs are open to everyone. Request access →

Skip to content
APIserver.in
Docs menu

Docs

Response format

One envelope for every endpoint — success or error.

Whether you call GST verify or Business360, the shape is the same: success, request_id, then either data + meta or error + meta. Parse it once.

Success

200 OK · /v1/pan/verify
{
  "success": true,
  "request_id": "as_req_01J9X2K7R8M4V6T2Q9W3E5Y1ZB",
  "api": "pan.verify",
  "version": "2026-10-01",
  "data": {
    "pan": "AAJCK4821M",
    "valid": true,
    "status": "Valid",
    "category": "Company",
    "registered_name": "KAVERI TEXTILES PRIVATE LIMITED",
    "name_match": {
      "input": "Kaveri Textiles Pvt Ltd",
      "score": 1,
      "result": "match"
    }
  },
  "meta": {
    "charged": true,
    "amount_inr": 2,
    "latency_ms": 263,
    "source_status": "live",
    "attempts": 1,
    "data_as_of": "2026-10-03T09:12:00+05:30",
    "mode": "live"
  }
}

Error

504 · PROVIDER_TIMEOUT
{
  "success": false,
  "request_id": "as_req_01J9X2M4B7C1D8E5F2G6H3J9KA",
  "error": {
    "code": "PROVIDER_TIMEOUT",
    "type": "provider_error",
    "message": "The source did not answer in time. You were not charged.",
    "retryable": true,
    "docs_url": "/docs/errors#provider_timeout"
  },
  "meta": {
    "charged": false,
    "amount_inr": 0,
    "latency_ms": 731,
    "attempts": 2
  }
}

meta fields

meta fields
FieldTypeDescription
chargedbooleanWhether this call was billed. Always false for failures.
amount_inrnumberAmount billed, GST-inclusive
latency_msinteger—
source_status"live" | "degraded"`degraded` when a fallback source answered
attemptsintegerSources tried before an answer (billed once)
data_as_ofstringFreshness of the source data (IST)
mode"live" | "test"—
live_price_inrnumberTest mode only: what this call costs in live mode
modules_requestedintegerBusiness360 only
modules_succeededintegerBusiness360 only
billingobjectBusiness360 only: sum of succeeded modules, the bundle cap, and what the cap saved
↳sum_inrnumber—
↳cap_inrnumber—
↳saved_inrnumber—

Headers

HeaderMeaning
X-Request-IdSame as request_id. Quote it to support.
X-Api-VersionAPI version that served the call (2026-10-01).
X-Charged / X-Amount-InrBilling outcome, mirrored from meta.
X-Source-TraceWhich sources were tried, in order, with outcomes and latency.
X-RateLimit-Limit / -RemainingYour burst budget and what's left.
Retry-AfterSeconds to wait after a 429.
Idempotent-Replayedtrue when the response is a replay of an earlier request.

Versioning

Versions are dated (2026-10-01). Additive changes — new fields, new modules — ship without a version bump. Breaking changes get a new date and a migration note in the changelog.