API Reference
v5.13

Verify any Indian number across 23 consumer platforms in one call.

REST API, token auth, live playground inside these docs. Pick an endpoint on the right, paste your token once, send, and read the real JSON back.

# Base URL — the current deployment
https://pronumcheck.eu.cc

Playground LIVE

Paste your token, pick an endpoint, hit Send — the request runs against this deployment and the real JSON response renders below. Your token is kept in localStorage on this device only.

⟶

Interactive playground

Every endpoint. Zero setup.
Checking…
⏎send
Pick an endpoint, paste your token, and press Send request.

Authentication

Every protected endpoint needs a valid access token. Grab one from the API section in @ProNumCheckBot. Pass it any of these ways:

WhereHow to passNotes
HeaderAuthorization: Bearer <token>Recommended
HeaderX-API-Token: <token>Alternative
Query?token=<token>Appears in logs
Query?api_key=<token>Alias of ?token

Request throttle

⚡
1 request every 3 seconds on protected endpoints (configurable by the operator). /api/checkall counts as one request even though it scans every platform. When you exceed the limit the API answers HTTP 429 with a retryAfter field and a Retry-After header — honor it.
{
  "success": false,
  "error":   "Rate limit reached",
  "retryAfter": "2.1s",
  "message":   "Please wait 2.1 seconds and try again."
}

Supported platforms (23)

◈
Most platforms return in 1–5 seconds. A couple run multi-step verification flows that take up to a minute — scans never block each other, and each one that doesn't finish inside the deadline comes back as error: "Timed out".
◈
Some platforms accept an international number with a separate country_code query parameter (default 91). For every other platform, pass a 10-digit Indian mobile number and omit country_code.

Token status

GET/api/statusRequires token

Returns the token's state and usage. Not throttled and doesn't count toward usage — safe for a liveness probe.

curl https://pronumcheck.eu.cc/api/status \
  -H "Authorization: Bearer PNC_your_token_here"
{
  "success": true,
  "keyPreview":   "PNC_ab12…WX9z",
  "label":        "telegram_bot",
  "state":        "active",
  "requestCount": 47,
  "today":        12,
  "dailyLimit":   0,
  "rateLimit":    "1 request / 3.0s",
  "rateLimitMs":  3000
}

Check a number

GET/api/check?number=<number>&platform=<platform>Requires token

Scan one number on one platform. Pass a 10-digit Indian mobile number for every service. A few platforms accept an international number (6–15 digits) with a separate country_code query parameter. Also accepts POST with a JSON body.

Parameters

ParamTypeRequiredDescription
numberstringrequired10-digit Indian mobile number. For platforms that accept international numbers, pass 6–15 digits without the country code.
platformstringrequiredPlatform slug — see platforms.
country_codestringoptionalDialing code without +. Used only by platforms that accept international numbers. Default 91.
curl "https://pronumcheck.eu.cc/api/check?number=9876543210&platform=swiggy" \
  -H "Authorization: Bearer PNC_your_token_here"
{
  "success":    true,
  "number":     "9876543210",
  "platform":   "swiggy",
  "resultType": "registered",
  "registered": true,
  "latencyMs":  1243
}

Check all platforms

GET/api/checkall?number=<number>Requires token

Scan a number across every enabled platform in parallel. Typically returns in 3–10 s and never waits longer than 90 s. Platforms still running at the deadline come back as error: "Timed out". Results are never cached — every scan is a live check.

⚠
Note: Counts as 1 request against the throttle, but runs every platform concurrently.
◉
Customizable Check-All: pass an optional platforms parameter (comma-separated platform keys, e.g. platforms=swiggy,jio,flipkart) to scan only a chosen subset. Omit it to scan everything.
curl "https://pronumcheck.eu.cc/api/checkall?number=9876543210" \
  -H "Authorization: Bearer PNC_your_token_here"
{
  "success":         true,
  "number":          "9876543210",
  "registeredCount": 5,
  "totalPlatforms":  23,
  "registeredOn":    ["swiggy", "flipkart", "amazon"],
  "errorPlatforms":  [],
  "latencyMs":       4821,
  "results":         [
    { "platform": "swiggy",  "registered": true,  "resultType": "registered"     },
    { "platform": "meesho", "registered": false, "resultType": "not_registered" }
  ]
}

List platforms

GET/api/platformsNo auth

Returns the slugs of all currently enabled platforms. No token required.

Platform metadata v5.12+

GET/api/metaNo auth

Returns every enabled platform with icon, display name and brand color — enough to build a native UI without hard-coding.

{
  "success":  true,
  "platforms": ["swiggy", "flipkart", "meesho", …],
  "meta": {
    "swiggy":   { "icon":"🍔", "name":"Swiggy",   "color":"#FC8019" },
    "flipkart": { "icon":"🛍",  "name":"Flipkart", "color":"#2874F0" }
  }
}

Health

GET/api/healthNo auth

Service heartbeat and storage mode. storage reports upstash-kv when persistence is connected, otherwise memory.

{ "success": true, "status": "ok", "storage": "upstash-kv", "platforms": 23, "totalScans": 0, "version": "5.21.0" }

Result types

resultTyperegisteredMeaning
registeredtrueAn account exists for this number
not_registeredfalseNo account found
errorfalseCheck failed (upstream down, blocked, or timed out)

HTTP status codes

StatusMeaning
400Bad request — missing or invalid parameter. Doesn't count toward the throttle.
401Missing, invalid, or revoked access token.
403Token disabled or expired, or platform temporarily disabled.
404Unknown route.
429Rate limit reached. Honor Retry-After and wait.
503Maintenance mode is on.
500Unexpected server error.

Code samples

JavaScript (fetch)

const res  = await fetch('https://pronumcheck.eu.cc/api/check?number=9876543210&platform=swiggy', {
  headers: { 'Authorization': 'Bearer PNC_your_token_here' }
});
const data = await res.json();
console.log(data.registered, data.resultType);

Python (requests)

import requests

resp = requests.get(
    "https://pronumcheck.eu.cc/api/check",
    params={"number": "9876543210", "platform": "swiggy"},
    headers={"Authorization": "Bearer PNC_your_token_here"},
)
data = resp.json()
print(data["registered"], data["resultType"])

Node.js — check all

const axios = require('axios');
const { data } = await axios.get(
  'https://pronumcheck.eu.cc/api/checkall',
  {
    params:  { number: '9876543210' },
    headers: { Authorization: 'Bearer PNC_your_token_here' },
  }
);
console.log(`Found on ${data.registeredCount} platforms:`, data.registeredOn);

PHP (cURL)

<?php
$ch = curl_init('https://pronumcheck.eu.cc/api/check?number=9876543210&platform=swiggy');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer PNC_your_token_here'],
]);
$resp = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $resp['registered'] ? 'yes' : 'no';