VOIS

VOIS SMS API

Kendi yazılımınızdan SMS, OTP ve MMS gönderin; gönderimlerinizin durumunu, bakiyenizi ve gönderen başlıklarınızı sorgulayın. Tüm servisler HTTPS üzerinden JSON ile çalışır.

Temel adreshttps://api.vois.com.tr

Genel bilgiler

Bütün servisler için geçerli kurallar.

Yanıt yapısı

Her yanıt iki alan içerir. İstek başarılıysa data dolu, err null gelir; hatalıysa tersi.

BAŞARILI
{
  "data": { "pkgID": 48213377 },
  "err": null
}
HATALI
{
  "data": null,
  "err": {
    "status": 417,
    "code": "ERR_USER_CREDIT_REQUIRED",
    "message": "ERR_USER_CREDIT_REQUIRED"
  }
}
AlanAçıklama
dataServisin döndürdüğü veri. Hata durumunda null.
err.statusHTTP durum kodu.
err.codeHata kodu. Listesi için Hata kodları.
err.messageHatanın açıklaması. Parametre hatalarında hangi alanın hatalı olduğunu belirtir.
Sistemi korumak için istek sayısı sınırlandırılmıştır. Çok sık istek gönderirseniz 429 yanıtı alırsınız; kısa bir süre bekleyip tekrar deneyin. Toplu gönderimde binlerce numarayı tek tek göndermek yerine çoklu ya da kişiye özel gönderimi kullanın.

Kimlik doğrulama

Her istekte, size verilen API kullanıcı adı ve şifresiyle Basic Authentication başlığı gönderilmelidir.

  1. Kullanıcı adı ve şifre arasına iki nokta koyarak birleştirin: kullanici:sifre
  2. Bu metni Base64 ile kodlayın.
  3. Sonucu Authorization başlığına Basic önekiyle ekleyin.

Örneğin kullanıcı adı smsuser, şifre p4r0la ise smsuser:p4r0la metninin Base64 karşılığı c21zdXNlcjpwNHIwbGE= olur:

HTTP BAŞLIĞI
Authorization: Basic c21zdXNlcjpwNHIwbGE=

Çoğu HTTP kütüphanesi bunu sizin yerinize yapar (cURL'de -u kullanici:sifre, PHP'de CURLOPT_USERPWD, Python'da auth=(...)).

Kullanıcı adı ve şifrenizi yalnızca sunucu tarafındaki kodunuzda saklayın; tarayıcıda çalışan JavaScript'e ya da mobil uygulamaya koymayın. Bilgiler hatalıysa ERR_UNAUTHORIZED_REQUEST hatası döner.

Hızlı başlangıç

Tek bir numaraya SMS gönderen en kısa örnek. KULLANICI, SIFRE ve BASLIK alanlarını kendi bilgilerinizle değiştirin.

curl -X POST https://api.vois.com.tr/sms/create \
  -u 'KULLANICI:SIFRE' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": 1,
    "sendingType": 0,
    "title": "Hosgeldin mesaji",
    "content": "Merhaba, kaydiniz tamamlandi.",
    "number": "905321234567",
    "sender": "BASLIK",
    "encoding": 0
  }'

Başarılı yanıtta dönen pkgID gönderimin paket numarasıdır; raporları bu numarayla (ya da kendi verdiğiniz customID ile) sorgularsınız.

Ortak gönderim parametreleri

Tekil, çoklu ve kişiye özel SMS aynı adrese (/sms/create) gönderilir; aralarındaki fark sendingType ve numara alanıdır. Aşağıdaki alanlar üçünde de aynı şekilde kullanılır.

