Way2API® API documentation Sign in to grab your API key — or create a free account. Sign In Get Started

Way2API® — API Reference v2.42.0

Complete API reference for 50 verification & utility services — all from a single integration point. Pick an API below for its parameters, responses, error codes and runnable examples.

Base URL: https://app.way2api.com/api/v1

All APIs 50

Every endpoint accepts JSON request bodies, returns structured JSON, and authenticates with a single Bearer key.

Business 11
POST CIBIL Credit Report
/api/v1/credit-report-cibil/fetch-report

CIBIL Credit Report API — Pull a full TransUnion CIBIL consumer credit report and CIBIL score for an individual from their PAN, mo…

POST CIBIL Credit Report PDF
/api/v1/credit-report-cibil/fetch-report-pdf

CIBIL Credit Report PDF API — The same TransUnion CIBIL enquiry as the CIBIL Credit Report API, returning the CIBIL score and a do…

POST Credit Report Equifax
/api/v1/credit-report/fetch

Credit Report API — Fetch a detailed credit report (JSON) for an individual using their Aadhaar or PAN number. Returns the credit …

POST Credit Report Equifax PDF
/api/v1/credit-report/pdf

Credit Report PDF API — Fetch the credit report as a downloadable PDF for an individual using their Aadhaar or PAN number. Returns…

POST Credit Report Experian
/api/v1/credit-report-experian/fetch-report

Credit Report Experian API — pull a full Experian consumer credit report for an individual from their PAN and mobile number, with …

POST Credit Report Experian PDF
/api/v1/credit-report-experian/fetch-report-pdf

Credit Report Experian PDF API — the same Experian bureau enquiry as the JSON endpoint, returning the bureau score and a download …

POST GST Filing Details
/api/v1/gst/filing-details

GST Filing Details API — Every GST return a GSTIN filed in one financial year, read from the government record. Send a GSTIN and a…

POST GST Filing Frequency
/api/v1/gst/filing-frequency

GST Filing Frequency API — Whether a GSTIN files its returns monthly or quarterly, quarter by quarter, for one financial year. Und…

POST GST Verification
/api/v1/gst/verify

GST Verification API — Verify a 15-character GSTIN (Goods & Services Tax Identification Number) registered under India's GST syste…

POST HSN Code Lookup
/api/v1/gst/hsn-code

HSN Code Lookup API — Validate an HSN code (goods) or SAC code (services) and get what the code actually covers: its official tari…

POST TAN Adv
/api/v1/tan/fetch_adv

TAN Advanced Verification API — Verify any 10-character TAN (Tax Deduction Account Number) issued by the Income Tax Department. Re…

Telecom 8
POST DTH Advance Information
/api/v1/dth/info

DTH Advance Information API — Pull the full subscriber profile behind a DTH customer ID / VC number. Returns the account name, reg…

POST DTH Operator Check
/api/v1/dth/operator-check

DTH Operator Check API — Identify which DTH operator a subscriber / customer ID belongs to, without asking the customer. Returns t…

POST Indian DTH/D2H Recharge Plans
/api/v1/dth/recharge-plans

Indian DTH/D2H Recharge Plans API — Get every DTH pack an Indian satellite TV operator sells: Tata Play, Airtel Digital TV, Dish T…

POST Indian Prepaid Recharge Plans
/api/v1/mobile/recharge-plans

Indian Prepaid Recharge Plans API — Get every prepaid recharge plan an Indian mobile operator currently sells in one telecom circl…

POST Last Mobile Recharge Status
/api/v1/mobile/last-recharge

Last Mobile Recharge Status API — Check when a prepaid mobile number was last recharged and for how much. Returns the last recharg…

POST Mobile R-Offer Fetch
/api/v1/mobile/r-offer

Mobile R-Offer Fetch API — Retrieve the R-Offers (special, number-specific recharge offers) that a telecom operator has loaded aga…

POST Operator and Circle Check
/api/v1/operator-circle/check

Operator Circle Lookup API — Instantly identify the telecom operator (Jio, Airtel, Vi, BSNL, etc.) and service circle/zone for any…

POST Send OTP/PIN by SMS
/api/v1/aws/send_otp-pin

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

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.

HTTP Status Codes

Standard HTTP status codes indicate the outcome of every request. The status alone does not tell you whether a call was billed — read charged in the body.

Code Status Charged Description
200 OK Yes Verification result returned
202 Accepted Yes Accepted and being processed, or the provider did not respond in time — check message_code to tell the two apart, and quote the order_id
400 Bad Request No Verification failed or invalid vendor response
401 Unauthorized No Missing or invalid API key
402 Payment Required No Insufficient balance — recharge required
403 Forbidden No No access to this API service
422 Unprocessable Entity Depends — read charged Either input validation failed (not charged), or the provider ran the lookup and returned a negative result (charged). message_code distinguishes them: INVALID_INPUT vs VERIFICATION_FAILED / NO_RECORD_FOUND
429 Too Many Requests No Rate limit exceeded
404 Not Found No Unknown endpoint
500 Internal Server Error No Unexpected error on our side
503 Service Unavailable No Vendor temporarily unavailable

