İYS İzin Kaydı API (iys-register)
iys-register endpoint'i, Türkiye'de ticari elektronik ileti gönderimi için yasal zorunluluk olan İYS (İleti Yönetim Sistemi) izin kayıtlarını oluşturur. Web formu, ıslak imzalı sözleşme, çağrı merkezi onayı vb. yollarla aldığınız izinleri (veya retleri) bu endpoint ile iletiMerkezi üzerinden ulusal İYS sistemine işleyebilirsiniz. Tek istekte en fazla 5000 alıcı kaydedilir.
Önemli ön koşul: Panel'de API erişimi
Bu endpoint'i çağırmadan önce panelinizde API kullanımına izin ver seçeneğinin aktif olması gerekir.
Ayar yeri:
panel.iletimerkezi.com→ Ayarlar → Güvenlik → Erişim İzinleriAktif değilse istek
401 — Üyelik bilgileri hatalıile döner. Detay: authentication.md
Marka kodu ön koşulu. Hesabınızda iletiMerkezi tarafından sağlanmış aktif bir İYS marka kodu (
brandCode) bulunmalıdır. Marka kodu, panel üzerinden marka kayıt başvurusu sonrası tanımlanır. Aktif İYS aboneliği yoksa istek403 — Aktif abonelik bulunamadıile döner.
Endpoint
| Alan | Değer | |---|---| | Method | POST | | URL | https://api.iletimerkezi.com/v1/consent/create/json | | Content-Type | application/json | | Auth | API Key + Hash (request.authentication) |
Request
Şema
request
├─ authentication
│ ├─ key (string, zorunlu)
│ └─ hash (string, zorunlu)
└─ consent
├─ brandCode (string|integer, zorunlu) — hesabınızdaki aktif İYS marka kodu
└─ list[] (array, zorunlu) — 1-5000 izin kaydı
├─ recipient (string, zorunlu) — cep numarası veya e-posta
├─ recipientType (string, zorunlu) — "BIREYSEL" veya "TACIR"
├─ type (string, zorunlu) — "MESAJ", "EPOSTA" veya "ARAMA"
├─ status (string, zorunlu) — "ONAY" veya "RET"
├─ source (string, zorunlu) — izin alınma kaynağı (aşağıdaki tabloya bakın)
└─ consentDate (string, zorunlu) — izin alınma anı, format "YYYY-MM-DD HH:MM:SS"
consentDate3 günden eski olamaz. İYS regülasyonu izin kayıtlarının fiilen alındıkları zamanlamadan en geç 3 gün içinde sisteme işlenmesini zorunlu kılar; daha eski tarih422 — İstekte gönderilen bazı değerler doğrulanamadıile reddedilir.
source değerleri
İzin alınma kaynağına göre aşağıdaki sabit değerlerden biri kullanılır:
| Kod | Anlam | |---|---| | HS_FIZIKSEL_ORTAM | Fiziksel ortam (matbu form, broşür ile alınan onay) | | HS_ISLAK_IMZA | Islak imzalı sözleşme | | HS_ETKINLIK | Etkinlik / fuar / stand | | HS_EORTAM | Elektronik ortam (genel) | | HS_WEB | Web formu, web sitesi onay kutusu | | HS_MOBIL | Mobil uygulama | | HS_MESAJ | SMS ile alınan onay | | HS_EPOSTA | E-posta ile alınan onay | | HS_CAGRI_MERKEZI | Çağrı merkezi sesli onay | | HS_SOSYAL_MEDYA | Sosyal medya | | HS_ATM | ATM ekranı üzerinden onay | | HS_KARAR | İdari karar / yargı kararı kapsamında verilen izin |
Tam örnek
Tek alıcı için ONAY kaydı:
{
"request": {
"authentication": {
"key": "API_KEY",
"hash": "API_HASH"
},
"consent": {
"brandCode": 1234,
"list": [
{
"recipient": "+905XXXXXXXXX",
"recipientType": "BIREYSEL",
"type": "MESAJ",
"status": "ONAY",
"source": "HS_WEB",
"consentDate": "2026-04-30 09:15:42"
}
]
}
}
}Birden çok alıcı tek istekte:
"list": [
{ "recipient": "+905XXXXXXXX1", "recipientType": "BIREYSEL", "type": "MESAJ", "status": "ONAY", "source": "HS_WEB", "consentDate": "2026-04-30 09:15:42" },
{ "recipient": "+905XXXXXXXX2", "recipientType": "BIREYSEL", "type": "MESAJ", "status": "ONAY", "source": "HS_WEB", "consentDate": "2026-04-30 09:16:08" },
{ "recipient": "+905XXXXXXXX3", "recipientType": "BIREYSEL", "type": "MESAJ", "status": "RET", "source": "HS_MESAJ","consentDate": "2026-04-30 09:18:27" }
]Response
Başarılı (200)
{
"response": {
"status": {
"code": 200,
"message": "İşlem başarılı"
}
}
}İstekteki tüm izin kayıtları başarıyla iletiMerkezi'ne işlenmiş ve ulusal İYS sistemine senkronize sıraya alınmıştır. Yanıt minimal — kayıt başına ID veya ayrıştırılmış sonuç döndürülmez; batch atomic kabul edilir, herhangi bir kayıt validasyondan düşerse istek 422 ile düşer ve hiçbiri kaydedilmez.
Hata yanıtları
401 — Üyelik bilgileri hatalı
API Anahtar/Hash doğrulanamadı veya panel toggle kapalı. Detay: authentication.md.
403 — Aktif abonelik bulunamadı
Hesabınızda aktif bir İYS aboneliği yok. Marka kodu (brandCode) tanımlı değil veya İYS hizmeti pasif. Çözüm: panel üzerinden İYS marka kayıt başvurusunu başlatın.
405 — Kota aşıldı
Aboneliğinizin aylık kayıt kotası dolmuş. Panel üzerinden plan yükseltmesi yapın veya iletiMerkezi destek ekibiyle iletişime geçin.
422 — İstekte gönderilen bazı değerler doğrulanamadı
Yaygın nedenler:
consentDate3 günden eski.recipientformatı geçersiz (cep numarası veya e-posta deseninde değil).recipientType,type,statusveyasourceenum değerlerinin dışında bir değer gönderildi.brandCodehesabınıza ait değil ya da hiç tanımlı değil.
Hata batch atomic — listedeki bir kayıt doğrulanamazsa tüm istek düşer.
475 — Alıcı sayısı 5000 kişiyi geçemez
consent.list dizisinde 5000'den fazla eleman var. Listeyi 5000'lik dilimlere bölüp ardışık çağrılarla gönderin.
Diğer hata kodları
400, 404 için tablo: error-codes.md.
Kod örnekleri
cURL
curl -X POST 'https://api.iletimerkezi.com/v1/consent/create/json' \
-H 'Content-Type: application/json' \
-d '{
"request": {
"authentication": {
"key": "'"$ILETIMERKEZI_API_KEY"'",
"hash": "'"$ILETIMERKEZI_API_HASH"'"
},
"consent": {
"brandCode": 1234,
"list": [
{
"recipient": "+905XXXXXXXXX",
"recipientType": "BIREYSEL",
"type": "MESAJ",
"status": "ONAY",
"source": "HS_WEB",
"consentDate": "2026-04-30 09:15:42"
}
]
}
}
}'Common Pitfalls
- Batch atomic — 1 kayıt patlarsa hepsi patlar.
consent.listiçindeki tek bir kayıt 422'ye düşerse listedeki diğer kayıtlar kaydedilmez. Toplu yüklemelerde önce küçük bir dilimle (10-50 kayıt) test edin, sonra tam batch'e geçin. Hatayı izole etmek için listede kim olduğunu kendi tarafınızda log'layın. consentDateUTC değil, Türkiye yerel saati. FormatYYYY-MM-DD HH:MM:SS, saat dilimi Türkiye (UTC+3). UTC zaman damgalarını gönderirseniz yan etkisiz görünür ama gerçek izin anıyla 3 saatlik kayma oluşur — denetimde sorun.- 3 gün kuralı geriye işler. İzin akışınızda kayıt için API çağrısı geciktirmeyin. Web formundan onay alındığı an
consentDateo anki sunucu saatinizdir; kayıt 3 gün içinde gönderilmezse 422 döner ve İYS sistemine işlenmez. sourceenum dışı değer = 422.HS_WEByerinewebyazmak veyaHS_FORMgibi varolmayan bir kod uydurmak istek düşürür. Yukarıdaki tablodaki sabit değerlerin dışına çıkmayın.- RET kaydı pozitif bir aksiyondur. Müşteri çıkış (opt-out) talep ettiğinde kaydı silmek değil,
status: "RET"ile bir izin kaydı eklemek gerekir; İYS denetiminde kullanıcının ret beyanı bu kayıt üzerinden ispatlanır. typeilesend-sms'iniysalanı arasındaki fark.iys-registerİYS'ye kayıt eklemek içindir;send-sms'iniys: "1"+iysListparametresi ise gönderim anında İYS sorgulamasını tetiklemek içindir (bkz. send-sms). İki ayrı işlem;iys-registerile kaydı önceden işlemeksend-sms'in 468/469/470 hatalarına düşmesini engeller.- iletiMerkezi paneli ile API senkron çalışır. Panel üzerinden manuel girilen izin kayıtları da aynı
brandCode'a düşer; API ile çift kayıt yaratmamak için panel ↔ API hangisinin "yazıcı" olduğuna baştan karar verin.
Related
- İYS izin sorgulama (iys-check) — kayıt sonrası durum doğrulama
- SMS gönderme (send-sms) —
iys+iysListticari gönderim parametreleri - Kimlik doğrulama (authentication)
- Hata kodları tablosu
Son güncelleme: 2026-04-30 · English version