Way2API® — API Reference v2.20.0

Complete API reference for 22 verification & utility services. Integrate PAN Verification, GST Verification, Driving License Verify, Voter ID Verification, Operator and Circle Check, Domain Check and 16 more — all from a single integration point.

Base URL: https://app.way2api.com/api/v1
✓ Key saved

🔑 Remember API Key

One-click convenience for testing & troubleshooting — no account needed.

1

What it doesSaves your API key in this browser only using localStorage. Next time you open this page, all Try It panels are pre-filled automatically.

2

Auto-updatesIf you type a different key into any Try It field, the saved key is replaced instantly — only the most recent key is ever stored.

3

Uncheck to forgetUnchecking “Remember API Key” immediately deletes the stored key and clears all fields. While unchecked, nothing is saved even if you type a new key.

4

Re-check to save againChecking the box again saves whatever key is currently in the Try It fields.

⚠ Security note: Your key is stored only in your browser and is never sent to any server except as part of the actual API call you send. Do not use this feature on shared or public computers.

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)

Authorization: Bearer your_api_key_here

Option 2 — X-API-Key Header

X-API-Key: your_api_key_here
⚠ Important

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.

ℹ Default Rate Limits

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 Response
{
    "success": true,
    "message": "Verification successful.",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "verified": true,
        "result": { ... }
    }
}
Error Response
{
    "success": false,
    "message": "Error description here.",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "VERIFICATION_FAILED"
    }
}

Endpoints

GET /api/v1/health Public

Health Check API — Check whether the Way2API® service is online. No authentication required. Ideal for uptime monitoring and CI/CD readiness checks.

Parameters

None

Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
curl -X GET https://app.way2api.com/api/v1/health
Response — 200
{
    "success": true,
    "message": "Service is healthy.",
    "data": {
        "status": "ok",
        "service": "Way2API®",
        "version": "1.0.0",
        "timestamp": "2026-08-03T13:36:41+00:00"
    }
}
🚀 Send Request
POST /api/v1/pan/verify Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
Parameter Type Required Description
pan_number string Required 10-character PAN — format: [A-Z]{5}[0-9]{4}[A-Z] (e.g. ABCDE1234F)
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
        }
    }
}
Error Response — 422
{
    "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"
        }
    }
}
🚀 Send Request
POST /api/v1/gst/verify Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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)
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
            }
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "Invalid GSTIN / UID",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "INVALID_GSTIN",
        "result": {
            "gst_number": "10AABCY0494J2ZFA"
        }
    }
}
🚀 Send Request
POST /api/v1/driving-license/verify Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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
        }
    }
}
Error Response — 422
{
    "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
        }
    }
}
🚀 Send Request
POST /api/v1/voter-id/verify Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
Parameter Type Required Description
voter_id string Required 10-character EPIC (Voter ID) number (e.g. ABC1234567).
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "Verification Failed.",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "epic_no": "ABC1234567"
        }
    }
}
🚀 Send Request
POST /api/v1/operator-circle/check Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
Parameter Type Required Description
mobile_number string Required 10-digit Indian mobile number — format: [6-9][0-9]{9} (e.g. 9876543210)
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "success": true,
    "message": "",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "mobile_number": "9876543210",
            "operator": "Jio",
            "circle": "Karnataka",
            "type": "Prepaid"
        }
    }
}
🚀 Send Request
POST /api/v1/domain/check Bearer

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.

Availability

🌍 Global — Available worldwide