AlanAçıklama
type int zorunluMesaj tipi. SMS için her zaman 1.
title string zorunluGönderimi raporlarda tanımanız için paket adı. Alıcıya gitmez. 5–50 karakter.
sender string zorunluGönderen başlığı; alıcının telefonunda gönderen olarak görünür. Hesabınızda onaylı bir başlık olmalıdır (bkz. Gönderen başlıkları).
encoding int opsiyonelKarakter kodlaması. 0 Standart (varsayılan), 1 Türkçe karakterli, 2 Unicode (emoji vb.). Mesaj boyu ve maliyet buna göre değişir, bkz. Karakter ve mesaj boyu.
validity int opsiyonelMesajın operatörde geçerli kalacağı süre, dakika. En az 60, en çok 1440. Varsayılan 1440.
sendingDate string opsiyonelİleri tarihli gönderim. Biçim yyyy-MM-dd HH:mm. Boş bırakılırsa hemen gönderilir. İleri tarihli paket iptal edilebilir.
commercial bool opsiyonelTicari ileti (kampanya, tanıtım) ise true. Ticari gönderimler İYS kontrolünden geçer; hesabınızda İYS kodu ve marka kodu tanımlı olmalıdır. Bilgilendirme mesajlarında false.
skipAhsQuery bool opsiyonelGönderimin AHS sorgusuna girmesini istemiyorsanız true.
recipientType int opsiyonelAHS sorgusunda alıcı tipi: 0 Bireysel (varsayılan), 1 Tacir, 2 Her ikisi.
gateway uuid opsiyonelAynı başlık için birden fazla ağ geçidi tanımlıysa hangisinden gönderileceği. Değerler Ağ geçitleri servisinden alınır. Çoğu hesapta gerekmez.
customID string opsiyonelKendi sisteminizdeki kayıt numarası. Raporları ve iptali bu değerle de yapabilirsiniz. En çok 100 karakter; harf, rakam, - ve . içerebilir. Her paket için benzersiz olmalıdır, aynı değer tekrar gelirse ERR_SMS_PKG_CUSTOM_ID_DUPLICATION döner.
pushSettings.url string opsiyonelTeslim raporunun otomatik gönderileceği adresiniz. Bkz. Rapor bildirimi.
periodicSettings object opsiyonelYalnızca çoklu ve kişiye özel gönderimde. Büyük listeleri parça parça göndermek için:
periodType her zaman 0; interval iki parça arası dakika (en az 1); amount her parçadaki numara sayısı (1000 ve katları).
Aynı içerik aynı numaralara 30 dakika içinde ikinci kez gönderilirse sistem bunu tekrar sayar ve ERR_SMS_PKG_DUPLICATION hatası verir. Bu, hatalı döngülerde çift gönderimi önler.

Tekil SMS

Tek bir numaraya SMS gönderir.

POST/sms/create
AlanAçıklama
sendingType int zorunluTekil gönderim için 0.
number string zorunluAlıcı numarası.
content string zorunluMesaj metni.
Diğer alanlar: Ortak gönderim parametreleri
İSTEK
{
  "type": 1,
  "sendingType": 0,
  "title": "Randevu hatirlatma",
  "content": "Yarın 10:00 randevunuzu hatırlatırız.",
  "number": "905321234567",
  "sender": "BASLIK",
  "encoding": 1,
  "validity": 1440,
  "commercial": false,
  "customID": "randevu-20261110-0042",
  "pushSettings": { "url": "https://ornek.com/sms-rapor" }
}
YANIT
{
  "data": { "pkgID": 48213377 },
  "err": null
}

Çoklu SMS

Aynı metni birden fazla numaraya tek pakette gönderir.

POST/sms/create
AlanAçıklama
sendingType int zorunluÇoklu gönderim için 1.
numbers string[] zorunluAlıcı numaraları listesi.
content string zorunluHerkese gidecek mesaj metni.
Diğer alanlar, periodicSettings dahil: Ortak gönderim parametreleri
İSTEK
{
  "type": 1,
  "sendingType": 1,
  "title": "Kasim kampanyasi",
  "content": "Kasım'a özel %20 indirim! Ret için RET yazıp gönderin.",
  "numbers": ["905321234567", "905441234567"],
  "sender": "BASLIK",
  "encoding": 1,
  "commercial": true,
  "sendingDate": "2026-11-15 10:00",
  "periodicSettings": { "periodType": 0, "interval": 5, "amount": 1000 }
}
YANIT
{
  "data": { "pkgID": 48213390 },
  "err": null
}

