Geliştiriciler

API uç noktaları

Kişi ekleme ve bulma, kampanyalar ve görüşme sonuçları için istek ve cevap alanları.

Bu sayfada
  1. Kişi ekleme veya güncelleme
  2. Kişi bulma
  3. Kampanyalar
  4. Görüşmeler

Tüm adresler https://panel.etemsilci.com/api/v1 altındadır ve Authorization: Bearer <anahtar> başlığı gerektirir.

Yöntem Adres Ne yapar?
POST /contacts Kişi ekler veya günceller; campaign_id ile kampanyaya koyar
GET /contacts?phone=… Telefonla kişi bulur
GET /contacts/{id} Kişi bilgisi
GET /campaigns Kampanyaları listeler
POST /campaigns/{id}/contacts Mevcut kişileri kampanyaya ekler
GET /calls Biten görüşmeler
GET /calls/{id} Tek görüşme

Kişi ekleme veya güncelleme

POST /contacts kişiyi telefona göre bulur; yoksa oluşturur (201), varsa yalnızca gönderdiğiniz alanları günceller (200).

curl -X POST https://panel.etemsilci.com/api/v1/contacts \
  -H "Authorization: Bearer et_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "05321234567",
    "first_name": "Ayşe",
    "last_name": "Yılmaz",
    "about": "Web sitemizdeki teklif formunu doldurdu.",
    "campaign_id": 12
  }'
Alan Kural
phone Zorunlu. 0532…, +90532… ya da 532… biçiminde olabilir. Yurt dışı numaralar + veya 00 ile.
first_name, last_name En fazla 120 karakter.
company En fazla 255 karakter.
email Geçerli e-posta.
customer_type individual (Bireysel, varsayılan) veya merchant (Tacir / esnaf).
iys_status unchecked (varsayılan), allowed, denied veya not_found.
consent_source İzni nereden aldığınız, en fazla 120 karakter.
about Kişi hakkında bilgi; asistan görüşmede kullanır. En fazla 2000 karakter.
custom_fields Nesne, en fazla 30 alan; değerler metin veya sayı (en fazla 500 karakter). Var olan alanlarla birleştirilir.
campaign_id Verilirse kişi bu kampanyaya eklenir.

Cevap: {"data": {kişi}, "created": true|false, "campaign": {"campaign_id", "status", "next_attempt_at", "excluded_reason"} | null}.

campaign_id verdiğinizde kişi kampanyaya eklenir ve kampanya aktifse, arama saatleri içindeyse genellikle bir dakika içinde aranır. Bireysel kişiler yalnızca İYS onayı varsa aranır; onay bilgisini iys_status ve consent_source ile gönderebilirsiniz. Aranmayacaklar listesindeki kişi kampanyaya excluded durumuyla eklenir.

Kişi alanları: id, phone, first_name, last_name, company, email, customer_type, iys_status, do_not_call, about, custom_fields, created_at.

Kişi bulma

GET /contacts?phone=05321234567 → {"data": [kişi]} ya da bulunamazsa {"data": []}.

Kampanyalar

GET /campaigns → {"data": [{"id", "name", "status", "goal"}]}. status: draft, active, paused, completed. goal: meeting, qualify, inform, callback.

POST /campaigns/{id}/contacts gövdesinde contact_ids (kişi kimlikleri) ve/veya phones (telefonlar) dizisi gönderin (her biri en fazla 1000). Yalnızca kayıtlı kişiler eklenir. Cevap: {"added": n, "matched": m}.

Görüşmeler

GET /calls sonuçlanmış görüşmeleri, en yeni önce döner. Sorgu parametreleri:

  • since: bu zamandan sonra sonuçlananlar (ör. 2026-10-01T00:00:00Z).
  • campaign_id, outcome (ör. interested)
  • limit: 1–100, varsayılan 25.

Sayfalama yoktur; düzenli çekim için son aldığınız görüşmenin finalized_at değerini bir sonraki istekte since olarak kullanın.

curl "https://panel.etemsilci.com/api/v1/calls?since=2026-10-01T00:00:00Z&limit=50" \
  -H "Authorization: Bearer et_live_…"

GET /calls/{id} tek bir görüşmeyi döner (kimlik, harf ve rakamlardan oluşan bir metindir).

Görüşme alanları: id, campaign {id, name}, contact {id, phone, name}, status, outcome, outcome_label, direction (outbound / inbound), is_test, answered_at, ended_at, duration_seconds, summary, notes, interest_score, next_action, callback_at, finalized_at, created_at.

outcome değerleri ve Türkçe karşılıkları için Görüşme sonuçları ne anlama gelir? makalesine bakın: no_answer (Açmadı), busy (Meşgul), wrong_number (Yanlış numara), failed (Teknik hata), voicemail (Telesekreter), completed (Görüşme yapıldı), interested (İlgileniyor), callback_requested (Tekrar aranmak istiyor), follow_up_planned (Planlama yapıldı), meeting_scheduled (Toplantı ayarlandı), not_interested (İlgilenmiyor), do_not_call (Aranmak istemiyor).