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/jsonGövde alanları
Gövde hem snake_case hem camelCase kabul eder.
| Alan | Zorunlu | Açıklama |
|---|---|---|
phone | Evet | Lead’in numarası. En az 10 hane (rakam dışı karakterler yok sayılır). |
first_name / name | Hayır | Ad. name verilirse ilk kelime ad, kalanı soyad olur. Hiçbiri yoksa "Lead" yazılır. |
last_name | Hayır | Soyad. |
email, company, title | Hayır | Kişi kartına yazılır. |
source | Hayır | Kaynak etiketi ("meta_lead_ads", "google_ads", "website"…). Varsayılan "zapier". |
auto_call | Hayır | true ise arama planlanır. Yalnızca gerçek boolean true sayılır — "true" metni veya 1 arama başlatmaz. |
delay_minutes | Hayır | Aramadan önceki gecikme. Varsayılan 5, üst sınır 1 hafta; negatif değer 0’a çekilir. |
assistant_id | Hayır | Hangi asistan arasın. Verilmezse hesabın ilk aktif asistanı kullanılır. Bu hesaba ait olmalı. |
campaign_id | Hayır | Lead’i mevcut bir kampanyaya bağlar. Bu hesaba ait olmalı. |
cadence_id | Hayır | Lead’i belirli bir kadansa kaydeder. Verilmezse hesabın varsayılan aktif kadansı kullanılır. |
form_data | Hayır | Ham 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:
- Senin çalışma pencelen — Ayarlar → Arama Penceresi & Bölge (saat aralığı, çalışma günleri, saat dilimi).
- 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"
}| Alan | Anlamı |
|---|---|
contact_id | Oluşan/güncellenen kişinin id’si. |
existing | true ise bu numara zaten kayıtlıydı. |
auto_call_scheduled_at | Aramanın planlandığı an (ISO-8601, UTC). Yalnızca arama planlandıysa döner. |
deferred_to_call_window | true ise arama, pencere kapalı olduğu için ileri atıldı. |
cadence_id | Kişi bir kadansa kaydedildiyse o kadansın id’si. |
Hata kodları
| HTTP | error | Ne zaman |
|---|---|---|
400 | invalid_json | Gövde geçerli JSON değil. |
400 | phone is required / Invalid phone — must contain at least 10 digits | Numara eksik veya çok kısa. |
401 | invalid_api_key | Anahtar yok/yanlış. |
403 | premium_required | Public 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. |
404 | assistant_id / campaign_id / cadence_id not found or not owned by this account | Kimlik yok veya başka bir hesaba ait. |
429 | Too many requests | Anahtar başına dakikada 60 istek aşıldı — Retry-After kadar bekle. |
500 | internal_error | Beklenmeyen 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 | Uç |
|---|---|
| Lead düştü, mesai/yasal pencereye uyarak aransın | POST /leads |
| Şimdi, koşulsuz ara (kullanıcı butona bastı) | POST /calls |
| Sadece kişi kaydet, arama yok | POST /contacts |