Overview
Way2API® is a unified RESTful API platform for real-time identity verification and KYC (Know Your Customer) services in India. Currently offering 22 APIs — PAN Verification, GST Verification, Driving License Verify, Voter ID Verification, Operator and Circle Check, Domain Check, VPA Validation, Bank Account Validation and 14 more — all from a single integration. Every endpoint accepts JSON request bodies, returns structured JSON responses, and follows REST conventions with standard HTTP methods and status codes.
Quick Start
1. Register an account at the Way2API® dashboard
2. Copy your API Key from Dashboard → API Keys
3. Include it in the Authorization header of every request
4. Make API calls to any verification endpoint you have access to
Authentication
All verification endpoints require a valid API key. Pass it as Authorization: Bearer <key> (recommended) or via the X-API-Key header. Keys are generated from your Dashboard → API Keys page.
Option 1 — Bearer Token (Recommended)
Option 2 — X-API-Key Header
Keep your API keys secure. Do not expose them in client-side code or public repositories. If compromised, regenerate your keys immediately from the dashboard.
Rate Limits
Rate limits protect the API from abuse. Limits are applied per API key, per service. When exceeded, the API returns 429 Too Many Requests with a Retry-After header.
Free: 10 req/min | Pro: 60 req/min | Enterprise: Custom
Rate limits use a 1-minute sliding window.
HTTP Status Codes
Standard HTTP status codes indicate the outcome of every request. Check the success field in the response body for programmatic determination.
| Code | Status | Description |
|---|---|---|
| 200 | OK | Verification result returned |
| 400 | Bad Request | Verification failed or invalid vendor response |
| 401 | Unauthorized | Missing or invalid API key |
| 402 | Payment Required | Insufficient balance — recharge required |
| 403 | Forbidden | No access to this API service |
| 422 | Unprocessable Entity | Input validation failed |
| 429 | Too Many Requests | Rate limit exceeded |
| 503 | Service Unavailable | Vendor temporarily unavailable |
Response Format
Every response follows a consistent JSON structure: success (boolean), message (human-readable), and data (result object with order_id, verified flag, and result).
{
"success": true,
"message": "Verification successful.",
"data": {
"order_id": "W2A1739512345abcdef01",
"verified": true,
"result": { ... }
}
}
{
"success": false,
"message": "Error description here.",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "VERIFICATION_FAILED"
}
}
Endpoints
Health Check API — Check whether the Way2API® service is online. No authentication required. Ideal for uptime monitoring and CI/CD readiness checks.
None
curl -X GET https://app.way2api.com/api/v1/health
{
"success": true,
"message": "Service is healthy.",
"data": {
"status": "ok",
"service": "Way2API®",
"version": "1.0.0",
"timestamp": "2026-08-03T13:36:41+00:00"
}
}
PAN Verification API — Verify a 10-character Permanent Account Number (PAN) issued by the Indian Income Tax Department. Essential for financial KYC, income tax compliance, and onboarding workflows in the banking, insurance, and lending sectors. Returns the PAN holder's full name, PAN status (Existing and Valid, Deactivated, etc.), category (Individual, Company, HUF, Trust, etc.), Aadhaar seeding status, and other detailed information. Validates the PAN format and checks it against official government records.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| pan_number | string | Required | 10-character PAN — format: [A-Z]{5}[0-9]{4}[A-Z] (e.g. ABCDE1234F) |
curl -X POST https://app.way2api.com/api/v1/pan/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pan_number":"ABCDE1234F"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"pan_number": "ABCDE1234F",
"full_name": "RAJESH KUMAR",
"title": "",
"full_name_split": [
"",
"",
"RAJESH KUMAR"
],
"pan_status": "E",
"pan_status_desc": "EXISTING AND VALID",
"aadhaar_seeding_status": "Y",
"aadhaar_seeding_status_desc": "Seeded",
"pan_modified_date": null,
"category": "individual",
"client_id": "pan_advanced_v2_xxxxxxxxxxxxxxxxxxxx"
}
}
}
{
"success": false,
"message": "Invalid PAN",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "VERIFICATION_FAILED",
"result": {
"pan_number": "AABCY04940",
"full_name": "",
"title": "",
"full_name_split": [],
"pan_status": "",
"pan_status_desc": "",
"aadhaar_seeding_status": "",
"aadhaar_seeding_status_desc": "",
"pan_modified_date": null,
"category": "company"
}
}
}
GST Verification API — Verify a 15-character GSTIN (Goods & Services Tax Identification Number) registered under India's GST system. Critical for B2B vendor verification, invoice validation, and supply chain compliance. Returns the business legal name, trade name, registration status (Active, Cancelled, Suspended), taxpayer type, constitution (Private Limited, LLP, etc.), registration date, registered address with state and pincode, PAN number, nature of business activities, and e-invoice status. Use this endpoint to validate GST invoices, verify suppliers before onboarding, and ensure regulatory compliance under GST law.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| gst_number | string | Required | 15-character GSTIN — format: [0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][0-9A-Z][Z][0-9A-Z] (e.g. 10AABCY0494J1ZF) |
curl -X POST https://app.way2api.com/api/v1/gst/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"gst_number":"10AABCY0494J1ZF"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"gstin": "10AABCY0494J1ZF",
"lgnm": "YOFLIC INDIA PRIVATE LIMITED",
"tradeNam": "YOFLIC INDIA PRIVATE LIMITED",
"sts": "Active",
"dty": "Regular",
"ctb": "Private Limited Company",
"rgdt": "16/05/2019",
"lstupdt": "13/07/2023",
"stj": "Saran 1",
"ctj": "CHHAPRA RANGE",
"panNo": "AABCY0494J",
"einvoiceStatus": "Yes",
"nba": [
"Office / Sale Office",
"Recipient of Goods or Services",
"Supplier of Services",
"Retail Business"
],
"pradr": {
"addr": {
"bnm": "C/O RITA DEVI, VILL-JALALPUR",
"st": "PANCH-BISHUNPURI,BLOCK-JALALPUR",
"loc": "JALALPUR",
"dst": "Saran",
"stcd": "Bihar",
"pncd": "841412"
},
"ntr": "Office / Sale Office, Supplier of Services"
}
}
}
}
{
"success": false,
"message": "Invalid GSTIN / UID",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "INVALID_GSTIN",
"result": {
"gst_number": "10AABCY0494J2ZFA"
}
}
}
Driving License Verification API — Verify any Indian driving license number with date of birth against government RTO records in real time. Returns the license holder's name, address, gender, father/husband name, date of birth, issue and expiry dates, vehicle classes, issuing authority, and profile image availability. Useful for KYC onboarding, identity verification, ride-hailing driver validation, and fleet compliance. The profile image is excluded from the response for privacy.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| dl_number | string | Required | Driving license number (10-20 characters, e.g. MH0320140001234). |
| dob | string | Required | Date of birth of the license holder in dd/mm/yyyy format. |
curl -X POST https://app.way2api.com/api/v1/driving-license/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"dob":"15/06/1992","dl_number":"MH0320140001234"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"license_number": "MH0320140001234",
"state": "Maharashtra",
"name": "SURESH PATEL",
"permanent_address": "42 MG ROAD, PUNE, MAHARASHTRA",
"permanent_zip": "411001",
"temporary_address": "42 MG ROAD, PUNE, MAHARASHTRA",
"temporary_zip": "411001",
"citizenship": "",
"ola_name": "RTO PUNE",
"ola_code": "MH032",
"gender": "M",
"father_or_husband_name": "RAMESH PATEL",
"dob": "1992-06-15",
"doe": "2034-08-10",
"transport_doe": "1800-01-01",
"doi": "2014-08-11",
"transport_doi": "1800-01-01",
"has_image": true,
"blood_group": "B+",
"vehicle_classes": [
"MCWG",
"LMV-NT"
],
"less_info": false
}
}
}
{
"success": false,
"message": "Verification Failed.",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"license_number": "MH0320140001234",
"state": null,
"name": null,
"permanent_address": null,
"gender": null,
"father_or_husband_name": null,
"dob": "1992-06-15",
"doe": null,
"doi": null,
"has_image": false,
"vehicle_classes": [],
"less_info": false
}
}
}
Voter ID Verification API — Verify any Indian Voter ID (EPIC) number against Election Commission records in real time. Returns the voter's name, relation name, relation type, gender, age, date of birth, area, state, and house number. Useful for KYC onboarding, identity verification, electoral compliance, and address validation workflows.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| voter_id | string | Required | 10-character EPIC (Voter ID) number (e.g. ABC1234567). |
curl -X POST https://app.way2api.com/api/v1/voter-id/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"voter_id":"ABC1234567"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"relation_type": "F",
"gender": "M",
"age": "32",
"epic_no": "ABC1234567",
"dob": "1992-06-15",
"relation_name": "RAMESH KUMAR",
"name": "SURESH KUMAR",
"area": "Sector 5, Dwarka",
"state": "Delhi",
"house_no": "42-B"
}
}
}
{
"success": false,
"message": "Verification Failed.",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"epic_no": "ABC1234567"
}
}
}
Operator Circle Lookup API — Instantly identify the telecom operator (Jio, Airtel, Vi, BSNL, etc.) and service circle/zone for any 10-digit Indian mobile number. Essential for mobile recharge platforms, DTH services, telecom analytics, and number portability checks. Returns the operator name, circle (e.g., Karnataka, Maharashtra), and connection type (Prepaid or Postpaid). Handles MNP (Mobile Number Portability) — results reflect the current operator, not the original.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| mobile_number | string | Required | 10-digit Indian mobile number — format: [6-9][0-9]{9} (e.g. 9876543210) |
curl -X POST https://app.way2api.com/api/v1/operator-circle/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mobile_number":"9876543210"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"mobile_number": "9876543210",
"operator": "Jio",
"circle": "Karnataka",
"type": "Prepaid"
}
}
}
Domain Check API — Look up the registration status and availability of any domain name. Returns domain registration details including registrar, creation date, and expiration date. Useful for domain resellers, web hosting platforms, and brand protection services.
🌍 Global — Available worldwide
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | Required | Domain name to check (e.g. example.com) |
curl -X POST https://app.way2api.com/api/v1/domain/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"domain": "example.com",
"available": false,
"registrar": "Example Registrar",
"expires": "2027-01-01"
}
}
}
VPA / UPI Validation API — Verify any UPI Virtual Payment Address (VPA) in real time and return the registered account holder name. Use this for payout pre-validation, KYC, and fraud-prevention workflows before initiating a UPI transfer.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| vpa | string | Required | Virtual Payment Address (UPI ID) to validate, e.g. name@bank. |
curl -X POST https://app.way2api.com/api/v1/upi/vpa_validation \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"vpa":"name@okhdfcbank"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"vpa": "name@okhdfcbank",
"account_holder": "Rajesh Kumar",
"name_match_score": "",
"account_type": "",
"is_penny_drop": false
}
}
}
{
"success": false,
"message": "vpa must be a valid Virtual Payment Address (VPA).",
"data": null
}
Bank Account Verification API — Instantly verify Indian bank account details. Returns the account holder name and account status for payout processing, KYC, and compliance workflows.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| account_number | string | Required | Bank account number to validate (6–18 digits). |
| ifsc_code | string | Required | IFSC code of the account's branch (e.g. ABCD0123456). |
curl -X POST https://app.way2api.com/api/v1/bank/account_validation \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"account_number":"1234567890","ifsc_code":"HDFC0001234"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"account_number": "1234567890",
"ifsc_code": "HDFC0001234",
"account_holder": "Rajesh Kumar",
"name_match_score": "",
"account_type": "",
"bank_name": "HDFC BANK",
"branch_name": "MUMBAI",
"branch_state": "MAHARASHTRA",
"is_penny_drop": true
}
}
}
{
"success": false,
"message": "ifsc_code must be a valid IFSC code (e.g. ABCD0123456).",
"data": null
}
Mobile Prefill API — Fetch PAN and identity details linked to a mobile number using the subscriber's name. Useful for pre-filling KYC forms, onboarding flows, and identity resolution in lending, insurance, and fintech applications. Provide a 10-digit mobile number and the subscriber's name, and the API returns the associated PAN number along with detailed PAN holder information including full name, masked Aadhaar number, address, gender, and date of birth. Results are matched against government records for accuracy.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| mobile_number | string | Required | 10-digit Indian mobile number (e.g. 9876543210) |
| name | string | Required | Subscriber name for identity matching |
curl -X POST https://app.way2api.com/api/v1/mobile/prefill \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Rajesh Kumar","mobile_number":"9876543210"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"mobile_no": "9876543210",
"name": "Rajesh",
"pan_number": "ABCDE1234F",
"pan_details": {
"full_name": "RAJESH KUMAR",
"full_name_split": [
"RAJESH",
"",
"KUMAR"
],
"masked_aadhaar": "XXXX-XXXX-1234",
"address": {
"line_1": "123 MG ROAD",
"line_2": "",
"street_name": "MG ROAD",
"city": "MUMBAI",
"state": "MAHARASHTRA",
"zip": "400001",
"country": "INDIA"
},
"gender": "M",
"dob": "1990-01-15",
"email": "[email protected]",
"phone_number": "9876543210",
"category": "individual",
"aadhaar_linked": true,
"pan_status": "VALID"
}
}
}
}
{
"success": false,
"message": "No PAN found linked to this mobile number",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "REQUEST_FAILED",
"result": {
"mobile_no": "9876543210",
"name": "Rajesh",
"pan_number": "",
"pan_details": {}
}
}
}
Credit Report PDF API — Fetch the credit report as a downloadable PDF for an individual using their Aadhaar or PAN number. Returns the credit score and a PDF download link for the full credit report. Useful for lending workflows, KYC, creditworthiness assessments, and financial compliance. Consent is automatically set to "Y".
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Full name of the individual. |
| number | string | Required | 12-digit Aadhaar number or 10-character PAN (based on fetch_by). |
| fetch_by | string | Required | Type of ID document: "aadhaar" or "pan". |
| mobile | string | Required | 10-digit mobile number of the individual. |
curl -X POST https://app.way2api.com/api/v1/credit-report/pdf \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Rajesh Kumar","mobile":"9876543210","number":"123456789012","fetch_by":"aadhaar"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"number": "123456789012",
"fetch_by": "aadhaar",
"mobile": "9876543210",
"name": "Rajesh Kumar",
"credit_score": "750",
"credit_report": {},
"credit_report_link": "https://example.com/credit-report.pdf"
}
}
}
{
"success": false,
"message": "Verification Failed.",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"number": "123456789012",
"fetch_by": "aadhaar",
"mobile": "9876543210",
"name": "Rajesh Kumar",
"credit_score": "",
"credit_report": {},
"credit_report_link": ""
}
}
}
Credit Report API — Fetch a detailed credit report (JSON) for an individual using their Aadhaar or PAN number. Returns the credit score and the full credit report data including inquiry details, account summaries, and credit history. Useful for lending decisions, KYC verification, and risk assessment. Consent is automatically set to "Y".
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Full name of the individual. |
| number | string | Required | 12-digit Aadhaar number or 10-character PAN (based on fetch_by). |
| fetch_by | string | Required | Type of ID document: "aadhaar" or "pan". |
| mobile | string | Required | 10-digit mobile number of the individual. |
curl -X POST https://app.way2api.com/api/v1/credit-report/fetch \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Rajesh Kumar","mobile":"9876543210","number":"123456789012","fetch_by":"aadhaar"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"number": "123456789012",
"fetch_by": "aadhaar",
"mobile": "9876543210",
"name": "Rajesh Kumar",
"credit_score": "750",
"credit_report": {
"InquiryResponseHeader": {},
"CCRResponse": {}
},
"credit_report_link": ""
}
}
}
{
"success": false,
"message": "Verification Failed.",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"number": "123456789012",
"fetch_by": "aadhaar",
"mobile": "9876543210",
"name": "Rajesh Kumar",
"credit_score": "",
"credit_report": {},
"credit_report_link": ""
}
}
}
Vehicle RC Verification API — Fetch full Registration Certificate (RC) details for any Indian vehicle using its registration number. Returns comprehensive vehicle information including owner name, vehicle make/model, fuel type, insurance details, fitness status, tax details, PUCC status, financer info, and more. Useful for used-car platforms, insurance underwriting, fleet management, RTO compliance, and loan verification. Optional chassis and engine number parameters for additional cross-verification.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| rc_number | string | Required | Vehicle registration number (e.g. DL3CCV6131, MH12AB1234). |
| chassis_number | string | Optional | Chassis number for additional verification (optional). |
| engine_number | string | Optional | Engine number for additional verification (optional). |
curl -X POST https://app.way2api.com/api/v1/rc/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"rc_number":"DL3CCV6131"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"rc_number": "DL3CCV6131",
"fit_up_to": "2037-03-20",
"registration_date": "2022-03-21",
"owner_name": "Vivek Kumar Singh",
"father_name": "",
"present_address": "B-40 Fourth Floor, Vasant Kunj, New Delhi, 110070",
"permanent_address": "B-40 Fourth Floor, Vasant Kunj, New Delhi, 110070",
"vehicle_category": "LMV",
"vehicle_chasi_number": "WBA37AK09NY407428",
"vehicle_engine_number": "0004Y375",
"maker_description": "BMW INDIA PVT LTD",
"maker_model": "BMW 220I GRAN COUPE M SPORT",
"body_type": "SEDAN",
"fuel_type": "PETROL",
"color": "SNAPPER ROCKS BLUE M",
"norms_type": "BHARAT STAGE VI",
"financer": "ICICI BANK LTD",
"financed": true,
"insurance_company": "GoDigit General Insurance Ltd.",
"insurance_policy_number": "D203450761",
"insurance_upto": "2026-05-20",
"manufacturing_date_formatted": "2022-03",
"registered_at": "SOUTH DELHI, Delhi",
"rc_status": "ACTIVE"
}
}
}
{
"success": false,
"message": "Verification Failed.",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"rc_number": "KA12AC3456",
"registration_date": null,
"owner_name": null,
"vehicle_category": null,
"maker_model": null,
"fuel_type": null,
"rc_status": null
}
}
}
TAN Advanced Verification API — Verify any 10-character TAN (Tax Deduction Account Number) issued by the Income Tax Department. Returns the deductor's full name, allotment date, registered address, email, and phone number. Useful for employer/deductor KYC, TDS compliance, and business verification workflows.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| tan_number | string | Required | 10-character TAN number (e.g. ABCT12345E). |
curl -X POST https://app.way2api.com/api/v1/tan/fetch_adv \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tan_number":"ABKT12345E"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"tan": "ABKT12345E",
"details": {
"full_name": "SOLUTIONS PRIVATE LIMITED",
"first_name": "",
"middle_name": "",
"last_name": "",
"tan_allotment_date": "2050-12-18",
"address": {
"line_1": "H.NO 123 ,SHIV COLONY",
"line_2": ",",
"line_3": "",
"line_4": "",
"line_5": "PANCHKULA",
"state_code": 99,
"zip": "123456",
"full": "H.NO.123 SHIV COLONY , PANCHKULA 123456"
},
"email_1": "[email protected]",
"email_2": "",
"phone_number": "1234567890"
}
}
}
}
{
"success": false,
"message": "Verification Failed.",
"data": {
"order_id": "W2A1739512345abcdef02",
"result": {
"tan": "RTKT12345",
"details": {}
}
}
}
Aadhaar–PAN Link Check API — Check whether a given Aadhaar number is linked to a PAN card as mandated by the Income Tax Department. Returns the masked PAN, linking status, and reason. Essential for tax compliance, financial onboarding, and regulatory verification.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| aadhaar_number | string | Required | 12-digit Aadhaar number. |
curl -X POST https://app.way2api.com/api/v1/aadhaar/aadhaar_pan_link_check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"aadhaar_number":"443205881234"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"masked_pan": "EKXXXXXX6F",
"linking_status": true,
"reason": "linked",
"detailed_reason": null
}
}
}
{
"success": false,
"message": "Invalid Aadhaar Number",
"data": {
"order_id": "W2A1739512345abcdef02",
"result": {
"masked_pan": "",
"linking_status": false,
"reason": "invalid_aadhaar",
"detailed_reason": null
}
}
}
Look up geolocation, ISP, and network information for any public IPv4 or IPv6 address.
🌍 Global — Available worldwide
| Parameter | Type | Required | Description |
|---|---|---|---|
| ip_address | string | Optional | A valid public IPv4 or IPv6 address. If omitted, returns info for the caller s IP. |
curl -X POST https://app.way2api.com/api/v1/ip/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ip_address":"195.250.21.125"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A_SAMPLE_ORDER",
"result": {
"query": "195.250.21.125",
"status": "success",
"country": "India",
"countryCode": "IN",
"region": "MH",
"regionName": "Maharashtra",
"city": "Navi Mumbai",
"zip": "400703",
"lat": 19.0336,
"lon": 73.0118,
"timezone": "Asia/Kolkata",
"isp": "WHG Hosting Services Ltd",
"org": "WHG Hosting Services Ltd",
"as": "AS199404 WHG Hosting Services Ltd"
}
}
}
{
"success": false,
"message": "ip_address must be a valid IPv4 or IPv6 address.",
"data": {
"error_code": "VALIDATION_ERROR"
}
}
Send a transactional OTP or PIN SMS to a mobile number worldwide via Text SMS. Supports strict purpose and share_with validation.
🌍 Global — Available worldwide
| Parameter | Type | Required | Description |
|---|---|---|---|
| number | string | Required | Country code + mobile number. Currently supported: +91 (India). Example: 919876543210. |
| content | string | Required | Content type: "OTP" or "PIN". |
| value | string | Required | The OTP/PIN code to send (4 to 8 digits only). |
| purpose | string | Required | Purpose of the SMS. Allowed: login, registration, password_reset, transaction, account_verification, two_factor_auth, payment_confirmation, order_confirmation, profile_update, withdrawal. |
| share_with | string | Required | Sharing instruction. Allowed: no_one, executive, manager, support_team, admin. |
curl -X POST https://app.way2api.com/api/v1/aws/send_otp-pin \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"5289","number":"919876543210","content":"OTP","purpose":"login","share_with":"no_one"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A_SAMPLE_ORDER",
"result": {
"phone": "+919876543210",
"content_type": "OTP",
"purpose": "login",
"share_with": "no_one",
"sms_status": "sent"
}
}
}
{
"success": false,
"message": "content must be either \"OTP\" or \"PIN\".",
"data": {
"error_code": "VALIDATION_ERROR"
}
}
Domain WHOIS Lookup API — Retrieve comprehensive WHOIS registration information for any domain name. Returns registrar details, registration/expiry dates, registrant contact, administrative and technical contacts, name servers, and domain status. Powered by WhoisFreaks.
🌍 Global — Available worldwide
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain_name | string | Required | Fully qualified domain name to look up (e.g. example.com, example.co.in). |
curl -X POST https://app.way2api.com/api/v1/domain/whois_live \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain_name":"kwikapi.com"}'
{
"success": true,
"message": "Verification successful.",
"data": {
"order_id": "W2A1739512345abcdef01",
"verified": true,
"result": {
"domain_name": "kwikapi.com",
"domain_registered": "yes",
"create_date": "2019-03-19",
"update_date": "2024-02-18",
"expiry_date": "2025-03-19",
"domain_registrar": {
"iana_id": "1068",
"registrar_name": "NAMECHEAP INC",
"whois_server": "whois.namecheap.com",
"website_url": "http://www.namecheap.com",
"email_address": "[email protected]",
"phone_number": "+1.9854014545"
},
"registrant_contact": {
"name": "Redacted for Privacy",
"company": "Privacy service provided by Withheld for Privacy ehf",
"street": "Kalkofnsvegur 2",
"city": "Reykjavik",
"state": "Capital Region",
"zip_code": "101",
"country_name": "Iceland",
"country_code": "IS",
"email_address": "[email protected]",
"phone": "+354.4212434",
"fax": "N/A",
"mailing_address": "Kalkofnsvegur 2, 101 Reykjavik, Capital Region, Iceland"
},
"administrative_contact": {
"name": "Redacted for Privacy",
"company": "Privacy service provided by Withheld for Privacy ehf",
"street": "Kalkofnsvegur 2",
"city": "Reykjavik",
"state": "Capital Region",
"zip_code": "101",
"country_name": "Iceland",
"country_code": "IS",
"email_address": "[email protected]",
"phone": "+354.4212434",
"fax": "N/A",
"mailing_address": "Kalkofnsvegur 2, 101 Reykjavik, Capital Region, Iceland"
},
"technical_contact": {
"name": "Redacted for Privacy",
"company": "Privacy service provided by Withheld for Privacy ehf",
"street": "Kalkofnsvegur 2",
"city": "Reykjavik",
"state": "Capital Region",
"zip_code": "101",
"country_name": "Iceland",
"country_code": "IS",
"email_address": "[email protected]",
"phone": "+354.4212434",
"fax": "N/A",
"mailing_address": "Kalkofnsvegur 2, 101 Reykjavik, Capital Region, Iceland"
},
"name_servers": [
"dns3.cloudns.net",
"dns4.cloudns.net",
"dns7.cloudns.net",
"dns8.cloudns.net"
],
"domain_status": [
"clientTransferProhibited"
]
}
}
}
{
"success": false,
"message": "domain_name must be a valid domain name (e.g. example.com).",
"data": null
}
Mobile R-Offer Fetch API — Retrieve the R-Offers (special, number-specific recharge offers) that a telecom operator has loaded against one prepaid mobile number. Unlike a generic plan list, R-Offers are personalised per number, so the same recharge amount can carry different benefits for different subscribers. Returns an offers array where each entry has the price, a customer-friendly description, and the operator log_description (the exact benefit text). Ideal for recharge platforms and retailer apps that want to surface the best available offer before a top-up. Currently supported for Airtel and VI (Vodafone Idea) prepaid numbers only.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| mobile_number | string | Required | 10-digit Indian mobile number — format: [6-9][0-9]{9} (e.g. 9876543210) |
| operator | string | Required | Prepaid operator of the number. Accepted values: airtel, vi (Vodafone Idea). Other operators (jio, bsnl) are not supported by the source yet and are rejected without charge. |
curl -X POST https://app.way2api.com/api/v1/mobile/r-offer \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mobile_number":"9876543210","operator":"airtel"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"mobile_number": "9876543210",
"operator": "airtel",
"offers": [
{
"price": "29",
"description": "Stay connected with 2GB data at just Rs29",
"log_description": "RC29=Payein 2GB data 1 din ke liye."
},
{
"price": "65",
"description": "Stay connected with 4GB data at just Rs65",
"log_description": "65=4GB aapke maujooda pack ki vaidhta tak manya"
}
]
}
}
}
{
"success": false,
"message": "No offer found for this number",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "1"
}
}
Last Mobile Recharge Status API — Check when a prepaid mobile number was last recharged and for how much. Returns the last recharge amount and recharge_date. Useful for recharge reminders, churn and dormancy analysis, retailer commission checks, and confirming whether a top-up already landed before retrying it. Currently supported for Airtel and VI (Vodafone Idea) prepaid numbers only.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| mobile_number | string | Required | 10-digit Indian mobile number — format: [6-9][0-9]{9} (e.g. 9876543210) |
| operator | string | Required | Prepaid operator of the number. Accepted values: airtel, vi (Vodafone Idea). Other operators (jio, bsnl) are not supported by the source yet and are rejected without charge. |
curl -X POST https://app.way2api.com/api/v1/mobile/last-recharge \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"mobile_number":"9876543210","operator":"airtel"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"mobile_number": "9876543210",
"operator": "airtel",
"amount": "1799",
"recharge_date": "2024-11-14"
}
}
}
{
"success": false,
"message": "Last recharge details not available for this number",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "11"
}
}
DTH Advance Information API — Pull the full subscriber profile behind a DTH customer ID / VC number. Returns the account name, registered_mobile, current balance, monthly_amount, account status, plan, next_recharge_date, last_recharge_date, last_recharge_amount, switch_off_date and the installation address (with city, district, state and pin_code). Built for DTH recharge platforms and retailer apps that need to confirm the right account and its dues before taking a payment. Fields the operator does not publish for a given account are returned as empty strings (or "N/A" where the operator sends that).
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| dth_number | string | Required | DTH subscriber / customer ID — 9 to 13 digits (e.g. 01234567890). The exact prefix and length are set by the operator and differ between them, so the operator rejects a well-formed ID that does not match its own scheme. |
| operator | string | Required | DTH operator of the connection. Accepted values: airtel_dth, dish_tv, reliance_bigtv, sun_direct, tata_play (alias tata_sky), videocon_d2h (alias d2h). Use the DTH Operator Check API if the operator is unknown. |
curl -X POST https://app.way2api.com/api/v1/dth/info \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"dth_number":"01234567890","operator":"dish_tv"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"dth_number": "01234567890",
"operator": "dish_tv",
"customer_id": "9710835108",
"name": "Thirugnanasamba",
"registered_mobile": "97XXXXXX08",
"balance": "194.73",
"monthly_amount": "",
"status": "1",
"plan": "",
"next_recharge_date": "8/4/2026 12:00:00 AM",
"last_recharge_date": "N/A",
"last_recharge_amount": "N/A",
"switch_off_date": "8/7/2026 12:00:00 AM",
"address": "pondy, VILLYANPUR, PONDICHERRY, Pin - 605110",
"city": "PONDICHERRY",
"district": "",
"state": "PONDICHERRY",
"pin_code": "605110"
}
}
}
{
"success": false,
"message": "Customer Id Starts with 0 and is 11 digits long",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "1"
}
}
DTH Operator Check API — Identify which DTH operator a subscriber / customer ID belongs to, without asking the customer. Returns the machine-readable operator slug (e.g. sun_direct) plus the display operator_name. The returned slug is exactly the value the DTH Advance Information API expects, so the two chain together: identify the operator first, then pull the subscriber profile. Removes the most common cause of failed DTH recharges — the customer picking the wrong operator.
🗺️ Country-specific
India
| Parameter | Type | Required | Description |
|---|---|---|---|
| dth_number | string | Required | DTH subscriber / customer ID — 9 to 13 digits (e.g. 70512345661). Exact length depends on the operator. |
curl -X POST https://app.way2api.com/api/v1/dth/operator-check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"dth_number":"70512345661"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"dth_number": "70512345661",
"operator": "sun_direct",
"operator_name": "SUN DIRECT"
}
}
}
{
"success": false,
"message": "DTH operator could not be identified for this number",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "3"
}
}
IP Check Advance API — Deep IP intelligence for any IPv4 or IPv6 address. Beyond basic geolocation (city, country, coordinates, time zone), it returns rich network and risk signals: ISP, organization, ASN, connection type, user type, a static IP score, and anonymizer flags — is_anonymous, is_anonymous_vpn, is_public_proxy, is_residential_proxy and is_tor_exit_node. Built for fraud scoring, login-risk checks, and geo-targeting. ip_address is optional — omit it to auto-detect and look up the IP that called this API. Fields the source cannot resolve for a given address are omitted from the result.
🌍 Global — Available worldwide
| Parameter | Type | Required | Description |
|---|---|---|---|
| ip_address | string | Optional | IPv4 or IPv6 address to look up (e.g. 122.180.145.105 or 2001:db8::1). Optional — if omitted, the IP that called this API is auto-detected and used. |
curl -X POST https://app.way2api.com/api/v1/ip/check_advance \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ip_address":"122.180.149.100"}'
{
"success": true,
"message": "",
"data": {
"order_id": "W2A1739512345abcdef01",
"result": {
"city": {
"confidence": 30,
"geoname_id": 1261481,
"names": {
"en": "New Delhi"
}
},
"continent": {
"code": "AS",
"geoname_id": 6255147,
"names": {
"en": "Asia"
}
},
"country": {
"confidence": 99,
"iso_code": "IN",
"geoname_id": 1269750,
"names": {
"en": "India"
}
},
"location": {
"accuracy_radius": 20,
"latitude": 28.6327,
"longitude": 77.2198,
"time_zone": "Asia/Kolkata"
},
"postal": {
"confidence": 1,
"code": "110002"
},
"registered_country": {
"iso_code": "IN",
"geoname_id": 1269750,
"names": {
"en": "India"
}
},
"subdivisions": [
{
"confidence": 30,
"iso_code": "DL",
"geoname_id": 1273293,
"names": {
"en": "National Capital Territory of Delhi"
}
}
],
"traits": {
"static_ip_score": 5,
"user_count": 2,
"user_type": "residential",
"autonomous_system_number": 24560,
"autonomous_system_organization": "Bharti Airtel Ltd., Telemedia Services",
"connection_type": "Cable/DSL",
"domain": "airtel.in",
"isp": "Airtel",
"organization": "Airtel",
"ip_address": "122.180.149.100",
"network": "122.180.149.100/32"
}
}
}
}
{
"success": false,
"message": "The address 203.0.113.1 is not in our database.",
"data": {
"order_id": "W2A1739512345abcdef01",
"error_code": "IP_ADDRESS_NOT_FOUND"
}
}
Error Handling
All errors return a consistent JSON structure with success: false and a human-readable message. Use the HTTP status code for classification and the message for logging.
// 401 — Missing API Key { "success": false, "message": "API key is required. Pass it via Authorization: Bearer <key> or X-API-Key header.", "data": null }
// 401 — Invalid API Key { "success": false, "message": "Invalid or inactive API key.", "data": null }
// 402 — Insufficient Balance { "success": false, "message": "Insufficient balance. Please recharge your account.", "data": null }
// 403 — No API Access { "success": false, "message": "You do not have access to this API service.", "data": null }
// 429 — Rate Limited { "success": false, "message": "Rate limit exceeded. Please try again later.", "data": null }
// 400 — Verification Failed { "success": false, "message": "Verification failed.", "data": { "order_id": "W2A1739512345abcdef01", "error_code": "VERIFICATION_FAILED" } }