Bu örnekte liste 15 Kasım 10:00'da başlar ve 5 dakikada bir 1000'er numara gönderilir.

Kişiye özel SMS

Her numaraya farklı metin göndereceğiniz durumlar için (isim, tutar, kod gibi kişiye özel alanlar). Tüm mesajlar tek pakette gider.

POST/sms/create
AlanAçıklama
sendingType int zorunluKişiye özel gönderim için 2.
numbers object[] zorunluHer alıcı için bir nesne:
  nr stringAlıcı numarası.
  msg stringBu numaraya gidecek metin.
  xid string opsiyonelBu alıcıyı kendi sisteminizde eşleştirmek için numara (en çok 32 karakter, benzersiz olması gerekmez). Numara bazlı raporda geri döner.
Diğer alanlar: Ortak gönderim parametreleri
İSTEK
{
  "type": 1,
  "sendingType": 2,
  "title": "Fatura bildirimi",
  "numbers": [
    { "nr": "905321234567", "msg": "Sayın Ayşe Hanım, 1.250 TL faturanız oluştu.", "xid": "F-1001" },
    { "nr": "905441234567", "msg": "Sayın Mehmet Bey, 980 TL faturanız oluştu.", "xid": "F-1002" }
  ],
  "sender": "BASLIK",
  "encoding": 1,
  "commercial": false
}
YANIT
{
  "data": { "pkgID": 48213402 },
  "err": null
}

OTP SMS

Tek kullanımlık doğrulama kodu gibi, hızlı iletilmesi gereken mesajlar için ayrı ve öncelikli servis. Hesabınızda OTP yetkisi açık olmalıdır; açtırmak için bizimle iletişime geçin.

POST/sms/create-otp
AlanAçıklama
number string zorunluAlıcı numarası.
sender string zorunluGönderen başlığı.
content string zorunluMesaj metni.
encoding int opsiyonel0 Standart, 1 Türkçe, 2 Unicode.
validity int opsiyonelGeçerlilik süresi, dakika. OTP için en az 3, en çok 6; varsayılan 6.
commercial bool opsiyonelTicari ileti ise true. OTP için genelde false.
customID string opsiyonelKendi sisteminizdeki kayıt numarası.
trustDate string opsiyonelSIM kart değişikliği kontrolü için tarih, yyyy-MM-dd HH:mm:ss. Bu tarihten sonra numaranın SIM kartı değişmişse mesaj gönderilmez (dolandırıcılığa karşı koruma). Hesabınızda ek yetki gerektirir.
pushSettings.url string opsiyonelTeslim raporunun gönderileceği adres.
İSTEK
{
  "number": "905321234567",
  "sender": "BASLIK",
  "content": "Doğrulama kodunuz: 482915",
  "encoding": 1,
  "validity": 3,
  "commercial": false,
  "customID": "otp-7731"
}
YANIT
{
  "data": { "pkgID": 48213415 },
  "err": null
}

GET ile gönderim

JSON gönderemeyen eski sistemler için tek satırlık adresle SMS gönderimi. Yeni entegrasyonlarda Tekil SMS servisini öneririz.

GET/direct/?cmd=sendsms&kullanici=…&sifre=…&mesaj=…&gsm=…&baslik=…&nlss=…&ahs=…
ParametreAçıklama
cmdHer zaman sendsms.
kullaniciAPI kullanıcı adınız.
sifreAPI şifreniz.
mesajMesaj metni (URL kodlamalı).
gsmAlıcı numarası.
baslikGönderen başlığı.
nlssKodlama: 0 Standart, 1 Türkçe, 2 Unicode.
ahs0 Bilgilendirme (AHS sorgusu yapılmaz), 1 Ticari (AHS sorgusuyla gönderilir).
ÖRNEK
https://api.vois.com.tr/direct/?cmd=sendsms&kullanici=KULLANICI&sifre=SIFRE&mesaj=Merhaba%20d%C3%BCnya&gsm=905321234567&baslik=BASLIK&nlss=1&ahs=0

