REST API v1.0

API Dokümantasyonu

YapayZekaChatbot REST API ile chatbot'unuzu programatik olarak kontrol edin. Sohbet, müşteri, randevu ve analitik verilerine tam erişim.

Hızlı Yanıt
Ortalama <100ms yanıt süresi
Güvenli
API Key + HTTPS şifreleme
7/24 Erişim
%99.9 uptime garantisi
Global CDN
Dünya genelinde düşük latency

Kimlik Doğrulama

API Key ve Tenant ID ile güvenli erişim

Gerekli Header'lar

x-tenant-idTenant kimliğiniz (Dashboard'dan alın)
AuthorizationBearer YOUR_API_KEY formatında
Content-Typeapplication/json (POST/PATCH için)

Güvenlik Notları

  • API Key'inizi asla client-side kodda kullanmayın
  • Tüm istekler HTTPS üzerinden yapılmalıdır
  • API Key'i environment variable olarak saklayın
  • Şüpheli aktivitede key'i yenileyin
JavaScript
// API Key ile kimlik doğrulama
const headers = {
  'Content-Type': 'application/json',
  'x-tenant-id': 'YOUR_TENANT_ID',
  'Authorization': 'Bearer YOUR_API_KEY'
};
Base URL:
https://api.yapayzekachatbot.comTüm endpoint'ler bu URL üzerinden erişilir

API Endpoint'leri

Tüm endpoint'ler RESTful standartlarına uygun tasarlanmıştır. JSON formatında veri alışverişi yapılır.

Sohbet API

(7 endpoint)
POST/api/chat/messageChatbot'a mesaj gönder (streaming)
GET/api/chat/history/:sessionIdSohbet geçmişini getir
GET/api/chat/conversationsTüm sohbetleri listele
GET/api/chat/conversations/:idSohbet detayını getir
POST/api/chat/conversations/:id/closeSohbeti kapat
GET/api/chat/configBot yapılandırmasını getir
GET/api/chat/statsSohbet istatistiklerini getir

Müşteri API

(8 endpoint)
GET/api/customersMüşteri listesi
GET/api/customers/:idMüşteri detayı ve aktivite geçmişi
POST/api/customersYeni müşteri oluştur
PATCH/api/customers/:idMüşteri bilgilerini güncelle
DELETE/api/customers/:idMüşteri sil
GET/api/customers/:id/notesMüşteri notlarını getir
POST/api/customers/:id/notesMüşteriye not ekle
POST/api/customers/:id/tagsMüşteriye etiket ekle

Randevu API

(6 endpoint)
GET/api/appointmentsRandevu listesi
GET/api/appointments/:idRandevu detayı
POST/api/appointmentsYeni randevu oluştur
PATCH/api/appointments/:idRandevu güncelle
POST/api/appointments/:id/cancelRandevu iptal et
GET/api/appointments/available-slotsMüsait saatleri getir

Hizmet/Ürün API

(5 endpoint)
GET/api/offeringsHizmet/ürün listesi
GET/api/offerings/:idHizmet/ürün detayı
POST/api/offeringsYeni hizmet/ürün ekle
PATCH/api/offerings/:idHizmet/ürün güncelle
DELETE/api/offerings/:idHizmet/ürün sil

Tenant API

(7 endpoint)
GET/api/tenant/configTenant yapılandırması
PATCH/api/tenant/configYapılandırmayı güncelle
GET/api/tenant/bot-configBot ayarları
PATCH/api/tenant/bot-configBot ayarlarını güncelle
GET/api/tenant/widget-configWidget ayarları
PATCH/api/tenant/widget-configWidget ayarlarını güncelle
GET/api/tenant/setup-progressKurulum ilerleme durumu

Webhook Events

(7 endpoint)
EVENTconversation.startedYeni sohbet başladığında
EVENTconversation.endedSohbet kapandığında
EVENTmessage.receivedYeni mesaj geldiğinde
EVENTappointment.createdRandevu oluşturulduğunda
EVENTappointment.cancelledRandevu iptal edildiğinde
EVENTcustomer.createdYeni müşteri kaydedildiğinde
EVENTlead.capturedLead bilgisi toplandığında

Kod Örnekleri

Hızlı başlangıç için hazır kod örnekleri

Mesaj Gönderme (Streaming)
// Chatbot'a mesaj gönderme (Streaming)
const response = await fetch('https://api.yapayzekachatbot.com/api/chat/message', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-tenant-id': 'YOUR_TENANT_ID'
  },
  body: JSON.stringify({
    tenant_id: 'YOUR_TENANT_ID',
    session_id: 'unique-session-id',
    message: 'Merhaba, randevu almak istiyorum'
  })
});

