Bu sayfa çalışan kodun sözleşmesi. Ülke + hizmet gönderirsin, numara ve SMS kodu alırsın. Kaynak adı dönmez. Anahtar Hesap sayfasından üretilir; anahtar orada durur, yenileyene kadar aynı kalır.
Webhook
Hesap → Tercihler’e HTTPS adresi yaz. SMS düşünce smsal.vip şu gövdeyi POST eder (yaklaşık 4 sn zaman aşımı; hata kiralamayı durdurmaz):
{
"event": "sms.received",
"brand": "smsal.vip",
"id": "act_…",
"phone": "+4915…",
"country": "germany",
"service": "whatsapp",
"sms": [{ "from": "WhatsApp", "text": "…", "code": "482193" }]
}Uçlar
GET /api/v1/catalog
Açık
Ülke ve hizmet kimlikleri. demo: true ise kaynak API anahtarı yok, alınan hat örnektir.
{
"brand": "smsal.vip",
"demo": true,
"countries": [{ "id": "germany", "name": "Almanya", "iso": "DE", "dial": "+49", "flag": "🇩🇪" }],
"services": [{ "id": "whatsapp", "name": "WhatsApp", "hint": "" }]
}GET /api/v1/prices?service=whatsapp
Açık
Seçilen hizmet için ülke satırları. country alanı POST /activations gövdesine aynen yazılır (örn. england, germany). available false ise stok yok.
{
"service": "whatsapp",
"serviceName": "WhatsApp",
"demo": true,
"rows": [{
"country": "germany",
"name": "Almanya",
"nameEn": "Germany",
"flag": "🇩🇪",
"iso": "DE",
"dial": "+49",
"priceUsd": 0.4,
"stock": 12,
"available": true
}]
}curl -s 'https://smsal.vip/api/v1/prices?service=whatsapp'
GET | POST /api/v1/quote
Açık
Tek ülke+hizmet fiyatı. GET query: country, service. POST JSON aynı alanlar. available false veya priceUsd null ise alma.
{
"country": "germany",
"service": "whatsapp",
"demo": true,
"available": true,
"priceUsd": 0.4,
"stock": 12,
"etaSeconds": 20
}curl -s 'https://smsal.vip/api/v1/quote?country=germany&service=whatsapp'
GET /api/v1/me
Anahtar
Üye, bakiye (kuruş), anahtar öneki, davet kodu, varsayılan ülke. Numara ücreti bakiyeden kuruş olarak düşülür: round(priceUsd × kur × 100).
{
"id": "usr_…",
"name": "Nizam",
"email": "[email protected]",
"balanceKurus": 5000,
"apiKeyPrefix": "smsal_ab12cd",
"referralCode": "ab3dk2pq",
"defaultCountry": "germany",
"webhookUrl": null
}curl -s https://smsal.vip/api/v1/me \
-H 'authorization: Bearer smsal_SENIN_ANAHTARIN'
POST /api/v1/activations
Anahtar
Numara kirala. Gövde: { country, service }. 401 anahtar yok/yanlış, 402 bakiye yetmez, 400 stok veya geçersiz hizmet. Yanıt PublicActivation.
{
"id": "act_…",
"country": "germany",
"countryName": "Almanya",
"service": "whatsapp",
"serviceName": "WhatsApp",
"phone": "+491512345678",
"priceUsd": 0.4,
"status": "waiting",
"sms": [],
"demo": true,
"createdAt": "2026-09-05T22:00:00.000Z",
"expiresAt": "2026-09-05T22:15:00.000Z"
}curl -s https://smsal.vip/api/v1/activations \
-H 'authorization: Bearer smsal_SENIN_ANAHTARIN' \
-H 'content-type: application/json' \
-d '{"country":"germany","service":"whatsapp"}'GET /api/v1/activations
Anahtar
Senin kiralama işlemlerin. { activations: PublicActivation[] } en fazla 50, yeniden taze.
GET /api/v1/activations/{id}
Anahtar
SMS kutusunu yenile. Yalnız kendi id’n. status received olunca sms dizisi dolar. code, metindeki 4–8 haneli sayı; yoksa null. Başkasının id’si 404.
{
"id": "act_…",
"status": "received",
"phone": "+491512345678",
"sms": [{
"from": "WhatsApp",
"text": "Your code is 482193",
"code": "482193",
"receivedAt": "2026-09-05T22:00:20.000Z"
}],
"demo": true,
"expiresAt": "2026-09-05T22:15:00.000Z"
}curl -s https://smsal.vip/api/v1/activations/act_... \
-H 'authorization: Bearer smsal_SENIN_ANAHTARIN'
POST /api/v1/activations/{id}/cancel
Anahtar
Yalnız status waiting iken iptal. Bakiye iade. Gövde yok.
curl -s -X POST https://smsal.vip/api/v1/activations/act_.../cancel \
-H 'authorization: Bearer smsal_SENIN_ANAHTARIN'
POST /api/v1/activations/{id}/demo-sms
Anahtar
Yalnız demo: true hatlarda örnek SMS basar. Canlı hatta 400: “Canlı hatlarda demo SMS yok”. İsteğe bağlı gövde { text }.