Public APILead Oluşturma

Lead Oluşturma — POST /leads

Reklamdan, formdan ya da bir CRM’den düşen lead’i tek istekle kaydeder ve aramayı doğru zamana planlar. POST /calls’tan farkı tam olarak budur: o uç anında arar, bu uç gecikmeyi ve yasal arama penceresini hesaba katar.

⚠️

Gece 03:00’te düşen bir reklam lead’ini POST /calls ile bağlarsan müşteri 03:00’te aranır. Bu uç aynı lead’i, hem senin çalışma pencerene hem aranan kişinin bulunduğu ülkenin yasal arama penceresine uyan ilk ana erteler.

Lead’i 5 dakika içinde aramak, 30 dakika sonra aramaya göre kat kat yüksek dönüşüm verir — ama bu, gece yarısı aramak anlamına gelmez. delay_minutes ile “olabildiğince hızlı” der, gerisini Purvisor halleder.

İstek

POST /api/v1/leads
X-API-Key: pk_live_...
Content-Type: application/json

Gövde alanları

Gövde hem snake_case hem camelCase kabul eder.

AlanZorunluAçıklama
phoneEvetLead’in numarası. En az 10 hane (rakam dışı karakterler yok sayılır).
first_name / nameHayırAd. name verilirse ilk kelime ad, kalanı soyad olur. Hiçbiri yoksa "Lead" yazılır.
last_nameHayırSoyad.
email, company, titleHayırKişi kartına yazılır.
sourceHayırKaynak etiketi ("meta_lead_ads", "google_ads", "website"…). Varsayılan "zapier".
auto_callHayırtrue ise arama planlanır. Yalnızca gerçek boolean true sayılır — "true" metni veya 1 arama başlatmaz.
delay_minutesHayırAramadan önceki gecikme. Varsayılan 5, üst sınır 1 hafta; negatif değer 0’a çekilir.
assistant_idHayırHangi asistan arasın. Verilmezse hesabın ilk aktif asistanı kullanılır. Bu hesaba ait olmalı.
campaign_idHayırLead’i mevcut bir kampanyaya bağlar. Bu hesaba ait olmalı.
cadence_idHayırLead’i belirli bir kadansa kaydeder. Verilmezse hesabın varsayılan aktif kadansı kullanılır.
form_dataHayırHam form verisi. Kişinin lead verisi alanında saklanır; asistanın bağlamında ve arama sonrası analizde işine yarar.

assistant_id, campaign_id ve cadence_id senin hesabına ait olmak zorundadır; başka bir hesabın kimliği gönderilirse 404 döner.

Arama ne zaman yapılır?

Planlanan an, iki pencerenin kesişimidir:

  1. Senin çalışma pencelen — Ayarlar → Arama Penceresi & Bölge (saat aralığı, çalışma günleri, saat dilimi).
  2. Aranan kişinin yasal penceresi — numaradan çıkarılan ülkeye göre (TR mesai kuralları, ABD TCPA, Birleşik Krallık PECR).

delay_minutes sonrası bu iki pencere de açıksa arama o ana planlanır. Değilse ikisinin birden açık olduğu ilk ana ertelenir ve yanıtta deferred_to_call_window: true döner.

Mükerrer önleme

Aynı hesapta aynı numaraya ait aktif bir kişi varsa yeni kayıt açılmaz — mevcut kişi güncellenir ve yanıt existing: true içerir. Ayrıca o kişiden son 10 dakika içinde bir lead alınmışsa yeni arama planlanmaz; aynı formun iki kez gönderilmesi çift arama üretmez.

Yanıt

Yeni kayıt → 201, mevcut kayıt güncellendi → 200.

{
  "contact_id": "1042",
  "existing": false,
  "phone": "+905321234567",
  "name": "Ahmet Yılmaz",
  "source": "meta_lead_ads",
  "auto_call": true,
  "auto_call_scheduled_at": "2026-07-08T06:05:00.000Z",
  "deferred_to_call_window": false,
  "delay_minutes": 5,
  "cadence_id": "12"
}
AlanAnlamı
contact_idOluşan/güncellenen kişinin id’si.
existingtrue ise bu numara zaten kayıtlıydı.
auto_call_scheduled_atAramanın planlandığı an (ISO-8601, UTC). Yalnızca arama planlandıysa döner.
deferred_to_call_windowtrue ise arama, pencere kapalı olduğu için ileri atıldı.
cadence_idKişi bir kadansa kaydedildiyse o kadansın id’si.

Hata kodları

HTTPerrorNe zaman
400invalid_jsonGövde geçerli JSON değil.
400phone is required / Invalid phone — must contain at least 10 digitsNumara eksik veya çok kısa.
401invalid_api_keyAnahtar yok/yanlış.
403premium_requiredPublic API Pro ve üzeri planlarda açıktır.
403(kota mesajı) + code: "quota_exceeded"Planının kişi kotası dolu. Yalnızca yeni kişi açılırken bakılır — mevcut numara güncelleniyorsa (existing: true) kota tüketilmez. Yanıt quota: { key, limit, current, plan } taşır.
404assistant_id / campaign_id / cadence_id not found or not owned by this accountKimlik yok veya başka bir hesaba ait.
429Too many requestsAnahtar başına dakikada 60 istek aşıldı — Retry-After kadar bekle.
500internal_errorBeklenmeyen sunucu hatası — geri-çekilmeli tekrar dene.

İki farklı 403 vardır: plan kapısı (error: "premium_required") ve kota aşımı (code: "quota_exceeded"). Ayrımı code alanından yap. Hata metinlerine göre dallanma yapma — bu dizeler uyarı yapılmadan değişir.

Hangi ucu kullanmalıyım?

Senaryo
Lead düştü, mesai/yasal pencereye uyarak aransınPOST /leads
Şimdi, koşulsuz ara (kullanıcı butona bastı)POST /calls
Sadece kişi kaydet, arama yokPOST /contacts