Simple, Reliable and Transparent SMS Verification API.
The SMSKap Developer API provides approved accounts with real, physical SIM card numbers for WhatsApp, WhatsApp Business, and Telegram using transparent standard catalog pricing and automated refund guarantees.
https://api.smskap.com/v1Complete your integration in three steps
Submit your developer application, create your live API key once approved, and start calling the API securely from your backend server.
Submit your developer form to begin the review process.
Get notified once your account is reviewed and approved.
Generate your live secret key and configure it on your server.
Secure Bearer Token Authentication
Send your API key in the Authorization: Bearer <key> header on every request. Your private secret key is shown only once upon generation.
curl https://api.smskap.com/v1/account \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx"Account & Balance Status
Query GET /v1/account to retrieve your available balance, currency (TRY), and assigned rate and activation limits.
/v1/accountApproved Live Key Required{
"account": { "balance": 450.00, "currency": "TRY" },
"application": {
"name": "Production Bot",
"status": "approved",
"requests_per_minute": 60,
"daily_activation_limit": 200,
"currency": "TRY"
},
"environment": "live",
"request_id": "req_01J8SMSKAP123456789"
}Standard Service & Country Catalog
Our infrastructure focuses strictly on 3 high-delivery services and 3 tier-1 global countries. Intelligent carrier routing selects physical SIM cards automatically in the background.
Supported Services
whatsappwhatsapp-businesstelegramSupported Countries
trusgbNo arbitrary markups or hidden provider costs. All API requests use transparent public catalog pricing. High-volume partners can be granted custom discount percentages via the admin dashboard. GET /v1/offers returns net live prices with your discount pre-applied.
/v1/countriesActive Countries (TR, US, GB)/v1/servicesActive Services (WhatsApp, WhatsApp Business, Telegram)/v1/offersLive Prices & AvailabilityNumber Reservation, SMS Polling & Refund Workflow
Reserve a temporary number, poll for the incoming verification code, or cancel within the cancellation window. If no SMS arrives, your balance is refunded instantly.
/v1/activationsReserve Number (POST /v1/activations)curl -X POST https://api.smskap.com/v1/activations \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Idempotency-Key: e9b8d2e1-4567-4d89-b123-987654321abc" \
-H "Content-Type: application/json" \
-d '{
"service_key": "whatsapp",
"country_code": "tr"
}'{
"activation": {
"id": "AKT-260827-ABC123",
"status": "waiting_code",
"service_key": "whatsapp",
"service_name": "WhatsApp",
"country_code": "tr",
"country_name": "Türkiye",
"number": "+905301234567",
"code": null,
"sale_amount": 40.50,
"currency": "TRY",
"expires_at": "2026-10-19T21:05:00Z",
"cancellable_at": "2026-10-19T20:47:00Z",
"poll_interval_seconds": 3
},
"request_id": "req_01J8SMSKAP123456789"
}/v1/activations/{activation_id}Fetch SMS Code (GET /v1/activations/{id})curl https://api.smskap.com/v1/activations/AKT-260827-ABC123 \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxx"{
"activation": {
"id": "AKT-260827-ABC123",
"status": "code_received",
"code": "482910",
"sale_amount": 40.50,
"currency": "TRY"
},
"request_id": "req_01J8SMSKAP123456789"
}/v1/activations/{activation_id}Cancel & Refund (DELETE /v1/activations/{id})Official Python SDK Integration
Integrate in seconds using our official open-source Python SDK with automated polling and refund handling:
pip install smskapfrom smskap import SMSKapClient, SMSKapError
client = SMSKapClient(api_key="sk_live_xxxxxxxxxxxxxxxxxxxxxxxx")
try:
# 1. Numara rezerve et (WhatsApp / Türkiye)
act = client.create_activation(service="whatsapp", country="tr")
print(f"Tahsis edilen numara: {act['number']} (ID: {act['id']})")
# 2. SMS kodunu otomatik dinle (120 saniyeye kadar)
code = client.wait_for_code(activation_id=act["id"], timeout=120)
if code:
print(f"SMS Doğrulama Kodu: {code}")
else:
# Kod gelmezse iptal et; bakiye anında iade edilir
client.cancel_activation(act["id"])
print("Süre doldu, rezervasyon iptal edildi ve bakiye iade edildi.")
except SMSKapError as e:
print(f"Hata [{e.code}]: {e.message}")Observability, Limits and Safety
API usage is governed by real-time safety limits configurable via the management dashboard.
Requests per minute limit (e.g. 60 req/min). Returns HTTP 429 with Retry-After when exceeded.
Maximum number of activations per calendar day. Can be increased based on your business volume.
Unique identifier attached to every response for auditing and rapid support resolution.
Standard Error Codes & Response Format
All API errors adhere to a standardized JSON schema. Applications should branch on error.code.
| HTTP | Error Code (error.code) | Description & Action |
|---|---|---|
| 400 | invalid_payload | Missing or invalid payload (service_key or country_code outside supported catalog). |
| 400 | insufficient_balance | Account balance is insufficient. Top up balance in the user panel. |
| 400 | cancel_window_expired | Cancellation window expired or SMS code already delivered; cannot be cancelled. |
| 401 | invalid_api_key | Invalid, missing or revoked Bearer API key. |
| 403 | forbidden | Developer application pending approval or suspended. |
| 404 | no_numbers_available | No numbers available right now for this service and country. Please retry shortly. |
| 404 | activation_not_found | The requested activation ID does not exist. |
| 409 | activation_conflict | Conflict detected on activation or duplicate idempotency key. |
| 429 | rate_limit_exceeded | Rate limit exceeded. Wait the number of seconds specified in the Retry-After header. |
| 429 | daily_activation_limit_exceeded | Daily activation quota reached. Contact support to request a quota increase. |
| 503 | service_temporarily_unavailable | Carrier network is temporarily unavailable. Please retry shortly. |