Ana içeriğe geç

İletim raporu webhook'u kaydetme

POST 

/webhooks/report

İstek: POST https://ext-api.netgsm.com.tr/sms/v3/webhooks/report
Canlı ortam: https://ext-api.netgsm.com.tr/sms/v3

Hesabın iletim raporlarının gönderileceği adres. Hesap başına bir tane; var olanın üzerine kayıt 409 ile reddedilir; önce mevcut kaydı silmeniz gerekir. Etkinleştirme gerekmez; alt kullanıcı için SMS menüsü gerekir.

Request​

Bodyrequired

    urlstringrequired

    Host'u yalnızca genel (public) adreslere çözümlenen mutlak bir http ya da https URL - loopback, özel, link-local ya da başka bir şekilde iç adres olamaz. Port verilirse 1 ile 65535 arasındadır.

    Possible values: <= 1024 characters

    headersstring

    Webhook adresinizin Netgsm'den beklediği başlık; örneğin adresiniz bir kimlik doğrulama bilgisi istiyorsa "Authorization: Bearer ". Netgsm bu başlığı adresinize yaptığı her istekte aynen gönderir; böylece isteğin Netgsm'den geldiğini doğrulayabilirsiniz. Tek bir satır, Name: value biçiminde; yalnızca yazdırılabilir ASCII, satır sonu olmadan. Değer virgül (,) ya da iki nokta üst üste (:) içeremez. İsteğe bağlı; boş bırakılırsa ek başlık gönderilmez.

    Possible values: <= 500 characters

Responses​

Kaydedildi.

Schema
    urlstringrequired
    headersstringnullablerequired

    Kayıtta verilen başlık satırı; verilmediyse null.

    registeredAtdate-timerequired

    Webhook'un kaydedildiği zaman.

Callbacks​

POST 