Yanıt JSON değil, düz metindir: başarılıysa paket numarası, hatalıysa hatanın açıklaması döner.

Bu yöntemde şifre adresin içinde gider ve sunucu loglarında görünebilir. Mümkünse POST servislerini kullanın.

MMS

Görsel içeren mesaj gönderimi.

POST/sms/create
AlanAçıklama
type int zorunluMMS için 4.
sendingType int zorunlu1 (numara listesiyle gönderim).
title string zorunluPaket adı, 5–50 karakter.
subject stringMMS konu başlığı.
content string zorunluMesaj metni.
numbers string[] zorunluAlıcı numaraları.
sender string zorunluGönderen başlığı.
encoding int opsiyonelMMS'te varsayılan 2 (Unicode).
media object zorunluGönderilecek dosya:
  extDosya uzantısı: jpg, png …
  mimeTypeDosya türü: image/jpeg, image/png …
  dataDosyanın Base64 ile kodlanmış içeriği.
validity, sendingDate, commercial, customID, periodicSettings, pushSettings: Ortak gönderim parametreleri
İSTEK
{
  "type": 4,
  "sendingType": 1,
  "title": "Yeni sezon katalog",
  "subject": "Yeni sezon",
  "content": "Yeni sezon ürünlerimiz mağazalarda!",
  "numbers": ["905321234567"],
  "sender": "BASLIK",
  "commercial": true,
  "media": {
    "ext": "jpg",
    "mimeType": "image/jpeg",
    "data": "/9j/4AAQSkZJRgABAQ...(base64)...//2Q=="
  }
}

Yanıt diğer gönderimlerle aynıdır: data.pkgID.

İleri tarihli gönderimi iptal

Henüz gönderim zamanı gelmemiş bir paketi iptal eder. Paket numarası ya da customID ile çalışır; ikisini birlikte göndermeyin.

POST/sms/cancel
AlanAçıklama
id intPaket numarası (pkgID).
customID stringGönderimde verdiğiniz kendi numaranız.
İSTEK
{ "id": 48213390 }
YANIT
{
  "data": { "status": 0 },
  "err": null
}

Paket artık değiştirilebilir durumda değilse (gönderim başladıysa) ERR_SMS_PKG_NOT_CHANGEABLE döner.

Paket raporu

Gönderim paketlerinizi tarih aralığına ve filtrelere göre listeler; her paket için toplam, teslim edilen ve edilemeyen sayıları verir.

POST/sms/list

İstek