Response Format

Every response — success, failure, or rejection — carries the same control keys. The verification payload sits under data.result.

Success Response

{
    "status": "SUCCESS",
    "status_code": 200,
    "charged": true,
    "success": true,
    "message": "",
    "message_code": "OK",
    "order_id": "W2A1739512345abcdef01",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "result": {
            "field": "value",
            "another_field": 123
        }
    }
}

Error Response

{
    "status": "SUCCESS",
    "status_code": 422,
    "charged": true,
    "success": false,
    "message": "The request was processed but the details could not be verified.",
    "message_code": "VERIFICATION_FAILED",
    "order_id": "W2A1739512345abcdef01",
    "data": {
        "order_id": "W2A1739512345abcdef01",
        "error_code": "verification_failed"
    }
}

When You Are Charged

charged is the authority — never infer billing from the HTTP status. A call is billed when the provider did the work, even if the answer was negative. Prices are per-account; see Pricing in your dashboard.

message_code Charged HTTP status What it means
OK Yes 200 SUCCESS Verified. The provider ran the lookup and returned a result.
ACCEPTED Yes 202 PENDING Queued at the provider. Quote the order_id to collect the result.
PROVIDER_NO_RESPONSE Yes 202 PENDING The provider did not respond in time. Held for manual review — not auto-refunded.
VERIFICATION_FAILED Yes 422 SUCCESS The provider ran the lookup and the details did not verify. The work was done, so the call is billed.
NO_RECORD_FOUND Yes 422 SUCCESS The provider ran the lookup and found no matching record. Billed for the same reason.
SOURCE_UNAVAILABLE Yes 422 SUCCESS The provider accepted and ran the lookup, but the underlying record source was down and could not answer. The provider bills us for the attempt, so the call is billed. Retry shortly.
INVALID_INPUT No 422 FAILED Your parameters were rejected before any call was placed.
REQUEST_FAILED No 400 FAILED The call was placed and failed definitively. Refunded to your wallet automatically.
MISSING_API_KEY No 401 FAILED No API key on the request.
INVALID_API_KEY No 401 FAILED Key invalid or expired, or the calling IP is not allowed.
INSUFFICIENT_BALANCE No 402 FAILED Your wallet balance is below the price of this call.
NO_API_ACCESS No 403 FAILED Your account is not subscribed to this API.
NOT_FOUND No 404 FAILED No such endpoint.
RATE_LIMITED No 429 FAILED Per-key, per-service one-minute limit exceeded.
INTERNAL_ERROR No 500 FAILED Unexpected error on our side.
PROVIDER_UNAVAILABLE No 503 FAILED The service could not be reached.

Error Handling

Errors use the same envelope, with message_code naming the reason. Use it for branching and message for logging. Per-API error payloads are on each API's Error Codes tab.

Common Error Responses

Every response carries charged. On all of the errors below it is false — the call never reached the provider, so nothing was billed. The absence of an order_id means the same thing.

// 401 — MISSING_API_KEY
{
    "status": "FAILED",
    "status_code": 401,
    "charged": false,
    "success": false,
    "message": "API key is required.",
    "message_code": "MISSING_API_KEY"
}
// 401 — INVALID_API_KEY
{
    "status": "FAILED",
    "status_code": 401,
    "charged": false,
    "success": false,
    "message": "Invalid, expired, or IP-restricted API key.",
    "message_code": "INVALID_API_KEY"
}
// 402 — INSUFFICIENT_BALANCE
{
    "status": "FAILED",
    "status_code": 402,
    "charged": false,
    "success": false,
    "message": "Insufficient balance. Please recharge your account.",
    "message_code": "INSUFFICIENT_BALANCE"
}
// 403 — NO_API_ACCESS
{
    "status": "FAILED",
    "status_code": 403,
    "charged": false,
    "success": false,
    "message": "You do not have access to this API service.",
    "message_code": "NO_API_ACCESS"
}
// 422 — INVALID_INPUT
{
    "status": "FAILED",
    "status_code": 422,
    "charged": false,
    "success": false,
    "message": "The request could not be accepted. Check the parameters and try again.",
    "message_code": "INVALID_INPUT"
}
// 429 — RATE_LIMITED
{
    "status": "FAILED",
    "status_code": 429,
    "charged": false,
    "success": false,
    "message": "Rate limit exceeded. Please try again later.",
    "message_code": "RATE_LIMITED"
}
// 503 — PROVIDER_UNAVAILABLE
{
    "status": "FAILED",
    "status_code": 503,
    "charged": false,
    "success": false,
    "message": "Service temporarily unavailable.",
    "message_code": "PROVIDER_UNAVAILABLE"
}