Request Body (application/json)
Parameter Type Required Description
domain string Required Domain name to check (e.g. example.com)
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "success": true,
    "message": "",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "domain": "example.com",
            "available": false,
            "registrar": "Example Registrar",
            "expires": "2027-01-01"
        }
    }
}
🚀 Send Request
POST /api/v1/upi/vpa_validation Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
Parameter Type Required Description
vpa string Required Virtual Payment Address (UPI ID) to validate, e.g. name@bank.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "success": true,
    "message": "",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "vpa": "name@okhdfcbank",
            "account_holder": "Rajesh Kumar",
            "name_match_score": "",
            "account_type": "",
            "is_penny_drop": false
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "vpa must be a valid Virtual Payment Address (VPA).",
    "data": null
}
🚀 Send Request
POST /api/v1/bank/account_validation Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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).
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "ifsc_code must be a valid IFSC code (e.g. ABCD0123456).",
    "data": null
}
🚀 Send Request
POST /api/v1/mobile/prefill Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
Parameter Type Required Description
mobile_number string Required 10-digit Indian mobile number (e.g. 9876543210)
name string Required Subscriber name for identity matching
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
            }
        }
    }
}
Error Response — 422
{
    "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": {}
        }
    }
}
🚀 Send Request
POST /api/v1/credit-report/pdf Bearer

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".

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
        }
    }
}
Error Response — 422
{
    "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": ""
        }
    }
}
🚀 Send Request
POST /api/v1/credit-report/fetch Bearer

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".

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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": ""
        }
    }
}
Error Response — 422
{
    "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": ""
        }
    }
}
🚀 Send Request
POST /api/v1/rc/verify Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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).
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
        }
    }
}
Error Response — 422
{
    "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
        }
    }
}
🚀 Send Request
POST /api/v1/tan/fetch_adv Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
Parameter Type Required Description
tan_number string Required 10-character TAN number (e.g. ABCT12345E).
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
            }
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "Verification Failed.",
    "data": {
        "order_id": "W2A1739512345abcdef02",
        "result": {
            "tan": "RTKT12345",
            "details": {}
        }
    }
}
🚀 Send Request
POST /api/v1/ip/check Bearer

Look up geolocation, ISP, and network information for any public IPv4 or IPv6 address.

Availability

🌍 Global — Available worldwide

Request Body (application/json)
Parameter Type Required Description
ip_address string Optional A valid public IPv4 or IPv6 address. If omitted, returns info for the caller s IP.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "ip_address must be a valid IPv4 or IPv6 address.",
    "data": {
        "error_code": "VALIDATION_ERROR"
    }
}
🚀 Send Request
POST /api/v1/aws/send_otp-pin Bearer

Send a transactional OTP or PIN SMS to a mobile number worldwide via Text SMS. Supports strict purpose and share_with validation.

Availability

🌍 Global — Available worldwide

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "success": true,
    "message": "",
    "data": {
        "order_id": "W2A_SAMPLE_ORDER",
        "result": {
            "phone": "+919876543210",
            "content_type": "OTP",
            "purpose": "login",
            "share_with": "no_one",
            "sms_status": "sent"
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "content must be either \"OTP\" or \"PIN\".",
    "data": {
        "error_code": "VALIDATION_ERROR"
    }
}
🚀 Send Request
POST /api/v1/domain/whois_live Bearer

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.

Availability

🌍 Global — Available worldwide

Request Body (application/json)
Parameter Type Required Description
domain_name string Required Fully qualified domain name to look up (e.g. example.com, example.co.in).
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
            ]
        }
    }
}
Error Response — 422
{
    "success": false,
    "message": "domain_name must be a valid domain name (e.g. example.com).",
    "data": null
}
🚀 Send Request
POST /api/v1/mobile/r-offer Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
                }
            ]
        }
    }
}
Error Response — 400
{
    "success": false,
    "message": "No offer found for this number",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "1"
    }
}
🚀 Send Request
POST /api/v1/mobile/last-recharge Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "success": true,
    "message": "",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "mobile_number": "9876543210",
            "operator": "airtel",
            "amount": "1799",
            "recharge_date": "2024-11-14"
        }
    }
}
Error Response — 400
{
    "success": false,
    "message": "Last recharge details not available for this number",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "11"
    }
}
🚀 Send Request
POST /api/v1/dth/info Bearer

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).

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
        }
    }
}
Error Response — 400
{
    "success": false,
    "message": "Customer Id Starts with 0 and is 11 digits long",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "1"
    }
}
🚀 Send Request
POST /api/v1/dth/operator-check Bearer

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.

Availability

🗺️ Country-specific

India

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "success": true,
    "message": "",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "dth_number": "70512345661",
            "operator": "sun_direct",
            "operator_name": "SUN DIRECT"
        }
    }
}
Error Response — 400
{
    "success": false,
    "message": "DTH operator could not be identified for this number",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "3"
    }
}
🚀 Send Request
POST /api/v1/ip/check_advance Bearer

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.

Availability

🌍 Global — Available worldwide

Request Body (application/json)
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.
Example Request
cURL
PHP
Fetch
jQuery
Axios
Python
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 Response — 200
{
    "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"
            }
        }
    }
}
Error Response — 400
{
    "success": false,
    "message": "The address 203.0.113.1 is not in our database.",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "IP_ADDRESS_NOT_FOUND"
    }
}
🚀 Send Request

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.

Common Error Responses
// 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"
    }
}