SMS gönderme
POST/send
İstek: POST https://ext-sandbox.netgsm.com.tr/sms/v3/send
Sandbox: https://ext-sandbox.netgsm.com.tr/sms/v3
Bir ya da daha fazla alıcıya SMS gönderen bir görev oluşturur. Görev iletim için kabul
edildiğinde 202 döner; iletim sonradan yapılır. Her alıcı messages dizisinde ayrı bir kayıttır
ve her kaydın kendi metni olabilir.
Kayıt başına doğrulama. Hatalı kayıtlar toplu gönderimi başarısız kılmaz: geçerli kayıtlar
gönderilir, hatalılar yanıttaki rejectedItems içinde konumları (index) ve nedenleriyle
bildirilir. Kayıtların hepsi hatalıysa görev oluşturulmaz ve 422 NO_DELIVERABLE_MESSAGES
döner; bu yanıt da reddedilen kayıtları aynı biçimde rejectedItems ve
rejectedItemsTruncated alanlarında taşır.
İstek biçimi. Content-Type: application/json; gövde sıkıştırılmamış olmalı ve 500 MB'ı
aşmamalıdır. Bilinmeyen alanlar yok sayılır; null verilen bir alan hiç verilmemiş sayılır.
İstek sınırı. Hesap başına dakikada 50.000 istek (mesaj değil, istek). Süre penceresi ilk
istekle başlar ve sabittir; reddedilen istekler sayılmaz. Aşıldığında 429 Retry-After başlığıyla döner.
Toplu gönderimler için çok sayıda alıcıyı tek istekte göndermenizi öneririz.
Yeniden deneme. İsteklerin tekilleştirilmesi yoktur: aynı istek iki kez gönderilirse iki
görev oluşur. 503 SERVICE_UNAVAILABLE çoğunlukla hiçbir şeyin kuyruğa alınmadığını gösterir. Toplu
gönderimi körlemesine yeniden göndermeden önce GET /report ile kontrol edebilirsiniz. 400, 403, 413 ve 422
yanıtları aynı istekle tekrarlandığında yine aynı sonucu verir.
Sonrası. Yanıttaki jobId ile iletim raporlarını GET /report, gönderim istatistiklerini
GET /stats ile sorgulayabilirsiniz. status SCHEDULED olan bir görev, başlangıç zamanına kadar
POST /cancel ile iptal edebilirsiniz.
Request
- application/json
Bodyrequired
- Array [
- ]
Gönderici başlığı. Hesaba kayıtlı bir başlıkla yazıldığı gibi birebir eşleşmelidir: büyük/küçük harf dahil, kırpma yapılmaz. Alfanümerik bir başlık (örneğin NETGSM) ya da hesabın abone numarası olabilir; abone numarası başında 0 ya da 90 olmadan yazılır (5061234567). Kullanabileceğiniz başlıkları ve her birinin kullanılabilir olup olmadığını GET /senders ile görebilirsiniz. Eşleşmezse istek 422 REJECTED_HEADER ile reddedilir; boş ya da yalnızca boşluktan oluşan bir değer ise 400 ile reddedilir.
Possible values: non-empty and <= 35 characters
NETGSMmessages object[]required
Gönderilecek mesajlar; her alıcı için bir kayıt. En az 1, en fazla 1.000.000 kayıt; fazlası 400 ile reddedilir.
Possible values: >= 1, <= 1000000
Mesaj metni. Boş olamaz (INVALID_MESSAGE). En fazla uzunluk encoding değerine ve göndericinin türüne bağlıdır (MESSAGE_TOO_LONG); bkz. encoding ve /length.
Siparişiniz kargoya verildi.Alıcı numarası, iki biçimden biriyle yazılır; yalnızca rakamlar ve yurt dışı için baştaki tek -
kullanılabilir, boşluk, parantez ya da tire ayracı olmaz:
| Tür | Biçim | Örnek |
|---|---|---|
| Türkiye | 90 ve ardından 10 rakam; + ya da baştaki 0 olmadan | +90 506 123 45 67 için 905061234567 |
| Yurt dışı | - ve ardından ülke koduyla birlikte 9–17 rakam; + ya da 00 olmadan | +49 151 12345678 için -4915112345678 |
Yanlış yazımlar: +905061234567, 05061234567, 5061234567, 0049151…, -+49151….
Bu biçimlere uymayan kayıt INVALID_RECIPIENT ile reddedilir. Numaranın gerçekte var olup
olmadığı ya da hangi operatöre ait olduğu burada denetlenmez; iletim sonucunu GET /report ile
görebilirsiniz. Hesabın yurt dışı gönderim izni yoksa yurt dışı kayıtlar NO_INTERNATIONAL_PERMISSION
ile reddedilir.
Possible values: Value must match regular expression ^(90\d{10}|-\d{9,17})$
905061234567Metnin karakter kodlaması. Tüm kayıtlara uygulanır. Büyük/küçük harfe duyarlıdır; listede
olmayan bir değer (turkish, GSM dahil) istek 400 1 field(s) rejected ile reddedilir;
violations alanı (encoding) ve geçerli değerleri belirtir.
| Değer | Ne zaman | En fazla uzunluk |
|---|---|---|
DEFAULT | Standart GSM alfabesi. Türkçe karakterler Latin karşılıklarına çevrilir (ç→c, ş→s gibi). | 917 |
TURKISH | Türkçe karakterlerin (çğıöşüÇĞİÖŞÜ) korunması gerektiğinde. çğışĞİŞ iki karakter sayılır. | 888 |
UNICODE | Emoji ya da Arapça, Kiril gibi GSM alfabesinde olmayan karakterler için. | 396 |
Alfanümerik bir gönderici başlığında her sınır 5 karakter azdır. Sınırı aşan kayıt
MESSAGE_TOO_LONG ile reddedilir. Bir metnin kaç SMS'e bölüneceğini POST /length ile
hesaplayabilirsiniz.
Possible values: [DEFAULT, TURKISH, UNICODE]
DEFAULTİYS (İleti Yönetim Sistemi) izin filtresi; ticari iletilerde alıcının izni olmayanlar gönderimden çıkarılır. Büyük/küçük harf fark etmez:
| Değer | Anlamı |
|---|---|
NONE | Filtre yok. Yalnızca bilgilendirme (ticari olmayan) iletiler için. |
BRAND | Marka adına alınmış izinlere göre filtrelenir. |
RETAILER | Bayi adına alınmış izinlere göre filtrelenir. |
BRAND_AND_RETAILER | Her ikisine göre filtrelenir. |
Bunların dışındaki her değer NONE sayılır. Hesap ticari gönderim (marka ya da bayi) tipinde
tanımlıysa istekteki değer yok sayılır ve hesabın tipi uygulanır.
BRAND ya da RETAILER uygulanacaksa göndericinin İYS marka kodu olmalıdır; hesap İYS
modunda değilse bu iki değer istek 422 REJECTED_IYS ile reddedilir. BRAND_AND_RETAILER
için bu iki kontrol yapılmaz.
Possible values: [NONE, BRAND, RETAILER, BRAND_AND_RETAILER]
NONEEn erken gönderim zamanı, saat dilimi farkıyla (2026-09-10T09:00:00+03:00). Verilmezse ya da geçmişteyse gönderim hemen başlar. 18 aydan daha ilerisi 400 INVALID_SEND_WINDOW ile reddedilir. Bir dakikadan daha ileri bir başlangıç görevi SCHEDULED yapar. Saat dilimi farkı olmayan ya da okunamayan bir tarih istek 400 ile reddedilir.
En geç gönderim zamanı, saat dilimi farkıyla. Verilmezse ya da geçmişteyse startAt + 21 saat kabul edilir. Aralık, 1000 ve üzeri mesajda 10 dakikadan, daha azında 5 dakikadan kısaysa bu süreye uzatılır; 21 saatten uzunsa 21 saate kısaltılır. Bu düzeltmeler hata döndürmez ve belirlenen aralık yanıtta yer almaz.
İş ortağı (bayi) kodu. Yalnızca kayıt amaçlıdır; gönderimi etkilemez.
Possible values: <= 32 characters
Yanıtta aynen geri döndürülür.
Possible values: <= 50 characters
Gönderimi yapan uygulamanın adı. Yalnızca kayıt amaçlıdır; gönderimi etkilemez.
Possible values: <= 50 characters
Responses
- 202
- 400
- 401
- 403
- 413
- 422
- 429
- 500
- 503
Görev oluşturuldu. İletim sonradan yapılır.
- application/json
- Schema
- Example (auto)
- Example
Schema
- Array [
- ]
Oluşturulan görevin numarası. Rapor, istatistik ve iptal için kullanılır; destek taleplerinde belirtmelisiniz.
| Değer | Anlamı |
|---|---|
QUEUED | Gönderim hemen başladı; görev iptal edilemez. |
SCHEDULED | Görev startAt zamanına kadar bekletiliyor (dakikaya göre bir dakikadan daha ileri bir başlangıç); o zamana kadar POST /cancel ile iptal edebilirsiniz. |
Possible values: [QUEUED, SCHEDULED]
Gönderime alınan kayıt sayısı. accepted + rejected, istekteki kayıt sayısına eşittir.
Reddedilen kayıt sayısı. rejectedItems kısaltılsa da bu sayı tamdır.
rejectedItems object[]required
Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi. Hiçbiri reddedilmediyse boş dizi.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
100'den fazla kayıt reddedildiği için rejectedItems kısaltıldıysa true. accepted ve rejected yine tamdır.
İstekte verilen referenceId; verilmediyse null.
{
"jobId": "string",
"status": "QUEUED",
"accepted": 0,
"rejected": 0,
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true,
"referenceId": "string"
}
{
"jobId": "179309912974612345062827",
"status": "QUEUED",
"accepted": 1,
"rejected": 1,
"rejectedItems": [
{
"index": 1,
"recipient": "+905xxxxxxxxx",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": false,
"referenceId": "order-4711"
}
İstek gövdesi geçersiz. code ve message:
code | message | Ne zaman |
|---|---|---|
INVALID_REQUEST | N field(s) rejected | Alanlar doğrulamadan geçmedi: sender eksik, boş ya da 35 karakterden uzun, messages eksik ya da boş, ya da bir alan uzunluk sınırını aşıyor; ya da bir alanın değeri türüne uymuyor: encoding listede olmayan bir değer (büyük/küçük harf dahil), startAt / stopAt saat dilimi farkı olan bir tarih değil, messages dizi değil gibi. Hangi alanın neden reddedildiği violations içindedir; encoding için geçerli değerler de listelenir. |
INVALID_REQUEST | request body could not be read as json | Gövde geçerli bir JSON değil (sözdizimi hatası). violations null'dır. |
INVALID_REQUEST | N messages exceeds the limit of 1000000 | 1.000.000'dan fazla mesaj. |
INVALID_SEND_WINDOW | — | startAt 18 aydan daha ileride. |
- application/json
- Schema
- Example (auto)
- Example
Schema
- Array [
- ]
- Array [
- ]
Possible values: [INVALID_REQUEST, INVALID_SEND_WINDOW]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "INVALID_REQUEST",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
{
"code": "INVALID_REQUEST",
"message": "1 field(s) rejected",
"requestId": "3b9e2f1a6c4d48e7a05f9d2c1b8e7a64",
"timestamp": "2026-09-07T16:42:31.123+03:00",
"violations": [
{
"field": "sender",
"message": "must not be blank"
}
]
}
UNAUTHENTICATED. Bearer token yok ya da token geçersiz veya süresi dolmuş; message no bearer token ya da invalid or expired token.
- application/json
- Schema
- Example (auto)
Schema
- Array [
- ]
- Array [
- ]
Possible values: [UNAUTHENTICATED]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "UNAUTHENTICATED",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
FORBIDDEN. Hesap bu gönderimi yapamaz; message şunlardan biridir:
message | Anlamı |
|---|---|
account is not activated for this operation | Hesapta SMS gönderimi etkin değil. |
sub user may not use the sms api | Alt kullanıcının SMS API'sini kullanma izni yok. |
account operator is not served for this operation | Hesabın operatörüne bu uç noktadan hizmet verilmiyor. |
- application/json
- Schema
- Example (auto)
Schema
- Array [
- ]
- Array [
- ]
Possible values: [FORBIDDEN]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "FORBIDDEN",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
INVALID_REQUEST. Gövde 500 MB'tan büyük ya da toplu gönderim kuyruğa alınamayacak kadar büyük (message hangisi olduğunu belirtir). Toplu gönderimi birden fazla isteğe bölmelisiniz.
- application/json
- Schema
- Example (auto)
Schema
- Array [
- ]
- Array [
- ]
Possible values: [INVALID_REQUEST]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "INVALID_REQUEST",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
İstek geçerli ama gönderim yapılamaz. code ve message:
code | message | Anlamı ve çözüm |
|---|---|---|
REJECTED_HEADER | NO_HEADERS_REGISTERED | Hesapta kayıtlı başlık yok. |
REJECTED_HEADER | NOT_REGISTERED | sender hesaba kayıtlı değil. Kayıtlı başlıkları GET /senders ile görebilirsiniz. |
REJECTED_HEADER | CASE_MISMATCH | Başlık kayıtlı ama büyük/küçük harfi farklı yazılmış; kayıtlı hâliyle göndermelisiniz. |
REJECTED_HEADER | ROUTING_CODE_MISSING | Alfanümerik başlık için hesapta yönlendirme kodu tanımlı değil. |
REJECTED_HEADER | SUBSCRIBER_NUMBER_RESTRICTED | Hesapta abone numarasından gönderim kısıtlı. |
REJECTED_IYS | sender header has no iys brand code | BRAND ya da RETAILER filtresi uygulanacak ama başlığın İYS marka kodu yok. |
REJECTED_IYS | account is not in iys mode, filtering cannot be applied | Hesap İYS modunda değil; iysFilter BRAND ya da RETAILER olamaz. |
NO_DELIVERABLE_MESSAGES | all N messages rejected | Kayıtların hepsi reddedildi; görev oluşturulmadı. Hangi kaydın neden reddedildiği rejectedItems içindedir (202 yanıtındakiyle aynı biçim ve aynı 100 kayıt sınırı). |
Abone numarasından gönderime onaylı olmayan bir hesapta, tamamı rakamlardan oluşan bir sender
için NOT_REGISTERED ve NO_HEADERS_REGISTERED mesajlarının sonuna
(subscriber number headers were not offered) eklenir.
- application/json
- Schema
- Example (auto)
- rejectedHeader
- noDeliverableMessages
Schema
- Array [
- ]
- Array [
- ]
Possible values: [NO_DELIVERABLE_MESSAGES, REJECTED_HEADER, REJECTED_IYS]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "NO_DELIVERABLE_MESSAGES",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
Gönderici kayıtlı değil
{
"code": "REJECTED_HEADER",
"message": "NOT_REGISTERED",
"requestId": "ca6fa668966d42169e615c6d236191e2",
"timestamp": "2026-09-07T16:42:31.123+03:00",
"violations": null
}
Tüm kayıtlar reddedildi
{
"code": "NO_DELIVERABLE_MESSAGES",
"message": "all 1 messages rejected",
"requestId": "5d1f0c2a7b3e4f6a9c8d7e6f5a4b3c2d",
"timestamp": "2026-09-07T16:42:31.123+03:00",
"violations": null,
"rejectedItems": [
{
"index": 0,
"recipient": "-4915112345678",
"reason": "NO_INTERNATIONAL_PERMISSION"
}
],
"rejectedItemsTruncated": false
}
RATE_LIMITED. message şunlardan biridir:
send rate limit exceeded: hesap başına dakikada 50.000 istek aşıldı.Retry-Afterkadar bekleyip yeniden denemelisiniz.sending is suspended for this account: hesabın gönderimi askıya alınmış.Retry-Afteryoktur; beklemek işe yaramaz, destek ekibiyle iletişime geçmelisiniz.
Response Headers
Yeniden denemeden önce beklenecek süre (saniye). Askıya alınmış hesapta bulunmaz.
- application/json
- Schema
- Example (auto)
Schema
- Array [
- ]
- Array [
- ]
Possible values: [RATE_LIMITED]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "RATE_LIMITED",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
INTERNAL_ERROR, message internal error. Beklenmeyen hata; bildirirken requestId değerini paylaşmanız gerekir.
- application/json
- Schema
- Example (auto)
Schema
- Array [
- ]
- Array [
- ]
Possible values: [INTERNAL_ERROR]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "INTERNAL_ERROR",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
SERVICE_UNAVAILABLE. Servis geçici olarak kullanılamıyor. Görev çoğunlukla kuyruğa alınmamıştır. Toplu gönderimi körlemesine yeniden göndermeden önce GET /report ile kontrol edebilirsiniz.
- application/json
- Schema
- Example (auto)
Schema
- Array [
- ]
- Array [
- ]
Possible values: [SERVICE_UNAVAILABLE]
Okunabilir ayrıntı. UNAUTHENTICATED için no bearer token ya da invalid or expired token. REJECTED_HEADER için ret adıdır; yalnızca rakamlardan oluşan bir göndericide (subscriber number headers were not offered) ekini taşıyabilir. RATE_LIMITED için sınırı belirtir; FORBIDDEN ve REJECTED_IYS için sabit bir cümledir. SERVICE_UNAVAILABLE ve INTERNAL_ERROR genel bir cümle taşır; bildirirken requestId değerini paylaşmanız gerekir.
İsteğe özgü kimlik, 32 onaltılık karakter. Bir sorun bildirirken bu değeri paylaşmanız, isteğin kayıtlarda bulunmasını sağlar.
violations object[]nullablerequired
Yalnızca gövde doğrulamasından gelen INVALID_REQUEST için dolu, aksi halde null.
rejectedItems object[]
Yalnızca NO_DELIVERABLE_MESSAGES yanıtında bulunur; diğer hatalarda alan hiç yer almaz. Reddedilen kayıtlar, index sırasıyla ilk 100 tanesi; 202 yanıtındaki rejectedItems ile aynıdır.
Possible values: <= 100
Kaydın istekteki messages dizisindeki sırası, sıfırdan başlar.
Kayıttaki alıcı. Kayıt null ise ya da alıcısı yoksa null.
| Değer | Ne zaman |
|---|---|
INVALID_RECIPIENT | Numara eksik ya da biçimi yanlış; bkz. recipient. |
INVALID_MESSAGE | Metin eksik ya da boş. |
MESSAGE_TOO_LONG | Metin, encoding ve gönderici türüne göre sınırı aşıyor; bkz. encoding. |
MALFORMED_ENTRY | Kayıt null. |
DUPLICATE_RECIPIENT | Aynı alıcı istekte daha sonra yeniden geçiyor. Yalnızca son geçen kayıt gönderilir, öncekiler bu nedenle reddedilir; son kayıt başka bir nedenle reddedilse bile. Numaralar yazıldığı gibi karşılaştırılır. Mükerrer gönderime izin verilen hesaplarda uygulanmaz. |
NO_INTERNATIONAL_PERMISSION | Numara yurt dışı (- ile başlıyor) ve hesabın yurt dışı gönderim izni yok. İzin için destek ekibiyle iletişime geçmelisiniz. Yalnızca başka bir hatası olmayan kayıtlarda bildirilir. |
Bir kayıt birden fazla nedenle hatalıysa tek neden bildirilir; öncelik: DUPLICATE_RECIPIENT,
MALFORMED_ENTRY, MESSAGE_TOO_LONG, INVALID_RECIPIENT, INVALID_MESSAGE,
NO_INTERNATIONAL_PERMISSION.
Possible values: [INVALID_RECIPIENT, INVALID_MESSAGE, MESSAGE_TOO_LONG, MALFORMED_ENTRY, DUPLICATE_RECIPIENT, NO_INTERNATIONAL_PERMISSION]
Yalnızca rejectedItems ile birlikte bulunur. 100'den fazla kayıt reddedildiğinde true.
{
"code": "SERVICE_UNAVAILABLE",
"message": "string",
"requestId": "string",
"timestamp": "2024-07-29T15:51:28.071Z",
"violations": [
{
"field": "string",
"message": "string"
}
],
"rejectedItems": [
{
"index": 0,
"recipient": "string",
"reason": "INVALID_RECIPIENT"
}
],
"rejectedItemsTruncated": true
}
Örnek istek
curl -X POST 'https://ext-sandbox.netgsm.com.tr/sms/v3/send' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"sender": "NETGSM",
"messages": [
{
"text": "Merhaba",
"recipient": "905xxxxxxxxx"
}
],
"referenceId": "order-4711"
}'