Ana içeriğe geç

REST API Referansı

Genel Bakış

LeadHub, harici araçların verilerinizi (lead'ler, pipeline'lar, otomasyonlar, formlar ve daha fazlası) okumasına ve yazmasına olanak tanıyan eksiksiz bir REST API içerir. Zapier ile entegrasyon, özel panolar oluşturma, web sitenizi bağlama veya herhangi bir şeyi otomatikleştirme için kullanın.


Temel URL

Tüm API istekleri şu adrese gönderilir:

https://yourdomain.com/api/v1

yourdomain.com yerine gerçek LeadHub alan adınızı yazın.


Kimlik Doğrulama

Her istek (health check hariç) bir API anahtarı gerektirir.

API anahtarlarını yönetici panelinde Ayarlar → API Anahtarları bölümünden oluşturun. Talimatlar için Ayarlar sayfasına bakın.

Her istekte Authorization başlığında Bearer token olarak API anahtarınızı ekleyin:

Authorization: Bearer lh_your_api_key_here

API anahtarı olmadan veya geçersiz bir anahtarla istek gönderirseniz 401 Unauthorized yanıtı alırsınız.


Hız Sınırlaması

Her API anahtarı varsayılan olarak saatte 1.000 istekle sınırlıdır (anahtar başına yapılandırılabilir). Bu sınırı aşarsanız 429 Too Many Requests yanıtı alırsınız.

Her yanıt, kullanımınızı takip etmenize yardımcı olacak şu başlıkları içerir:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1711580400

X-RateLimit-Reset, sınırınızın sıfırlanacağı Unix zaman damgasıdır.


Sayfalama

Kayıt listesi döndüren uç noktalar sayfalamayı destekler. Şu sorgu parametrelerini ekleyin:

ParametreVarsayılanMaksimum
page1
per_page15100

Örnek: GET /api/v1/leads?page=2&per_page=25


Yanıt Formatı

Başarılı Yanıt

{
"data": { ... },
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 15,
"total": 73,
"from": 1,
"to": 15
},
"links": {
"first": "https://yourdomain.com/api/v1/leads?page=1",
"last": "https://yourdomain.com/api/v1/leads?page=5",
"prev": null,
"next": "https://yourdomain.com/api/v1/leads?page=2",
"self": "https://yourdomain.com/api/v1/leads?page=1"
}
}

Tek kayıt yanıtlarında (show, create, update) data kayıt nesnesini içerir ve meta atlanır.

Hata Yanıtı

{
"status": "error",
"message": "The given data was invalid.",
"code": "VALIDATION_FAILED",
"errors": {
"email": ["The email field must be a valid email address."]
}
}

Yaygın hata kodları:

KodHTTP DurumuAnlam
UNAUTHORIZED401API anahtarı eksik veya geçersiz
FORBIDDEN403API anahtarında gerekli kapsam yok
NOT_FOUND404Kayıt mevcut değil
VALIDATION_FAILED422İstek verisi doğrulamayı geçemedi
RATE_LIMITED429Çok fazla istek
SERVER_ERROR500Beklenmedik sunucu hatası

Sağlık Kontrolü

Kimlik doğrulama gerekmez.

GET /api/v1/health

Yanıt:

{
"status": "ok",
"version": "1.0.0",
"timestamp": "2026-03-28T09:15:00+00:00"
}

Diğer istekleri yapmadan önce LeadHub örneğinizin erişilebilir olup olmadığını kontrol etmek için kullanın.


Lead'ler

Gerekli kapsam: Almak için read:leads, oluşturmak/güncellemek için write:leads, silmek için delete:leads.

Lead'leri Listele

GET /api/v1/leads

Filtreleme sorgu parametreleri:

ParametreAçıklama
sourceKaynağa göre filtrele (örn. facebook, website)
statusDuruma göre filtrele (örn. new, contacted, qualified)
pipeline_idPipeline ID'ye göre filtrele
stage_idPipeline aşaması ID'ye göre filtrele
assigned_user_idAtanan kullanıcı ID'ye göre filtrele
tagEtiket adına göre filtrele
searchAd, e-posta veya telefona göre ara
created_afterISO 8601 tarihi — bu tarihten sonra oluşturulan lead'ler
created_beforeISO 8601 tarihi — bu tarihten önce oluşturulan lead'ler
starredtrue — yalnızca yıldızlı lead'leri göster
sortSıralama alanı: created_at, updated_at, lead_score, first_name, last_name, email
directionasc veya desc (varsayılan: desc)

Lead Al

GET /api/v1/leads/{id}

Lead Oluştur

POST /api/v1/leads

İstek gövdesi (JSON):

{
"first_name": "Sarah",
"last_name": "Johnson",
"email": "[email protected]",
"phone": "+14155551234",
"source": "website",
"status": "new",
"pipeline_id": 1,
"pipeline_stage_id": 2,
"assigned_user_id": 5,
"notes": "Interested in the enterprise plan.",
"custom_fields": {
"budget": "10000"
},
"tags": ["hot-lead", "enterprise"]
}

first_name zorunludur. Diğer tüm alanlar isteğe bağlıdır.

Lead Güncelle

PUT /api/v1/leads/{id}
PATCH /api/v1/leads/{id}

Yalnızca güncellemek istediğiniz alanları gönderin. Oluşturmayla aynı alanlar.

Lead Sil

DELETE /api/v1/leads/{id}

Lead'e Etiket Ekle

POST /api/v1/leads/{id}/tags

Gövde: { "tag": "vip-client" }

