πSMS API Dokumantasyonu
Kendi uygulamanizdan dogrudan SMS gonderin, numara dogrulama ve HLR sorgulari yapin, bakiyenizi programatik olarak goruntuleyin.
Kimlik Dogrulama
Tum isteklerde X-Api-Key header'i ile API anahtarinizi gonderin. Anahtarinizi panelde Hesabim → API Erisimi bolumunden olusturabilirsiniz.
X-Api-Key: pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Temel Bilgiler
- Base URL:
https://pisms.casino/api/v1 - Tum istekler
POST,Content-Type: application/jsonile gonderilir. Govdesi veContent-Typeheader'i olmayan POST istekleri sunucu guvenlik duvari tarafindan403 Forbiddenile reddedilir; ek alan gerekmeyen uc noktalarda bile bos bir{}govdesi gonderin. - Yalnizca tek segmentlik mesaj gonderilebilir. Standart metin: en fazla 160 karakter. Turkce/Unicode veya ozel karakter iceren metin: en fazla 70 karakter.
- Sinir asilirsa mesaj gonderilmez ve
message_too_longhatasi doner. Birlestirilmis (cok parcali) mesajlar mevcut sebeke uzerinden alicilara ulasmadigi icin bastan engellenir. - Hiz siniri: API anahtari basina dakikada 60 istek.
- SMS gonderiminde tek istekte en fazla 200 numara. (HLR ve numara dogrulama uc noktalarinda bu sinir 30'dur.)
1. SMS Gonderimi
POST /api/v1/sms/send
| Alan | Zorunlu | Aciklama |
|---|---|---|
from | Evet | Gonderici adi (alfanumerikse ≤11, sayisalsa ≤15 karakter) |
to | Evet | Alici numara(lar), virgulle ayrilmis |
text | Evet | Mesaj icerigi |
type | Hayir | "0" standart / "1" Unicode; belirtilmezse otomatik |
scheduled | Hayir | ISO 8601 ileri tarih (orn: 2026-03-15T10:00:00Z) |
curl -X POST "https://pisms.casino/api/v1/sms/send" \
-H "X-Api-Key: pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"from": "FirmaAdi",
"to": "905321234567",
"text": "Merhaba, siparisiniz kargoya verildi."
}'
Yanit (tekli gonderim):
{
"status": "OK",
"messageId": "128",
"results": [
{ "to": "905321234567", "messageId": "128", "status": "sent" }
]
}
messageId yalnizca tekli gonderimde ust seviyede de yer alir; toplu gonderimde her
numaranin kendi messageId'si results dizisinden okunmalidir. Bu ID, webhook
bildirimlerindeki messageId ile birebir eslesir.
PHP Ornegi
<?php
$ch = curl_init('https://pisms.casino/api/v1/sms/send');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'X-Api-Key: pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'from' => 'FirmaAdi',
'to' => '905321234567',
'text' => 'Merhaba, siparisiniz kargoya verildi.',
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Python Ornegi
import requests
response = requests.post(
"https://pisms.casino/api/v1/sms/send",
headers={"X-Api-Key": "pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},
json={
"from": "FirmaAdi",
"to": "905321234567",
"text": "Merhaba, siparisiniz kargoya verildi.",
},
)
print(response.json())
2. Bakiye Sorgulama
POST /api/v1/sms/balance — ek alan gerektirmez, ancak diger uc noktalarda oldugu gibi
Content-Type: application/json header'i ve bos bir JSON govdesi ({}) gonderilmelidir.
curl -X POST "https://pisms.casino/api/v1/sms/balance" \
-H "X-Api-Key: pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{}'
{ "status": "OK", "balance": 245.50 }
3. HLR Sorgulama
POST /api/v1/hlr/query — numaranin anlik ulasilabilirligini, operatorunu ve roaming/tasima bilgisini doner.
curl -X POST "https://pisms.casino/api/v1/hlr/query" \
-H "X-Api-Key: pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"number": "905321234567"}'
{
"status": "OK",
"results": [
{ "number": "905321234567", "reachable": true, "country": "Turkey", "operator": "Turkcell", "roaming": false, "ported": false }
]
}
4. Numara Dogrulama
POST /api/v1/nv/query — numaranin gercekten var olan bir hat olup olmadigini kontrol eder.
curl -X POST "https://pisms.casino/api/v1/nv/query" \
-H "X-Api-Key: pisms_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"number": "905321234567"}'
{
"status": "OK",
"results": [
{ "number": "905321234567", "valid": true, "country": "Turkey", "type": "MOBILE" }
]
}
Hata Kodlari
{ "error": "insufficient_credit", "description": "Yetersiz kredi." }
| Kod | HTTP | Aciklama |
|---|---|---|
unauthorized | 401 | X-Api-Key eksik veya gecersiz |
account_inactive | 403 | Hesabiniz aktif degil |
invalid_request | 400 | Zorunlu alan eksik / gecersiz JSON |
invalid_sender | 400 | Gonderici adi kurallara uymuyor |
invalid_recipients | 400 | Gecerli numara bulunamadi |
too_many_recipients | 400 | Tek istekte izin verilenden fazla numara |
message_too_long | 400 | Mesaj tek segmenti asiyor (160 / Unicode 70 karakter) |
invalid_scheduled_time | 400 | Gecersiz/gecmis zamanlama |
insufficient_credit | 402 | Yetersiz bakiye |
rate_limited | 429 | Dakikalik istek siniri asildi |
method_not_allowed | 405 | POST disinda bir metot |
service_unavailable | 503 | Servis gecici olarak yanit veremiyor |
Toplu gonderimde numara bazinda results dizisi icinde ayrica su degerler donebilir:
invalid_number, provider_error, ambiguous, not_attempted, send_failed.
Webhook (Teslim Bildirimleri)
Gonderdiginiz SMS'lerin teslim durumu degistiginde kendi sunucunuza otomatik bildirim gonderebiliriz.
Kurulum
- Panelde Hesabim → API Erisimi → Webhook URL alanina kendi bildirim adresinizi girin.
- Bu adres
POSTisteklerini JSON govde ile kabul etmeli veHTTP 200donmelidir.
Payload Formati
{
"messageId": "128",
"to": "905321234567",
"status": "delivered",
"timestamp": "2026-07-10T12:00:00Z"
}
status: delivered, undelivered veya expired olabilir.
messageId, gonderim yanitinda aldiginiz kimlikle birebir eslesir.
Sunucunuz HTTP 200 disinda yanit doner veya zaman asimina ugrarsa, bildirim en fazla
3 kez araliklarla yeniden denenir.
Destek
Sorulariniz icin Iletisim sayfasindan bize ulasabilirsiniz.