API v1

Developer Documentation

Server-to-server JSON APIs with per-request wallet billing. API prices and rate limits are controlled by Admin.

Authentication

Send your API key using the X-API-Key header or Authorization: Bearer ....

X-API-Key: ak_live_your_secret_key
Keep API keys on your backend. Never expose them in public frontend JavaScript.

Billing

Every service has an Admin-controlled price. By default requests are charged only when a lookup returns a successful result. Responses include charged and the remaining wallet balance.

PIN Code API

GET /api/v1/pincode/{pincode}

curl "https://apiweb.adarshrupa.in/api/v1/pincode/848125" \ -H "X-API-Key: YOUR_API_KEY"

IFSC API

GET /api/v1/ifsc/{ifsc}

curl "https://apiweb.adarshrupa.in/api/v1/ifsc/SBIN0000001" \ -H "X-API-Key: YOUR_API_KEY"

GET /api/v1/postoffice/search?q=Pusa&district=Samastipur&state=Bihar

Search the locally synced Department of Posts directory by office/area name.

District → PIN Codes

GET /api/v1/district/pincodes?district=Samastipur&state=Bihar

Returns distinct PIN codes available in the synced district directory.

PAN → GST API

GET /api/v1/pan-gst/{pan}

Returns GST registration number(s) linked to the supplied valid PAN. One PAN can have multiple GST registrations across states.

curl "https://apiweb.adarshrupa.in/api/v1/pan-gst/ABCDE1234F" \ -H "X-API-Key: YOUR_API_KEY"
{ "success": true, "service": "pan-gst", "charged": 0.10, "data": { "pan": "ABCDE1234F", "count": 2, "registrations": [ {"gstin":"10ABCDE1234F1Z5","state_code":"10","legal_name":"Example Business","status":"Active"} ] } }

GST Details API

GET /api/v1/gst/{gstin}

Returns normalized public taxpayer details made available by the configured authorized GST/GSP provider.

curl "https://apiweb.adarshrupa.in/api/v1/gst/10ABCDE1234F1Z5" \ -H "X-API-Key: YOUR_API_KEY"
{ "success": true, "service": "gst", "charged": 0.10, "data": { "gstin": "10ABCDE1234F1Z5", "pan": "ABCDE1234F", "legal_name": "Example Business", "trade_name": "Example", "status": "Active", "taxpayer_type": "Regular", "registration_date": "2020-01-01", "cancellation_date": null, "constitution": "Proprietorship", "principal_address": "...", "state_jurisdiction": "...", "centre_jurisdiction": "...", "nature_of_business": [], "return_filing": [] } }
GST endpoints use the backend driver selected by Admin and cache normalized results within the configured TTL. Review the selected source terms before commercial/bulk use.

Company / CIN APIs

GET /api/v1/company/cin/{cin}

Returns MCA Company Master fields from local cache/import or the configured open-data source.

curl "https://apiweb.adarshrupa.in/api/v1/company/cin/L12345DL2020PLC123456" \ -H "X-API-Key: YOUR_API_KEY"

GET /api/v1/company/search?q=Company Name&limit=20

Partial-name search works against locally imported/cached Company Master rows. Exact-name OGD lookup is used as fallback when available.

Bank Branch / MICR APIs

GET /api/v1/bank/branches?bank=SBI&state=Bihar&city=Patna

Searches the same local IFSC master directory used by the IFSC endpoint.

MICR Lookup

GET /api/v1/micr/{9-digit-micr}

LGD Geography APIs

These endpoints use locally imported/synced Local Government Directory master tables.

GET /api/v1/lgd/states?q=Bihar GET /api/v1/lgd/districts?state_code=10 GET /api/v1/lgd/subdistricts?district_code=221 GET /api/v1/lgd/villages?district_code=221&q=Pusa GET /api/v1/lgd/local-bodies?state_code=10&q=Panchayat

District codes

/api/v1/lgd/districts

Sub-District codes

