Widget Chat API
Hazır widget.js yerine kendi arayüzünüzü (mobil uygulama, özel UI) kurmak isterseniz, widget'ın kullandığı HTTP API'yi doğrudan çağırabilirsiniz.
Base URL: https://semagent.ai
Çoğu senaryo için tek satırlık embed kodu yeterlidir — bu sayfa özel entegrasyonlar içindir.
Kimlik doğrulama
Tüm istekler X-Tenant-Id header'ı ister — değeri tenant slug'ınız veya tenant ID'nizdir (panel → Widget → Kurulum). Bu API tarayıcıdan çağrılmak üzere tasarlanmıştır; gizli anahtar içermez ve yalnız widget kapsamındaki uçlara erişir.
POST /api/chat/widget
Bir müşteri mesajı gönderir, asistan cevabını döndürür. İlk çağrıda conversation_id göndermeyin — yanıtta üretilir; sonraki mesajlarda aynı değeri geri gönderin.
curl -X POST https://semagent.ai/api/chat/widget \ -H "Content-Type: application/json" \ -H "X-Tenant-Id: sirket-slug" \ -d '{ "message": "Kargom ne zaman gelir?", "session_id": "ziyaretci-123", "conversation_id": null, "type": "rag" }'
const res = await fetch("https://semagent.ai/api/chat/widget", { method: "POST", headers: { "Content-Type": "application/json", "X-Tenant-Id": "sirket-slug", }, body: JSON.stringify({ message: "Kargom ne zaman gelir?", session_id: "ziyaretci-123", conversation_id: null, type: "rag", }), }); const data = await res.json();
import httpx r = httpx.post( "https://semagent.ai/api/chat/widget", headers={"X-Tenant-Id": "sirket-slug"}, json={ "message": "Kargom ne zaman gelir?", "session_id": "ziyaretci-123", "type": "rag", }, ) data = r.json()
İstek gövdesi
| Alan | Tip | Açıklama |
|---|---|---|
message | string · zorunlu | Müşteri mesajı. |
session_id | string · zorunlu | Ziyaretçi oturum kimliği (sizin ürettiğiniz sabit bir değer). |
conversation_id | string · opsiyonel | Önceki yanıttan gelen konuşma kimliği; boşsa yeni konuşma açılır. |
type | "rag" | "ecommerce" · ops. | Boş bırakılırsa tenant'ın varsayılan widget modu kullanılır. |
customer_name / _email / _phone | string · ops. | Pre-chat form verileri (eskalasyonda insan desteğe iletilir). |
Yanıt 200 OK
{
"response": "Siparişler 1-3 iş gününde teslim edilir.",
"conversation_id": "c7a1…",
"widget_type": "rag",
"rag_active": true,
"ecommerce_active": false
}GET /api/chat/welcome
Tenant'ın karşılama mesajını döndürür — widget açılışında gösterilir. Yalnız X-Tenant-Id header'ı gerekir.
GET /api/chat/widget/messages/{conversation_id}
Bir konuşmanın mesaj geçmişini döndürür (sayfa yenilendiğinde sohbeti geri yüklemek için).
GET /api/chat/widget-settings
Widget davranış ayarlarını döndürür: pre-chat formu açık mı (widget_prechat_enabled), hangi alanlar isteniyor (widget_prechat_fields), istemci hız limiti (widget_rate_limit).
POST /api/chat/widget/csat
Konuşma sonunda memnuniyet puanı gönderir:
{ "conversation_id": "c7a1…", "score": 5, "feedback": "Çok yardımcı oldu" }Hata kodları
| Kod | Anlamı | Ne yapmalı |
|---|---|---|
404 | Tenant bulunamadı | X-Tenant-Id değerini panelden doğrulayın. |
403 | Asistan aktif değil | Panelden widget'ı aktifleştirin. |
429 | Hız limiti | İstemci başına limit aşıldı; kısa bekleyip yeniden deneyin. |
200 + limit mesajı | Aylık plan limiti doldu | Widget hata yerine zarif bir yönlendirme metni döndürür; planı yükseltin. |
Uç noktalar genişledikçe bu sayfa güncellenir. Eksik gördüğünüz bir alan için bize yazın.
SemAgent