{$request.body#/url}

İletim raporları, kayıtlı adrese periyodik olarak ve toplu hâlde POST ile gönderilir. Bir istek, hesabın bekleyen raporlarından bir grubu numbers dizisinde taşır. Bekleyen rapor sayısı fazlaysa raporlar aynı periyotta birden fazla isteğe bölünebilir.

  • Kayıt sırasında headers verildiyse o başlık her istekte gönderilir; isteğin Netgsm'den geldiğini bu başlıkla doğrulayabilirsiniz.
  • Bağlantının 60 saniye içinde kurulması, yanıtın 10 dakika içinde gelmesi gerekir; aksi halde istek başarısız sayılır.
  • Herhangi bir 2xx yanıt, raporların teslim alındığı anlamına gelir. Yanıt gövdesi okunmaz.
  • Zaman aşımı, 2xx dışındaki bir yanıt ya da bağlantı hatası durumunda o istekteki raporlar yeniden gönderilmez. Bu raporlara GET /report ile ulaşılabilir.
  • Zamanlar saat dilimi bilgisi olmadan, Türkiye saatiyle (UTC+3) yyyy-MM-dd HH:mm:ss biçimindedir.
  • status, operator ve errorCode sayısal kodlardır; GET /report ise aynı bilgiyi ad olarak döndürür. Karşılıkları alan açıklamalarındaki tablolardadır.

Örnek gövde:

{
"numbers": [
{
"jobid": "179309912974612345062827",
"number": "5xxxxxxxxx",
"status": 1,
"operator": 10,
"msglen": 1,
"deliveredDate": "2026-10-27 14:06:12",
"errorCode": 0,
"referansID": "8f3a1c"
},
{
"jobid": "179309912974612345062827",
"number": "5xxxxxxxxx",
"status": 2,
"operator": 30,
"msglen": 1,
"deliveredDate": "2026-10-27 14:09:40",
"errorCode": 115,
"referansID": null
}
]
}

Bodyrequired

    numbers object[]required

    Bu istekle gönderilen raporlar; her alıcı için bir satır.

  • Array [
  • jobidstring

    Send uç noktasının döndürdüğü görev numarası (jobId).

    numberstring

    Alıcı numarası.

    statusinteger

    İletim sonucu, sayısal kod. Bekleyen (henüz sonuçlanmamış) gönderimler webhook ile bildirilmez; yalnızca sonuçlananlar gelir.

    KodAnlamıGET /report karşılığı
    1İletildiDELIVERED
    2Ulaştırılamadı; nedeni errorCode alanındadırNOT_DELIVERED
    3Hatalı numaraNOT_DELIVERED, INVALID_NUMBER
    4Operatöre gönderilemediNOT_DELIVERED, NOT_SENT_TO_OPERATOR
    8Operatör kabul etmediNOT_DELIVERED, OPERATOR_REJECTED
    11Operatör hatasıNOT_DELIVERED, OPERATOR_ERROR
    12Gönderim hatasıNOT_DELIVERED, SEND_ERROR
    13MükerrerNOT_DELIVERED, DUPLICATE
    14Kredisi yetmediNOT_DELIVERED, INSUFFICIENT_CREDIT
    15Kara listeNOT_DELIVERED, BLACKLISTED
    16İYS retNOT_DELIVERED, IYS_REJECTED
    17İYS hataNOT_DELIVERED, IYS_ERROR
    18Mesaj oluşturulamadıNOT_DELIVERED, MESSAGE_NOT_CREATED
    19Hatalı numara formatıNOT_DELIVERED, INVALID_NUMBER_FORMAT
    20NTS'den onay alınamadıNOT_DELIVERED, NTS_NOT_APPROVED
    22Yurt dışı gönderim izni yokNOT_DELIVERED, NO_INTERNATIONAL_PERMISSION
    operatorinteger

    Alıcının operatörü, sayısal kod.

    KodOperatörGET /report karşılığı
    10VodafoneVODAFONE
    20Türk TelekomTURK_TELEKOM
    30TurkcellTURKCELL
    40, 41, 43NetgsmNETGSM
    45AkontelAKONTEL
    210–218Yurt dışıINTERNATIONAL

    Operatörü belirlenemeyen kayıtlarda (örneğin numara hatalıysa) 0 gelir.

    msgleninteger

    Mesajın kapladığı SMS parça sayısı.

    deliveredDatestring

    İletildiği zaman, yyyy-MM-dd HH:mm:ss biçiminde, Türkiye saatiyle. Tarih bilgisi yoksa boş string ("").

    errorCodeintegernullable

    İletilmeme nedeni. Yalnızca status 2 olduğunda anlamlıdır; diğer durumlarda nedeni status belirtir ve bu alanın değeri dikkate alınmamalıdır.

    KodAnlamıGET /report failReason
    111Zaman aşımıTIMEOUT
    112Mobil cihaz SMS gönderimine kapalıSMS_DISABLED_ON_DEVICE
    113Mobil cihaz desteklemiyorDEVICE_NOT_SUPPORTED
    114Yönlendirme başarısızROUTING_FAILED
    115Hedef operatörden zaman aşımıOPERATOR_TIMEOUT
    116Tanımlanamayan aboneUNKNOWN_SUBSCRIBER
    117Yasadışı aboneILLEGAL_SUBSCRIBER
    119Sistemsel hataSYSTEM_ERROR

    status 2 iken 0 ya da null gelirse neden bilinmiyordur (GET /report'ta UNKNOWN).

    referansIDstringnullable

    Gönderimde verilen referans (GET /report yanıtındaki referenceId). Verilmediyse null.

  • ]

Callbacks Responses​

Raporlar teslim alındı. Herhangi bir 2xx yanıt aynı anlama gelir.

Örnek istek​

curl -X POST 'https://ext-api.netgsm.com.tr/sms/v3/webhooks/report' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com/report",
"headers": "Authorization: Bearer token123"
}'