Lead'den Etiket Kaldır

DELETE /api/v1/leads/{id}/tags/{tag}

Pipeline'lar

Gerekli kapsam: read:pipelines veya write:pipelines

GET    /api/v1/pipelines
POST /api/v1/pipelines
GET /api/v1/pipelines/{id}
PUT /api/v1/pipelines/{id}
PATCH /api/v1/pipelines/{id}
DELETE /api/v1/pipelines/{id}

Pipeline Aşamaları

GET    /api/v1/pipelines/{pipeline_id}/stages
POST /api/v1/pipelines/{pipeline_id}/stages
GET /api/v1/pipelines/{pipeline_id}/stages/{stage_id}
PUT /api/v1/pipelines/{pipeline_id}/stages/{stage_id}
PATCH /api/v1/pipelines/{pipeline_id}/stages/{stage_id}
DELETE /api/v1/pipelines/{pipeline_id}/stages/{stage_id}

Etiketler (Tags)

Gerekli kapsam: read:tags veya write:tags

GET    /api/v1/tags
POST /api/v1/tags
GET /api/v1/tags/{id}
PUT /api/v1/tags/{id}
PATCH /api/v1/tags/{id}
DELETE /api/v1/tags/{id}

Kullanıcılar (Users)

Gerekli kapsam: read:users, write:users veya delete:users

GET    /api/v1/users
POST /api/v1/users
GET /api/v1/users/{id}
PUT /api/v1/users/{id}
PATCH /api/v1/users/{id}
DELETE /api/v1/users/{id}

Formlar (Forms)

Gerekli kapsam: read:forms, write:forms veya delete:forms

GET    /api/v1/forms
POST /api/v1/forms
GET /api/v1/forms/{id}
PUT /api/v1/forms/{id}
PATCH /api/v1/forms/{id}
DELETE /api/v1/forms/{id}

Form Gönder

POST /api/v1/forms/{id}/submissions

Gövde: form alan değerlerini anahtar-değer çiftleri olarak gönderin.


Otomasyonlar (Automations)

Gerekli kapsam: read:automations, write:automations veya delete:automations

GET    /api/v1/automations
POST /api/v1/automations
GET /api/v1/automations/{id}
PUT /api/v1/automations/{id}
PATCH /api/v1/automations/{id}
DELETE /api/v1/automations/{id}

Entegrasyonlar (Integrations)

Gerekli kapsam: read:integrations veya write:integrations

GET    /api/v1/integrations/types
GET /api/v1/integrations
POST /api/v1/integrations
GET /api/v1/integrations/{id}
PUT /api/v1/integrations/{id}
PATCH /api/v1/integrations/{id}
DELETE /api/v1/integrations/{id}

GET /api/v1/integrations/types mevcut entegrasyon türlerinin listesini döndürür (Facebook, Google Ads, Mailgun, vb.).


Gelen Lead Alımı

Harici kaynaklardan, webhook'lardan veya Zapier ve Make gibi kodsuz araçlardan lead oluşturmak için basitleştirilmiş bir uç nokta.

POST /api/inbound/leads?tenant={workspace-slug}

Authorization: Bearer {api_key} ile kimlik doğrulayın ve çalışma alanı slug'ını sorgu parametresi olarak geçin.

İstek gövdesi:

{
"email": "[email protected]",
"first_name": "Sarah",
"last_name": "Johnson",
"phone": "+14155551234",
"company": "Tech Corp",
"source": "zapier",
"notes": "Came from newsletter signup",
"tags": ["newsletter"],
"custom_fields": {
"utm_campaign": "spring-promo"
}
}

email zorunludur. Diğer tüm alanlar isteğe bağlıdır.

Başarılı yanıt (201):

{
"status": "created",
"lead_id": 1842,
"is_duplicate": false
}

Lead zaten mevcutsa (e-posta veya telefonla eşleşme), is_duplicate true olur ve mevcut lead'in ID'si döndürülür.


Kod Örnekleri

cURL

curl -X GET "https://yourdomain.com/api/v1/leads?status=new&per_page=25" \
-H "Authorization: Bearer lh_your_api_key_here" \
-H "Accept: application/json"
curl -X POST "https://yourdomain.com/api/v1/leads" \
-H "Authorization: Bearer lh_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"first_name":"Sarah","email":"[email protected]","source":"api"}'

PHP

$apiKey = 'lh_your_api_key_here';
$baseUrl = 'https://yourdomain.com/api/v1';

// List leads
$response = file_get_contents($baseUrl . '/leads', false, stream_context_create([
'http' => [
'header' => "Authorization: Bearer {$apiKey}\r\nAccept: application/json\r\n",
],
]));
$leads = json_decode($response, true);

// Create a lead
$ch = curl_init($baseUrl . '/leads');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer {$apiKey}",
"Content-Type: application/json",
"Accept: application/json",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'first_name' => 'Sarah',
'email' => '[email protected]',
'source' => 'api',
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);

JavaScript (fetch)

const apiKey = 'lh_your_api_key_here';
const baseUrl = 'https://yourdomain.com/api/v1';

// List leads
const response = await fetch(`${baseUrl}/leads?status=new`, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Accept': 'application/json',
},
});
const { data, meta } = await response.json();

// Create a lead
const createResponse = await fetch(`${baseUrl}/leads`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
'Accept': 'application/json',
},
body: JSON.stringify({
first_name: 'Sarah',
email: '[email protected]',
source: 'website',
}),
});
const newLead = await createResponse.json();