/api/v1/lgd/subdistricts

Village codes

/api/v1/lgd/villages

Village → PIN

GET /api/v1/village/pincode?village=Pusa&district=Samastipur&state=Bihar

You can also pass village_code for an exact LGD-code lookup.

Local Bodies

/api/v1/lgd/local-bodies

Local Body → PIN

GET /api/v1/localbody/pincode?name=Panchayat&district=Samastipur&state=Bihar

You can also pass local_body_code for an exact LGD-code lookup.

Mandi Price API

GET /api/v1/mandi?commodity=Onion&state=Bihar&limit=20

Returns current daily wholesale market observations from the Government OGD/AGMARKNET resource, including arrival date and min/max/modal prices.

Air Quality API

GET /api/v1/air-quality?city=Patna&pollutant=PM2.5

Returns CPCB OGD pollutant readings by state/city/station/pollutant where available.

One District One Product API

GET /api/v1/odop?state=Bihar&district=Samastipur

Uses local ODOP import first; an OGD resource UUID can also be configured in Admin → Open Data.

Local Validators

Validators do not query identity/account databases. They only validate syntax/checksum locally and therefore require no CAPTCHA or upstream provider.

GET /api/v1/validate/pan/ABCDE1234F GET /api/v1/validate/gstin/27AAPFU0939F1ZV GET /api/v1/validate/aadhaar/XXXXXXXXXXXX GET /api/v1/validate/ifsc/SBIN0000001 GET /api/v1/validate/vehicle/BR01AB1234 GET /api/v1/validate/upi/name@bank

GSTIN checksum

Format + base-36 GSTIN checksum validation.

Aadhaar checksum

12-digit Verhoeff checksum only; no UIDAI identity lookup.

IFSC format

Syntax only.

Vehicle number format

Common state/RTO and BH-series syntax only.

UPI ID syntax

VPA syntax only; no bank/account-holder verification.

Voter ID / EPIC API

Two-step ECI Electoral Search flow. CAPTCHA is always shown to and solved by the human API user; APIDATA does not solve or bypass it. The session expires after a short TTL.

Step 1 — Fetch CAPTCHA

POST /api/v1/voter/init

curl -X POST "https://apiweb.adarshrupa.in/api/v1/voter/init" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"epic":"ABC1234567"}'

Returns session_id, a base64 PNG captcha_image, and expiry seconds. Optional request field: state.

Step 2 — Submit human-entered CAPTCHA

POST /api/v1/voter/verify

curl -X POST "https://apiweb.adarshrupa.in/api/v1/voter/verify" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"session_id":"vot_...","captcha_text":"AB12CD"}'

The verify step is billed only on success when charge_on_success is enabled. Price and rate limits remain Admin-controlled.

EPIC format validator

GET /api/v1/validate/epic/ABC1234567

Format-only validation: 3 letters + 7 digits. It does not confirm electoral-roll existence.

The voter connector depends on the ECI website and its current UI/selectors. Use conservative rate limits, keep the CAPTCHA human-solved, and review the source website terms/policies before commercial or bulk use.

Integration examples

PHP

$ch = curl_init("https://apiweb.adarshrupa.in/api/v1/gst/10ABCDE1234F1Z5"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: YOUR_API_KEY"] ]); $response = curl_exec($ch);

Node.js

const response = await fetch("https://apiweb.adarshrupa.in/api/v1/pan-gst/ABCDE1234F", { headers: { "X-API-Key": process.env.APIDATA_KEY } }); const data = await response.json();

Python

import requests r = requests.get( "https://apiweb.adarshrupa.in/api/v1/pincode/848125", headers={"X-API-Key": "YOUR_API_KEY"}, timeout=15, ) print(r.json())

HTTP errors

CodeMeaning
401Missing/invalid API key
402Insufficient wallet balance
404Lookup not found
422Invalid input or missing required filter
429Rate limit exceeded
502Configured upstream provider failed
503Service disabled or required upstream/open-data connector not configured