// Server-Sent Events (SSE) ile streaming yanıt
const reader = response.body.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  
  const chunk = decoder.decode(value);
  const data = JSON.parse(chunk.replace('data: ', ''));
  
  if (data.chunk) {
    console.log('Yanıt:', data.chunk);
  }
  if (data.done) {
    console.log('Tamamlandı');
  }
}
Müşteri Listesi
// Müşteri listesi alma
const response = await fetch('https://api.yapayzekachatbot.com/api/customers', {
  method: 'GET',
  headers: {
    'x-tenant-id': 'YOUR_TENANT_ID',
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const { customers, total } = await response.json();
console.log(`Toplam ${total} müşteri bulundu`);
Randevu Oluşturma
// Randevu oluşturma
const response = await fetch('https://api.yapayzekachatbot.com/api/appointments', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-tenant-id': 'YOUR_TENANT_ID',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    customer_id: 'customer-uuid',
    offering_id: 'service-uuid',
    scheduled_date: '2025-01-15',
    scheduled_time: '14:00',
    notes: 'Online görüşme tercih ediliyor'
  })
});

const { appointment } = await response.json();
console.log('Randevu oluşturuldu:', appointment.id);
Webhook Handler
// Webhook endpoint örneği (Express.js)
app.post('/webhook/yapayzekachatbot', (req, res) => {
  const { event, data, timestamp } = req.body;
  
  switch (event) {
    case 'conversation.started':
      console.log('Yeni sohbet:', data.session_id);
      // CRM'e bildirim gönder
      break;
      
    case 'appointment.created':
      console.log('Yeni randevu:', data.appointment);
      // Takvime ekle, SMS gönder
      break;
      
    case 'lead.captured':
      console.log('Yeni lead:', data.customer);
      // Satış ekibine bildir
      break;
  }
  
  res.status(200).json({ received: true });
});

HTTP Durum Kodları

200
OK
İstek başarılı
201
Created
Kaynak oluşturuldu
400
Bad Request
Geçersiz istek parametreleri
401
Unauthorized
Kimlik doğrulama gerekli
403
Forbidden
Erişim yetkisi yok
404
Not Found
Kaynak bulunamadı
429
Too Many Requests
Rate limit aşıldı
500
Server Error
Sunucu hatası

Rate Limit

Ücretsiz
60
istek / dakika
Pro
300
istek / dakika
Enterprise
Sınırsız
istek /

Not: Rate limit aşıldığında 429 hatası döner.Retry-Afterheader'ı ile bekleme süresini kontrol edin.

SDK & Kütüphaneler

Popüler programlama dilleri için resmi SDK'lar yakında!

JavaScript/TypeScript (Yakında)
Python (Yakında)
PHP (Yakında)
Go (Yakında)
Ruby (Yakında)
Java (Yakında)

Sıkça Sorulan Sorular

API Key nasıl alınır?

Dashboard > Ayarlar > API bölümünden API Key oluşturabilirsiniz. Her tenant için ayrı API Key gereklidir.

Rate limit nedir?

Ücretsiz planda dakikada 60 istek, Pro planda 300 istek, Enterprise planda sınırsız istek hakkınız vardır.

Webhook'lar nasıl çalışır?

Dashboard'dan webhook URL'nizi tanımlayın. Seçtiğiniz eventler gerçekleştiğinde bu URL'ye POST isteği gönderilir.

Streaming response nedir?

Chat API, Server-Sent Events (SSE) kullanarak yanıtı parça parça gönderir. Bu sayede kullanıcı yanıtı beklemeden görmeye başlar.

API hangi dilleri destekler?

API dil bağımsızdır. HTTP istekleri yapabilen her programlama dili ile kullanabilirsiniz: JavaScript, Python, PHP, Go, Java, C# vb.

Sandbox/test ortamı var mı?

Evet, her hesapta test modu bulunur. Test modunda gerçek veriler etkilenmez ve API istekleri ücretsizdir.

API ile Entegrasyona Başlayın

Ücretsiz hesap oluşturun ve API Key'inizi alın. Dakikalar içinde entegrasyonunuzu tamamlayın.