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
Authentication
Every protected endpoint needs a valid access token. Grab one from the API section in @ProNumCheckBot. Pass it any of these ways:
| Where | How to pass | Notes |
|---|---|---|
| Header | Authorization: Bearer <token> | Recommended |
| Header | X-API-Token: <token> | Alternative |
| Query | ?token=<token> | Appears in logs |
| Query | ?api_key=<token> | Alias of ?token |
Request throttle
/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)
error: "Timed out".country_code query parameter (default 91). For every other platform, pass a 10-digit Indian mobile number and omit country_code.Token status
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
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
| Param | Type | Required | Description |
|---|---|---|---|
| number | string | required | 10-digit Indian mobile number. For platforms that accept international numbers, pass 6–15 digits without the country code. |
| platform | string | required | Platform slug — see platforms. |
| country_code | string | optional | Dialing 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
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.
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
Returns the slugs of all currently enabled platforms. No token required.
Platform metadata v5.12+
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
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
| resultType | registered | Meaning |
|---|---|---|
| registered | true | An account exists for this number |
| not_registered | false | No account found |
| error | false | Check failed (upstream down, blocked, or timed out) |
HTTP status codes
| Status | Meaning |
|---|---|
| 400 | Bad request — missing or invalid parameter. Doesn't count toward the throttle. |
| 401 | Missing, invalid, or revoked access token. |
| 403 | Token disabled or expired, or platform temporarily disabled. |
| 404 | Unknown route. |
| 429 | Rate limit reached. Honor Retry-After and wait. |
| 503 | Maintenance mode is on. |
| 500 | Unexpected 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';