LibOTP API Gateway
Temporary virtual SMS numbers for OTP. Prepaid wallet. India-first. Plain-text HTTP API — built so developers and AI assistants can integrate from this page alone.
Send this link to any AI to generate a working client: https://libotp.online/docs/api.md (full machine-readable Markdown).
Base URL
https://libotp.online/api/handler_api.php
Alias (same handler): https://libotp.online/stubs/handler_api.php
Method: GET · Response: plain text
Authentication
Query param api_key=YOUR_KEY (also apiKey, key, or header
X-Api-Key). Create the key after login at
/app/api. Invalid key → BAD_KEY.
Actions
getBalance
GET ...?api_key=YOUR_KEY&action=getBalance → ACCESS_BALANCE:123.45
getCountries
GET ...?api_key=YOUR_KEY&action=getCountries → IN:India → US:United States → …
Use codes like IN, US — never numeric ids like 22.
getServices
GET ...?api_key=YOUR_KEY&action=getServices → whatsapp:WhatsApp → telegram:Telegram → …
Use friendly codes only — never third-party short codes.
getNumber / getNumberV2
GET ...?api_key=YOUR_KEY&action=getNumber&service=whatsapp&country=IN → ACCESS_NUMBER:<activationId>:<phoneDigits>
| Param | Required | Notes |
|---|---|---|
service | yes | From getServices |
country | no | Default IN |
operator | no | Auto-picked if omitted |
maxPrice | no | INR sell cap |
Errors: NO_BALANCE, NO_NUMBERS, WRONG_SERVICE, WRONG_COUNTRY.
getStatus
GET ...?api_key=YOUR_KEY&action=getStatus&id=ACTIVATION_ID → STATUS_WAIT_CODE → STATUS_OK:123456 → STATUS_CANCEL
setStatus
GET ...?api_key=YOUR_KEY&action=setStatus&id=ACTIVATION_ID&status=8
| status | Meaning |
|---|---|
8 | Cancel |
6 | Finish |
3 | Request next SMS |
Recommended flow
getBalancegetNumber→ parseACCESS_NUMBER:id:phone- Poll
getStatusevery 3–5s untilSTATUS_OK:code - Optional cancel with
setStatus=8
curl
curl "https://libotp.online/api/handler_api.php?api_key=YOUR_KEY&action=getBalance" curl "https://libotp.online/api/handler_api.php?api_key=YOUR_KEY&action=getNumber&service=whatsapp&country=IN" curl "https://libotp.online/api/handler_api.php?api_key=YOUR_KEY&action=getStatus&id=ACTIVATION_ID"
Limits & security
- ~60 requests / minute per API key
- Key only affects the owning wallet — no admin access
- Recharge wallet: /app/recharge
Full AI copy: https://libotp.online/docs/api.md