Ana içeriğe atla
REST API v1, kendi yazılımınızın İletişim verileriyle doğrudan HTTP üzerinden çalışmasını sağlar. Kişiler, firmalar, süreçler, görevler ve notlar için okuma ve yazma; gelen kutusu için okuma, müşteriye mesaj gönderme ve iç not ekleme uçları bulunur. Yapay zekâ istemcinize araç sunan MCP bağlantısı ayrıdır ve /api/mcp adresini kullanır. MCP bağlantısı ve MCP örnekleri için ilgili sayfalara bakın.

Bağlantıyı hazırlayın

1

API anahtarı oluşturun

Ayarlar → API ve MCP → Yeni anahtar yolunu izleyin. Bağlantınızın kullanacağı modüllerde en düşük gerekli yetkiyi seçin. Anahtarın tamamı yalnızca oluşturulduğunda gösterilir. API anahtarı oluşturma
2

Anahtarı güvenli bir yerde saklayın

Anahtarı kaynak koduna, tarayıcıda çalışan koda veya belgelere yazmayın. Aşağıdaki örnekler anahtarı ILETISIM_API_KEY ortam değişkeninden okur.
3

İlk okuma isteğini gönderin

API anahtarı kullanıcı oturumunun yerine geçmez. Panel oturumu tek başına /api/v1 uçlarını açmaz; API anahtarı da panelin oturumla çalışan /api/* uçlarına erişim sağlamaz.

Yetki kapsamları

Her uç, anahtarın modül ve eylem yetkisini denetler. Bir modülün Yazma yetkisi aynı modülün okumasını da kapsar. Müşteriye mesaj (inbox:send) ayrı bir yetkidir; inbox:write müşteriye mesaj göndermeye izin vermez. Anahtar yalnızca oluşturulduğu işletmenin verilerine erişir. Anahtarlar proje bazında sınırlandırılmaz: seçilen kapsamlar işletmenin bütün projelerinde geçerlidir. Anahtarı oluşturan kişinin rolü veya proje kapsamı anahtara devredilmez. Yetkisiz istek 403 ve gerekli kapsamı bildiren bir gövde döndürür:
Yetkileri değiştirmek için yeni anahtar oluşturun, bağlantınızda kullanıp doğruladıktan sonra eskisini iptal edin.

Uç noktaları

Aşağıdaki yolların başına https://api.iletisim.app/api/v1 gelir. :id yerine kaydın UUID değerini yazın. Oluşturma istekleri başarılı olduğunda 201, güncelleme istekleri 200 döner. Tek kayıt, oluşturma ve güncelleme yanıtları kayıt nesnesini doğrudan içerir; ayrıca bir data sarmalayıcısı yoktur. Liste yanıtlarında items dizisi bulunur. DELETE uçları yoktur. Bulunmayan bir uç veya erişilemeyen kayıt 404 not_found döner.

Listeleme ve sayfalama

Listeler imleç temelli (keyset) sayfalama kullanır. Sayfa boyutu varsayılan olarak 50, en çok 200’dür. Örnek yanıt:
nextCursor null olana kadar aynı sort, dir ve süzgeçlerle sonraki sayfayı isteyin:
Kişiler, firmalar, süreçler, görevler ve notlar ilk sayfada süzgece uyan toplam kayıt sayısını total alanında verir. Sonraki sayfalarda total gönderilmez. Sohbet ve mesaj listelerinde total yoktur.

Sıralama ve süzgeçler

Süzgeçlerin önemli varsayılanları:
  • Süreçlerde category=active; açık, işlemde ve bekleyen kayıtlar gelir. Tüm kayıtlar için category=all kullanın. Diğer değerler: open, in_progress, waiting, done, cancelled, closed.
  • Görevlerde status=open; tamamlananlar için completed, tümü için all kullanın. taskStatus değerleri todo, in_progress, done; bucket değerleri overdue, today, upcoming, no_due, completed’dir.
  • Sohbetlerde status=open, audience=customer, assignee=all kullanılır. status ayrıca pending, closed, active veya all; channel ise whatsapp, instagram, messenger, phone veya email olabilir.
  • unread, awaiting, projectPending, fromAd, archived, overdue, dueToday, following ve unlinked sorgu dizgesinde true veya false olarak gönderilir.
  • Süreçlerde birden çok etiket tagIds=id1,id2 biçiminde, en çok 20 UUID ile süzülür.
Örneğin yüksek öncelikli, açık işleri listelemek için:

Kayıt oluşturun ve güncelleyin

İstek gövdeleri JSON’dur ve bilinmeyen alanlar kabul edilmez. PATCH isteklerinde yalnızca değiştirmek istediğiniz alanları gönderin. customFields, records, assigneeIds, projectIds ve fileIds gibi bütün bir koleksiyonu temsil eden alanlar verildiğinde yeni değerin tamamı kullanılır. Aşağıda temel alanlar ve örnekler yer alır. İlişkili UUID değerleri kendi işletmenizdeki kayıtlara ait olmalıdır.

Firma ve kişi

Firma için name zorunludur. İsteğe bağlı alanlar: taxNo, phone, email, website, address, city, notes, ownerId, customFields.
Kişi için name zorunludur. İsteğe bağlı alanlar: accountId, phone, title, notes, contactType, email, customFields. contactType değerleri customer, team, supplier, unknown’dur.

Süreç

Süreç için typeId ve title zorunludur. Türün başlangıç aşaması kullanılır; farklı aşama için stageId gönderin. Sık kullanılan isteğe bağlı alanlar description, priority, assigneeId, assigneeTeamId, dueAt, contactId, accountId, conversationId, customFields’tür. Öncelik değerleri low, normal, high, urgent’tir.
notifyCustomer: true kullanılırsa süreç türündeki bildirim kuralı çalışır ve müşteriye mesaj gönderilebilir. Bu işlem ayrıca inbox:send yetkisi gerektirir. Müşteriye giden metni ve alıcıyı önceden doğrulayın.

Görev

Görev için title zorunludur. İsteğe bağlı alanlar dueAt, dueHasTime, assigneeIds, records, status, statusId, projectIds, primaryProjectId, processId, componentId’dir. Görevi tamamlamak veya yeniden açmak için PATCH gövdesinde completed: true ya da completed: false kullanın.

Not

Notta title isteğe bağlıdır. Düz metin için bodyText, zengin belge için body, kayıt bağlantıları için records, önceden yüklenmiş ekler için fileIds kullanılabilir.
Bağsız notlar yalnızca onları oluşturan API anahtarına görünür; başka bir anahtar aynı işletmede olsa da bu notları okuyamaz.

Gelen kutusunu kullanın

Sohbet listesi ve ayrıntısı inbox:read; mesaj listesi de aynı kapsamı kullanır. Mesajlar varsayılan olarak yeniden eskiye gelir; eskiden yeniye okumak için dir=asc kullanın:
Mesaj nesnesinde direction değeri inbound, outbound veya note; teslim durumunu izleyen status değeri ise received, pending, sent, delivered, read veya failed olabilir. İç notlar direction: "note" ile döner.

Müşteriye mesaj gönderin

Bu işlem gerçek müşteriye mesaj gönderir. İsteği çalıştırmadan önce sohbet kimliğini, metni ve kanalın mesajlaşma koşullarını doğrulayın.
Metin mesajı için inbox:send gerekir:
Başarılı 201 yanıtı mesajın oluşturulduğunu ve gönderim için kabul edildiğini gösterir; nihai teslim durumunu mesajın status alanından izleyin. replyToMessageId ile aynı sohbetteki bir mesajı yanıtlayabilirsiniz. Kanala göre mevcut kurallar uygulanır:
  • WhatsApp serbest metni için 24 saatlik müşteri hizmetleri penceresi açık olmalıdır. Pencere dışında onaylı şablon için kind: "template", templateId ve isteğe bağlı variables kullanın.
  • Instagram ve Messenger’da müşteri yeniden yazana kadar 24 saat dolduktan sonra gönderim yapılamaz.
  • Bağlantısı kesik kanaldan müşteriye mesaj gönderilemez; bu durum 409 channel_disconnected döndürür.
  • E-posta sohbetinde kind: "email" ile body, isteğe bağlı subject, cc, uploadIds ve replyToMessageId kullanılabilir.
  • kind: "media" mevcut bir uploadId kabul eder; ancak v1’de dosya yükleme ucu yoktur. Yeni dosya yükleme ve indirme entegrasyonu bu sürüm kapsamında değildir.
Yanıtlardaki medya adresleri panel oturumu gerektirebilir; API anahtarıyla medya indirme ucu bulunmaz.

İç not ekleyin

İç not inbox:write gerektirir ve müşteriye gönderilmez. Bağlantısı kesik kanalın sohbetine de iç not eklenebilir.
İç notta isteğe bağlı mentions alanıyla en çok 20 kullanıcı kimliği belirtilebilir.

Tekrarlanan POST isteklerini güvene alın

Bütün POST uçları isteğe bağlı Idempotency-Key başlığını kabul eder. Ağ zaman aşımı veya bağlantı kesintisi sonrasında aynı mantıksal işlemi tekrarlarken aynı değeri kullanın:
  • Değer 1–200 karakter olmalı ve her mantıksal işlem için benzersiz olmalıdır.
  • Kayıt, API anahtarı + uç + istek gövdesi + idempotency değeriyle ilişkilendirilir ve 24 saat saklanır.
  • Aynı istek tekrarlandığında yeni kayıt açılmaz; ilk yanıtın durumu ve gövdesi aynen döner. Tekrar yanıtında Idempotency-Replayed: true başlığı bulunur.
  • Aynı idempotency değeri farklı bir uç veya gövdeyle kullanılırsa 409 idempotency_conflict döner.
  • Başarısız doğrulama veya yazma isteği değeri tüketmez; hatayı düzeltip aynı değerle yeniden deneyebilirsiniz.
  • Başlık gönderilmezse her POST bağımsız işlem olarak çalışır.
PATCH istekleri bu makbuz mekanizmasını kullanmaz.

Sınırlar ve önbellek

  • İstek hızı: API anahtarı başına 120 istek / 60 saniye. Aşımda 429 rate_limit, Retry-After: 60 başlığı ve ISO 8601 biçiminde retryAt döner. İstemciniz bu zamana kadar bekleyip sınırlı sayıda yeniden denemelidir.
  • Gövde boyutu: İstek gövdesi en çok 1 MB olabilir; aşımda 413 body_too_large döner.
  • Önbellek: Başarılı ve hatalı bütün v1 yanıtları Cache-Control: no-store taşır.
  • Zaman ve kimlik biçimi: Kayıt kimlikleri UUID, tarih-saat alanları ISO 8601 metnidir.

Hata yanıtları

Hataların temel biçimi:
fieldErrors alanında anahtar, sorunlu alanın yolu; değer ise o alana ait hata metinlerinin dizisidir. Kapsam hatasında ayrıca scope, module, action; hız sınırında retryAt bulunur.

Bu sürümde olmayanlar

  • Kayıt silme ve DELETE uçları.
  • Teklifler, görüşmeler, takvim, formlar, dosyalar, bilgi bankası ve raporlar için v1 uçları.
  • Yeni sohbet başlatma, sohbet durumunu veya atamasını değiştirme.
  • Proje, süreç türü, aşama, kullanıcı ve kanal ayarlarını listeleyen yardımcı uçlar.
  • v1 üzerinden dosya yükleme veya indirme.
  • Kayıt değiştiğinde sizin adresinize bildirim gönderen giden webhook’lar.
MCP’nin mevcut araçları çalışmaya devam eder; REST v1 hız sınırı MCP’yi etkilemez. Son güncelleme: 11 Kasım 2026.