Her istekte
Authorization: Bearer <access_token> ve X-Tenant: <tenant_id> başlıkları gerekir. Başlık yoksa 400 TENANT_HEADER_REQUIRED döner. Ayrıntı: Klinikler ve X-Tenant.Endpoint özeti
Taban adreshttps://app.flextell.ai/api/v1. Okuma uç noktaları leads:read, yazma uç noktaları leads:write scope’u ister. Dönüştürme ayrıca customers:write ister. Scope’lar için Scope’lar sayfasına bakın.
ViewAllLeads:Lead iznine sahip olmayan kullanıcı yalnızca kendisine atanmış lead’leri görür. Lead’i oluşturmak görünürlük kazandırmaz. Başkasına atanmış bir lead’in /leads/{id} ile başlayan uç noktaları 403 LEAD_NOT_ASSIGNED döner. Silinmiş, başka klinike ait veya bulunmayan lead için 404 RESOURCE_NOT_FOUND döner.Nesne modeli
Tek lead ve liste yanıtları aynı alanları taşır. Tarih-saat alanları klinik saat dilimiyle ofsetli döner (2026-10-12T14:30:00+03:00).
Her lead’in arka planda bir kişi kaydı (
customer_id) vardır. Lead hastaya dönüşene kadar bu kayıt hasta listelerinde görünmez ve /customers uç noktaları onu 404 ile reddeder. Aynı telefon numarasına sahip bir kişi kaydı varsa yeni lead onu kullanır, ikinci kayıt açmaz.Listeleme ve filtreler
GET /leads yalnızca görebildiğiniz lead’leri döner. Silinmiş lead’ler listelenmez. Yanıt {"data": [...], "links": {...}, "meta": {...}} biçimindedir. Sayfalama (per_page 1–100, varsayılan 15; page) için Sayfalama, genel filtre ve sıralama kuralları için Filtreleme ve sıralama sayfalarına bakın.
Atanmamış lead’leri süzen bir filtre yoktur.
Lead sayısını aşama bazında görmek için
GET /leads/pipeline-summary kullanın. Yanıt pipeline (id, name) ile her aşama için stage, count ve expected_value değerlerini verir. Aktif pipeline yoksa pipeline null, stages boş döner. GET /leads/stats aktif, yeni, dönüşen lead sayılarını ve potansiyel değeri verir.
Oluşturma
POST /leads hiçbir alanı zorunlu tutmaz. Boş gövdeyle de lead açılır, ancak gerçek kullanımda en az ad ve telefon gönderin.
201 ve {"success": true, "data": {...}} döner. Sahip belirleme şöyle çalışır:
assigned_user_idgöndermezseniz veAssign:Leadizniniz yoksa (satış temsilcisi) amaView:LeadileReceiveLeads:Leadizinleriniz varsa lead size atanır.- Yöneticinin sahipsiz bıraktığı lead’ler, kliniğin otomatik atama moduna göre dağıtılır. Mod Manuel (otomatik atama yok) ise lead atanmadan kalır. Bu davranış kliniğinizin ayarlarına göre değişir.
- Uygun temsilci yoksa ya da herkes aktif lead sınırındaysa lead atanmadan kalır ve
Assign:Leadiznine sahip kullanıcılara bildirim gider. Atama hatası lead oluşturmayı engellemez.
Aşama değiştirme
Tüm aşama değişiklikleri aynı kuralları izler:- Hedef aşama aktif pipeline’a ait olmalı.
- Dönüşmüş lead’in aşaması değişmez (
LEAD_ALREADY_CONVERTED). - Kayıp aşamasına geçişte, aşama Kayıp Sebebi Zorunlu ise
lost_reasongerekir. Varsayılan kayıp aşaması bunu ister. EksikseLEAD_LOST_REASON_REQUIREDdöner veerrors.lost_reasonalanı dolar. - Kayıp olmayan herhangi bir aşamaya geçmek
lost_reason,lost_atvelost_by_user_iddeğerlerini temizler. Kayıp lead’i yeniden açmanın yolu budur. - Kazanıldı aşamasına girişte
won_atdamgalanır, çıkışta temizlenir.
Tek lead
Üç yol vardır:PUT /leads/{id}gövdesinepipeline_stage_idekleyin. Kayıp aşaması içinlost_reasonda gönderin.POST /leads/{id}/wonlead’i aktif pipeline’ın kazanıldı aşamasına alır. Gövde gerekmez. Aktif pipeline’da kazanıldı aşaması yoksaLEAD_NO_WON_STAGEdöner. Dönüşmüş lead için çağrı bir şeyi değiştirmez ve200döner.POST /leads/{id}/lostlead’i kayıp aşamasına alır ve gövdedelost_reasonister. Kayıp aşaması yoksaLEAD_NO_LOST_STAGEdöner.
Toplu aşama değiştirme
POST /leads/bulk-stage gövdesi lead_ids[], pipeline_stage_id ve gerekirse lost_reason alanlarını taşır.
- Seçimde görebildiğiniz dönüşmüş bir lead varsa (
LEAD_ALREADY_CONVERTED) ya da hedef aşama sebep isteyiplost_reasonyoksa (LEAD_LOST_REASON_REQUIRED) isteğin tamamı reddedilir. Seçimde verisi imha edilmiş hastaya ait lead varsa istek409 CUSTOMER_ERASEDile reddedilir. - Görmediğiniz veya güncelleme izniniz olmayan lead’ler sessizce atlanır.
- En fazla 200 kimlikte işlem hemen yapılır:
{"queued": false, "moved_count": 5}. - 200’den fazla kimlikte iş kuyruğa alınır:
{"queued": true, "lead_count": 250}. İş bitince işlemi yapan kullanıcıya uygulama içi bildirim gider.
POST /leads/move-stage-group bir aşamadaki tüm lead’leri başka aşamaya taşır. Gövde source_pipeline_stage_id ve target_pipeline_stage_id (ikisi de aktif pipeline’da ve birbirinden farklı) ile gerekirse lost_reason içerir. İş her zaman kuyruğa alınır ve {"queued": true} döner. Kaynak aşamada görebildiğiniz dönüşmüş bir lead varsa istek LEAD_ALREADY_CONVERTED ile reddedilir. Görmediğiniz dönüşmüş lead’ler kaynak aşamada kalır.
Atama ve toplu atama
Atanabilir kullanıcı,ReceiveLeads:Lead iznine sahip bir klinik üyesidir; super_admin rolü hariçtir. Aday listesi için GET /leads/assignable-users kullanın (search, per_page, page). Yalnızca aktif kullanıcılar gelir. email alanı yalnızca Assign:Lead iznine sahip çağıranlara döner.
Tek lead atama
POST /leads/{id}/assign gövdesi:
Yanıt
data içinde lead ve cap_exceeded döner. Yeni sahip AutoAssignLeads:Lead iznine sahipse ve aktif lead sayısı sınırına ulaşmışsa cap_exceeded true olur. Atama yine de yapılır; sınır yalnızca otomatik atamayı engeller. Dönüşmüş lead atanamaz (LEAD_ALREADY_CONVERTED).
Toplu atama
POST /leads/bulk-assign gövdesi lead_ids[], assignment_type (specific veya auto) ve task_action alanlarını taşır.
specific:assigned_user_idzorunludur ve kullanıcıView:Leadiznine sahip aktif bir klinik üyesi olmalı. Aksi haldeLEAD_ASSIGNEE_INVALIDdöner. Dönüşmüş lead’ler, güncelleyemediğiniz lead’ler ve zaten bu kullanıcıda olanlar atlanır.auto: her lead, en az yüklü uygun temsilciye gider. Klinik modu Manuel (otomatik atama yok) ise dağıtım Rastgele moduyla aynı şekilde yapılır. Uygun temsilcisi olmayan lead’ler atlanır.- En fazla 200 kimlikte yanıt
{"queued": false, "assigned_count": 8, "cap_exceeded_count": 1}(specific) ya da{"queued": false, "assigned_count": 8, "skipped_count": 2}(auto) olur. - 200’den fazla kimlikte iş kuyruğa alınır:
{"queued": true, "lead_count": 250}. Bitince bildirim gelir. - Seçimde verisi imha edilmiş hastaya ait lead varsa istek
409 CUSTOMER_ERASEDile reddedilir.
Size 5 görev atandı) iletilir.
Dönüştürme
POST /leads/{id}/convert lead’i hastaya çevirir. Lead’in kazanıldı aşamasında olması gerekir; önce /won çağırın. Aksi halde 422 LEAD_NOT_CONVERTIBLE döner. İki scope birden gerekir: leads:write ve customers:write. Convert:Lead izni hasta oluşturmayı da kapsar; ayrıca Create:Customer aranmaz.
Gövde tek isteğe bağlı alan taşır: existing_customer_id. Her API lead’inin kişi kaydı olduğu için bu alan yalnızca kişi kaydı olmayan (içe aktarılmış ya da eski) lead’lerde işe yarar.
data içinde şunları döner:
Dönüşümün etkileri:
- Lead
converted_atveconverted_by_user_idalanlarını alır, aşaması kazanıldı olur ve kayıp bilgileri temizlenir. - Lead’in notları ve dosyaları hastaya kopyalanır. Görevler kopyalanmaz; hastanın görevleri arasında lead üzerinden görünür.
- İşlem tekrarlanabilir. Zaten dönüşmüş lead için aynı hasta
matched_existingile döner. - Dönüşümü geri alan bir uç nokta yoktur.
- Satış temsilcisi rolündeki bir kullanıcı,
existing_customer_idile başka bir temsilcinin lead aşamasındaki kişi kaydını seçemez (403 LEAD_NOT_ASSIGNED).
Silme
DELETE /leads/{id} lead’i, notlarını, görevlerini ve dosyalarını siler. Lead dönüşmemişse arka plandaki kişi kaydı da silinir. Dönüşmüş lead’de hasta korunur ve lead görevleri hastaya geçer. Silmeden önce GET /leads/{id}/deletion-relations ile etkilenecek kayıtları görebilirsiniz. Kalıcı silme uç noktası yoktur. Yaşam döngüsü için Silme yaşam döngüsü sayfasına bakın.
POST /leads/bulk-delete gövdesinde 1–100 benzersiz lead_ids[] alır, her lead’i tek tek işler ve kişi kayıtlarını silmez. Yanıt success_count, failed_count ve results[] döner. Her sonuç lead_id, success ile başarısızsa error_code ve message taşır.
Hata kodları
Hata yanıtı{"success": false, "error_code": "...", "message": "..."} biçimindedir. Genel hata yapısı için Hata kodları sayfasına bakın.
VALIDATION_FAILED yanıtlarında bazı mesajlar dilden bağımsız olarak İngilizce gelir. Örnekler: You are not allowed to assign leads. ve The selected user cannot be assigned leads.. Kodu ve errors alan adlarını esas alın, metni değil.