Partner API v1
Base URL: https://plans.mitrait.in/api/partner/v1. All endpoints are GET and return JSON (UTF-8). Data covers 4 mobile operators (Reliance Jio, Airtel, Vi (Vodafone Idea), BSNL), 5 DTH operators and 23 circles, refreshed automatically.
Authentication
Send your credentials on every request as HTTP headers:
Query parameters api_key / api_secret are accepted as a fallback but headers are strongly recommended. Always call the API from your server – never embed the secret in mobile apps or browser JavaScript.
Request signing (optional, recommended)
Instead of sending the secret, sign each request. Enable "Require signed requests" under Security to enforce it.
Response format
Errors use a non-200 status and:
| HTTP | Code | Meaning |
|---|---|---|
| 401 | AUTH_MISSING / AUTH_INVALID / AUTH_SIGNATURE | Missing or wrong credentials / signature |
| 403 | ACCOUNT_PENDING / ACCOUNT_SUSPENDED / API_BLOCKED / API_PAUSED | Account not active |
| 403 | IP_NOT_ALLOWED | Caller IP not in whitelist / in blacklist |
| 403 | ENDPOINT_FORBIDDEN / TYPE_FORBIDDEN / OPERATOR_FORBIDDEN | Your permissions do not include this resource |
| 422 | INVALID_OPERATOR / INVALID_CIRCLE / INVALID_MOBILE / INVALID_QUERY | Bad parameter |
| 404 | NOT_FOUND | Plan does not exist or is inactive |
| 429 | RATE_LIMIT_MINUTE / RATE_LIMIT_DAILY / RATE_LIMIT_MONTHLY | Quota exceeded – see headers |
Rate limits
Your limits are shown on the dashboard. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-Daily-Remaining and X-Monthly-Remaining. Cache plan lists on your side for 5–15 minutes; plans change at most a few times per day.
GET/status
Connectivity check, your permissions, quota usage and data freshness.
GET/operators?type=mobile|dth
List of operators you may query. Use the code value in plan requests.
GET/circles
All telecom circles with the states they cover. Use code in mobile plan requests.
GET/categories?type=mobile|dth
Plan categories (slug used for the category filter).
GET/detect?mobile=98XXXXXXXX
Detect the operator and circle of a mobile number using our local numbering-series database (no third-party lookup). MNP limitation: the result reflects the operator to which the number series was allocated; a number ported to another operator will still return the allocation operator, so always let your users change the operator manually. operator is null when no series matches.
GET/detect/report?mobile=…&operator=…[&circle=…]&source=recharge|user
Help beat MNP. After a successful recharge (source=recharge) or when your user corrects the auto-selected operator (source=user), report it. The number is stored hashed with its real operator, so the next /detect for that number returns the current operator with confidence: high and ported: true/false – at no cost.
Also: add &mnp=1 to /detect to request an external MNP/HLR lookup when the platform has one configured (subject to the platform policy). Detect responses include ported (true / false / null = unknown) and mnp_checked.
GET/plans/mobile
operator * | operator code, e.g. jio |
circle * | circle code, e.g. DL |
category | slug: all (default), popular, unlimited, data, 5g, talktime, sms, ott, roaming, annual, other |
q | keyword filter, e.g. 2gb, netflix, 84 |
min_price, max_price | price range in ₹ |
sort | price_asc (default), price_desc, validity_desc, validity_asc |
GET/plans/dth
operator * | DTH operator code, e.g. tataplay |
category | all, monthly, quarterly, half-yearly, annual, hd, sd, addon, regional, other |
q, min_price, max_price, sort | as above |
GET/dth/operator?dth_number=…
Identify the DTH operator from a customer ID / VC number (9–13 digits). Requires the dth_operator permission. Results are cached, so repeat lookups are free and fast.
GET/dth/info?dth_number=…&operator=tataplay|airteldth|dishtv|d2h|sundirect|auto
Customer profile behind a DTH ID: name, registered mobile, balance, monthly amount, status, plan, next/last recharge, switch-off date and address. Use operator=auto (or omit it) to detect the operator first. Requires the dth_info permission. Responses are cached for a few minutes; add &fresh=1 to force a live lookup. Fields the operator does not publish are null.
Errors: INVALID_DTH_NUMBER (422), NO_RECORD_FOUND / REQUEST_FAILED (404 – ID not valid for that operator), OPERATOR_NOT_DETECTED (404), SERVICE_UNAVAILABLE (503).
GET/plans/search?type=mobile|dth&q=…
Search across all operators and circles by price or keyword (max 100 results).
GET/plan/{id}
Full details of one plan.
GET/usage
Your own usage summary, daily series and per-endpoint breakdown (last 30 days).
Code samples
PHP (cURL)
PHP – signed request
JavaScript (Node.js)
Python