Now live: GSTIN + MCA verification in a single call
API v1

Run checks over HTTP

A REST API over the same engine as the dashboard: same checks, same credit balance, same audit trail. Create a key under Account → API keys.

Authentication

Every request carries a personal access token as a bearer credential. Tokens are shown once at creation — store them in your secret manager, not in source control.

curl https://businesskyc.com/api/v1/me \
  -H "Authorization: Bearer bkyc_your_token_here" \
  -H "Accept: application/json"

Check your balance

GET /api/v1/me

Returns the authenticated account and its current credit balance.

{
  "data": {
    "id": 12,
    "name": "Ananya Raghavan",
    "email": "ananya@example.com",
    "company_name": "Sample Traders Pvt Ltd",
    "credits_balance": 480
  }
}

List available checks

GET /api/v1/services

Returns every active check with its credit cost and the fields it expects, so you can build request payloads dynamically.

{
  "data": [
    {
      "code": "gstin_verify",
      "name": "GSTIN verification",
      "group": "business",
      "credit_cost": 2,
      "fields": [
        { "key": "gstin", "label": "GSTIN", "rules": "required|string|size:15" }
      ]
    }
  ]
}

Run a check

POST /api/v1/verify/{code}

Charges the credit cost, calls the source and returns the normalised result. The token needs the "verify" ability.

curl -X POST https://businesskyc.com/api/v1/verify/gstin_verify \
  -H "Authorization: Bearer bkyc_your_token_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{"gstin":"33AABCS1429B1ZP"}'

Successful response

credits_balance reflects the balance after this call, so you never need a second request to track spend.

{
  "data": {
    "reference": "BK-8F2A1C4D9E",
    "service": "gstin_verify",
    "status": "success",
    "credits_charged": 2,
    "credits_balance": 478,
    "input": { "gstin": "33AABCS1429B1ZP" },
    "result": {
      "gstin": "33AABCS1429B1ZP",
      "legal_name": "Sample Traders Private Limited",
      "status": "Active",
      "state": "Tamil Nadu",
      "registration_date": "2019-07-12"
    },
    "error": null,
    "duration_ms": 184,
    "created_at": "2026-08-12T10:41:07+05:30"
  }
}

Errors

Standard HTTP status codes. A failed check still returns its reference so you can reconcile it later.

StatusMeaningCredits charged
401 Missing, revoked or malformed token No
403 Token lacks the "verify" ability, or the account is suspended No
402 Insufficient credits — top up and retry No
422 Validation failed, or the check returned no record Only for "no record"
429 Rate limit exceeded (60 requests per minute) No
500 Upstream provider error — credits are refunded automatically Refunded

Ready to build?

Create an account