AlanAçıklama
startDate stringBaşlangıç, yyyy-MM-dd HH:mm.
finishDate stringBitiş, yyyy-MM-dd HH:mm.
ids int[] opsiyonelBelirli paket numaraları.
customIDs string[] opsiyonelBelirli customID değerleri.
keyword string opsiyonelMesaj içeriğinde arama.
sender string opsiyonelGönderen başlığına göre filtre.
status int opsiyonelPaket durumu filtresi, bkz. Paket durum filtreleri.
pageIndex intSayfa numarası (0'dan başlar).
pageSize intSayfa boyutu, 10–1000.

Yanıt alanları (data.list[])

AlanAçıklama
idPaket numarası.
customIDGönderimde verdiğiniz numara.
typeMesaj tipi (1 SMS, 4 MMS).
uuidPaketin benzersiz kimliği.
statePaket durumu, bkz. Paket durumları.
title / content / sendersPaket adı, mesaj metni ve gönderen başlıkları.
encoding / validityKodlama ve geçerlilik süresi.
statisticstotal toplam mesaj, rCount alıcı sayısı, delivered teslim edilen, undelivered teslim edilemeyen, credit harcanan kredi.
isScheduledPaketin periyodik/zamanlanmış olup olmadığı.
sendingDate / processingDatePaketin sisteme geldiği ve işleme alındığı zaman.
errorPaket hatası; başarılıysa null.
İSTEK
{
  "startDate": "2026-11-01 00:00",
  "finishDate": "2026-11-10 23:59",
  "customIDs": ["randevu-20261110-0042"],
  "pageIndex": 0,
  "pageSize": 50
}
YANIT
{
  "data": {
    "stats": { "totalRecord": 1 },
    "list": [{
      "id": 48213377,
      "customID": "randevu-20261110-0042",
      "type": 1,
      "uuid": "…",
      "state": 6,
      "title": "Randevu hatirlatma",
      "content": "Yarın 10:00 randevunuzu hatırlatırız.",
      "senders": ["BASLIK"],
      "encoding": 1,
      "validity": 1440,
      "statistics": { "total": 1, "credit": 1, "rCount": 1, "delivered": 1, "undelivered": 0 },
      "isScheduled": 0,
      "sendingDate": "2026-11-10T09:12:04",
      "processingDate": "2026-11-10T09:12:05.120000",
      "error": null
    }]
  },
  "err": null
}
Rapor sorgularında günlük bir sınır vardır (ERR_DAILY_REQUEST_LIMIT). Teslim durumunu sık sık sorgulamak yerine rapor bildirimi kullanmanızı öneririz.

Numara bazlı rapor

Bir paketin içindeki her numaranın teslim durumunu verir. Paket numarası ya da customID zorunludur.

POST/sms/list-item

İstek

AlanAçıklama
pkgID intPaket numarası. customID gönderilmiyorsa zorunlu.
customID stringPaketin customID değeri. pkgID gönderilmiyorsa zorunlu.
target string opsiyonelNumara filtresi.
operator int opsiyonelOperatör filtresi, bkz. Operatörler.
state int opsiyonelNumara durumu filtresi, bkz. Numara durumları.
pageIndex / pageSizeSayfalama; pageSize 10–1000.

Yanıt alanları (data.list[])

AlanAçıklama
idKaydın numarası.
targetMesaj gönderilen numara.
stateNumaranın teslim durumu, bkz. Numara durumları.
setStateNumaranın gönderim aşaması, bkz. Gönderim aşamaları.
operatorNumaranın operatörü.
msgKişiye özel gönderimde bu numaraya giden metin; diğerlerinde null.
xidKişiye özel gönderimde verdiğiniz eşleştirme numarası.
sender / creditGönderen başlığı ve harcanan kredi.
errorBu numaraya ait hata; başarılıysa null.
sendingDate / processingDate / deliveryDateSisteme geliş, işleme alınma ve operatöre iletilme zamanları.
İSTEK
{
  "pkgID": 48213402,
  "pageIndex": 0,
  "pageSize": 100
}
YANIT
{
  "data": {
    "stats": { "totalRecord": 2 },
    "list": [{
      "id": "…",
      "target": "905321234567",
      "state": 3,
      "setState": 5,
      "operator": 0,
      "msg": "Sayın Ayşe Hanım, 1.250 TL faturanız oluştu.",
      "xid": "F-1001",
      "sender": "BASLIK",
      "credit": 1,
      "error": null,
      "sendingDate": "2026-11-10T09:20:00",
      "processingDate": "2026-11-10T09:20:01",
      "deliveryDate": "2026-11-10T09:20:04"
    }]
  },
  "err": null
}

Özet istatistik

Bir tarih aralığındaki tüm gönderimlerinizin toplamlarını verir.

POST/sms/summary
İSTEK
{
  "startDate": "2026-11-01 00:00",
  "finishDate": "2026-11-30 23:59"
}
YANIT
{
  "data": {
    "total": 1520,
    "delivered": 1488,
    "undelivered": 20,
    "pending": 12,
    "rCount": 1490,
    "credit": 1734
  },
  "err": null
}
AlanAçıklama
totalToplam mesaj sayısı.
delivered / undelivered / pendingTeslim edilen, edilemeyen ve sonucu bekleyen mesajlar.
rCountToplam alıcı sayısı.
creditHarcanan kredi.

Numara sorgulama

Belirli bir numaraya geçmişte SMS gönderilip gönderilmediğini ve sonucunu verir. Müşteri "mesaj gelmedi" dediğinde kontrol etmek için kullanışlıdır.

POST/sms/inquiry-number
AlanAçıklama
gsm string zorunluÜlke koduyla tam numara, ör. 905321234567.
sender string opsiyonelYalnızca bu başlıkla yapılan gönderimler.
startDate / finishDate opsiyonelyyyy-MM-dd HH:mm. Verilmezse son 1 ay aranır. Aralık en çok 3 ay olabilir.
İSTEK
{
  "gsm": "905321234567",
  "startDate": "2026-11-01 00:00",
  "finishDate": "2026-11-10 23:59"
}
YANIT
{
  "data": {
    "stats": { "totalRecord": 1 },
    "list": [{
      "pkgID": 48213377,
      "pkgType": 0,
      "sender": "BASLIK",
      "msg": null,
      "state": 3,
      "operator": 0,
      "encoding": 1,
      "validity": 1440,
      "sendingDate": "2026-11-10T09:12:04",
      "deliveryDate": "2026-11-10T09:12:07"
    }]
  },
  "err": null
}

state değerleri için Numara durumları tablosuna bakın.

Rapor bildirimi (push)

Gönderimde pushSettings.url verirseniz, teslim durumları değiştikçe rapor bu adrese POST ile JSON olarak gönderilir. Böylece rapor servislerini sürekli sorgulamanız gerekmez.

AlanAçıklama
userIDHesap numaranız.
pkg.idPaket numarası.
pkg.statePaket durumu, bkz. Paket durumları.
pkg.statisticstotal alıcı sayısı, delivered iletilen, undelivered iletilemeyen.
items[].idKaydın numarası.
items[].nrNumara.
items[].statusNumaranın durumu, bkz. Numara durumları.
items[].lastUpdateSon güncellenme zamanı.
ADRESİNİZE GELEN İSTEK
{
  "userID": 1042,
  "pkg": {
    "id": 48213377,
    "state": 6,
    "statistics": { "total": 1, "delivered": 1, "undelivered": 0 }
  },
  "items": [
    { "id": "…", "nr": "905321234567", "status": 3, "lastUpdate": "2026-11-10T09:12:07.000Z" }
  ]
}
Bildirim adresiniz internetten erişilebilir, HTTPS ve 200 dönen bir adres olmalıdır. Aynı paket için birden fazla bildirim gelebilir; kayıtlarınızı pkg.id ve items[].nr ile güncelleyin.

Bakiye

Hesabınızdaki kalan krediyi verir.

GET/user/credit
İSTEK
curl https://api.vois.com.tr/user/credit \
  -u 'KULLANICI:SIFRE'
YANIT
{
  "data": { "credit": 25400 },
  "err": null
}

Gönderen başlıkları

Hesabınıza tanımlı gönderen başlıklarını ve onay durumlarını listeler. Yalnızca onaylı (status: 1) başlıklarla gönderim yapılabilir.

POST/sms/list-sender
AlanAçıklama
keyword opsiyonelBaşlık adında arama.
status opsiyonelDuruma göre filtre, bkz. Başlık durumları.
pageIndex / pageSizeSayfalama; pageSize 10–100.
İSTEK
{ "pageIndex": 0, "pageSize": 10 }
YANIT
{
  "data": {
    "stats": { "totalRecord": 1 },
    "list": [{
      "uuid": "…",
      "title": "BASLIK",
      "status": 1,
      "gateways": ["…"]
    }]
  },
  "err": null
}

Yeni başlık açtırmak için bizimle iletişime geçin.

Ağ geçitleri

Hesabınıza tanımlı ağ geçitlerini listeler. Aynı başlık için birden fazla ağ geçidi varsa, buradaki uuid değerini gönderimde gateway alanına yazarak gönderimin hangi geçitten yapılacağını seçebilirsiniz. Çoğu hesapta gerekmez.

GET/sms/list-gateway
AlanAçıklama
uuidAğ geçidinin kimliği.
smsTypeAğ geçidinin SMS tipi.
operatorOperatör, bkz. Operatörler.
isOTPOTP gönderimine uygun olup olmadığı.
simChangeControlSIM değişikliği kontrolü yapılabilip yapılamayacağı.
sendersBu geçide bağlı gönderen başlıkları.
YANIT
{
  "data": {
    "stats": { "totalRecord": 1 },
    "list": [{
      "uuid": "d50fd82f-c578-4965-b4c4-1124ed5509da",
      "smsType": 0,
      "operator": 0,
      "isOTP": false,
      "simChangeControl": false,
      "senders": ["BASLIK"]
    }]
  },
  "err": null
}

Gelen SMS (MO)

Alıcıların kısa numaranıza gönderdiği mesajları (ör. "RET" yazarak ticari iletiden çıkma istekleri) listeler. Hesabınızda kısa numara tanımlı olmalıdır.

POST/mo/list-request
AlanAçıklama
keywordAnahtar kelime (ör. RET).
startDate / finishDateyyyy-MM-dd HH:mm.
pageIndex / pageSizeSayfalama; pageSize 10–1000.
Yanıt (data.list[])
gsmMesajı gönderen numara.
msgGelen mesaj metni.
keywordEşleşen anahtar kelime.
stateDurum, bkz. MO durumları.
networkGönderenin operatörü.
shortNrMesajın geldiği kısa numara.
processInfo.create.dateMesajın sisteme geldiği zaman.
İSTEK
{
  "keyword": "RET",
  "startDate": "2026-11-01 00:00",
  "finishDate": "2026-11-10 23:59",
  "pageIndex": 0,
  "pageSize": 100
}

MO kısa numarası tanımlı değilse ERR_MO_NOT_FOUND döner.

Karakter ve mesaj boyu

Uzun mesajlar birden fazla SMS olarak gönderilir ve her parça ayrı ücretlendirilir. Bir mesajın kaç SMS sayılacağı kodlamaya göre değişir.

Mesaj boyuStandart (0)Türkçe (1)Unicode (2)
1 SMS0–1550–1500–65
2 SMS156–301151–29366–129
3 SMS302–454294–442130–196
4 SMS455–607443–591197–263
5 SMS608–760592–740264–330
6 SMS761–913741–889331–397
Standart kodlamada Türkçe karakterler (ç, ğ, ı, ö, ş, ü) desteklenmez. Türkçe karakter kullanıyorsanız 1, emoji ya da başka alfabeler kullanıyorsanız 2 seçin. Unicode mesajlar çok daha erken bölünür.

Durum kodları

Paket durumları (state)

KodAnlamı
-4İptal edildi
-3Gönderim başarısız oldu
-2Paket oluşturulamadı
-1Operatör tarafından reddedildi
0Kaydediliyor
1Beklemede
2Kuyruğa alınıyor
3Gönderiliyor
4Gönderildi
5Kısmen raporlandı
6Tamamlandı

Numara durumları (state / status)

KodAnlamı
-2İptal edildi
-1Operatör tarafından reddedildi
0Beklemede
1Gönderiliyor
2Gönderildi (operatöre iletildi)
3Numaraya iletildi
4Numaraya iletilemedi
5Zaman aşımı (geçerlilik süresinde iletilemedi)

Paket durum filtreleri (rapor: status)

KodAnlamı
0Tüm mesajlar
1Kuyrukta
2İşlemde
3İleri tarihli
4Periyodik
5Tamamlanmış
6İptal
7Başarısız

Gönderim aşamaları (setState)

KodAnlamı
0Beklemede
1Gönderiliyor
2Gönderildi
3Raporlanıyor
5Bitti

Başlık durumları (sender status)

KodAnlamı
0Beklemede
1Onaylandı
2Reddedildi
3Yasaklı

MO durumları

KodAnlamı
-2Başarısız
-1Eşleşme yok
0Beklemede
1İşleniyor
2Tamamlandı

Operatörler

KodOperatör
0Turkcell
1Vodafone
2Türk Telekom (Avea)
3NetGSM

Hata kodları

Hatalı isteklerde err.code alanında aşağıdaki kodlardan biri döner.

KodHTTPAnlamı ve yapılacak
ERR_BAD_REQUEST400İstek hatalı ya da eksik. Gövdeyi ve zorunlu alanları kontrol edin.
ERR_INVALID_PARAM417Bir parametre geçersiz; hangisi olduğu message alanında yazar.
ERR_UNAUTHORIZED_REQUEST403Kullanıcı adı veya şifre hatalı, hesapta IP kısıtı var ya da API yetkisi açık değil.
ERR_USER_NOT_AUTHORIZED401Hesabınızın bu işlem için yetkisi yok (ör. OTP yetkisi kapalı).
ERR_INVALID_SMS_SENDER417Gönderen başlığı hatalı ya da onaylı değil.
ERR_EMPTY_SMS_PACKAGE417Pakette gönderilebilecek geçerli numara kalmadı: numaralar hatalı biçimde, kara listede ya da ticari iletide İYS onayı yok.
ERR_INVALID_SMS_SENDING_DATE417Gönderim tarihi geçersiz ya da geçmişte.
ERR_USER_CREDIT_REQUIRED417Yeterli krediniz yok.
ERR_PARENT_USER_CREDIT_REQUIRED417Bağlı olduğunuz ana hesapta yeterli kredi yok. Bizimle iletişime geçin.
ERR_USER_BRAND_CODE_NOT_FOUND417Ticari gönderim için İYS marka kodunuz tanımlı değil.
ERR_USER_IYS_SETTINGS_NOT_FOUND400Hesabınızda İYS tanımları yok.
ERR_SMS_PKG_CUSTOM_ID_DUPLICATION400Bu customID ile daha önce paket oluşturulmuş.
ERR_SMS_PKG_DUPLICATION417Aynı mesaj bu numaralara son 30 dakika içinde zaten gönderildi.
ERR_INVALID_DATE_RANGE400Tarih aralığı geçersiz.
ERR_SMS_PKG_NOT_FOUND400Paket bulunamadı.
ERR_SMS_PKG_NOT_CHANGEABLE400Paket bu aşamada değiştirilemez/iptal edilemez.
ERR_SMS_PKG_CREATING_FAILED417Paket oluşturulamadı. Tekrar deneyin; sürerse bize bildirin.
ERR_INVALID_PRICING_PLAN400Hesabınızın fiyat planı geçersiz. Bizimle iletişime geçin.
ERR_CREDIT_PLAN_NOT_FOUND400Kredi planı bulunamadı. Bizimle iletişime geçin.
ERR_USER_NOT_FOUND417Kullanıcı bulunamadı.
ERR_MO_NOT_FOUND400Hesabınızda MO kısa numarası tanımlı değil.
ERR_DAILY_REQUEST_LIMIT403Günlük rapor sorgulama sınırı aşıldı.
ERR_CONCURRENT_REQUEST_LIMIT400Aynı anda çok fazla istek gönderildi; istekleri sıraya koyun.
ERR_NOT_FOUND404İstek yapılan adres hatalı.
ERR_SYSTEM_MAINTENANCE503Sistem bakımda; bir süre sonra tekrar deneyin.
ERR_INTERNAL_SERVER500Sunucu hatası; tekrar deneyin, sürerse bize bildirin.
ERR_RATE_LIMIT429Saniyedeki istek sınırı aşıldı; kısa bir süre bekleyip tekrar deneyin.
ERR_SERVICE_UNAVAILABLE502SMS servisine geçici olarak ulaşılamıyor; birkaç dakika sonra tekrar deneyin.