Enter tuşuna basın.
Verilerinizi alın.
REST API /api/v1, 53 kapsam, 239 uç nokta, 11 webhook olayı ve widget için bir JS API. Sohbetler, kişiler, yapay zeka, bilgi tabanı, biletler ve faturalandırma; kontrol paneli ne yapıyorsa kodunuz da onu yapabilir.
# Enter'a veya sağdaki işarete basın $ curl -H "Authorization: Bearer sb_••••" \ https://smartbtn.me/api/v1/chats?limit=1
Hızlı başlangıç
Sıfırdan ilk cevaba üç adım. Her istek bir widget'a bağlanır ve bir taşıyıcı jetonla doğrulanır.
- Bir jeton düzenleyinKontrol Paneli → API belirteçleri: bir ad, isteğe bağlı bir süre sonu ve ihtiyacınız olan kapsamlar. Bir jeton tam olarak bir widget'a aittir. Düz metin belirteci bir kez gösterilir; Smartbtn yalnızca tek yönlü bir hash saklar, dolayısıyla kayıp bir token kurtarılamaz; yalnızca iptal edilir ve yeniden verilir.
- Widget API'sini açınWidget ayarlarında «Widget API'sine izin ver (JS ve REST)» seçeneğini açın. Bir jeton yayınlamak sizin için bu anahtarı çevirmez.
- İlk isteği gönderBelirteç yalnızca
Yetkilendirmebaşlığına gider; asla URL'ye girmez.
# widget'ın sohbetlerini listele curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \ https://smartbtn.me/api/v1/chats
// 200 OK · imleç sayfalandırması { "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ], "next_cursor": "eyJpZCI6NDgyMTB9" // null — son sayfada }
https://smartbtn.me/api/v1, tüm proje verileri için birincil API uç noktasıdır. İstekleri her zaman HTTPS üzerinden gönderin ve yönlendirmelerde belirteci asla iletmeyin.application/problem+json gövdesiyle 401 veya 403 alıyorsunuz - bkz. Hatalar.Kimlik doğrulama
Kimin kimi aradığına bağlı olarak üç yol. Erişim varsayılan olarak reddedilir: kapsam yok - çağrı yok.
Her istek Yetkilendirmeyi taşır: Taşıyıcı . Sunucuda belirteç tek bir widget'a ve onun kapsamlarına çözümlenir.
Giden istekler kiracıya özel bir sır ile imzalanır: X‑Smartbtn‑Signature. Tarafınızın buna ihtiyacı varsa ekstra bir taşıyıcı kimlik bilgisi eklenebilir.
POST /v1/ai/replies kendi imzalı çerçevesini kullanır, AI operatörünüze ve widget'ınıza sabitlenir ve dayanıklı bir causation_id ile anahtarlanır.
İnsanların unuttuğu anahtar
Widget ayarlarında «Widget API'sine izin ver (JS ve REST)» seçeneği hem REST API'yi hem de widget JS API'sini açar. Bir jetonun verilmesi bunu etkinleştirmez. Mevcut bir anahtarın kapsamları, kontrol panelinde (API belirteçleri → anahtar → Kapsamları düzenle) yeniden yayınlamaya gerek kalmadan düzenlenebilir; entegrasyonlar çalışmaya devam eder.
Ön ayarlar
| Ön ayar | Kapsamlar | Ne zaman |
|---|---|---|
| Yapay zeka kurulumu 9 | widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:read | AI uygulamanız widget'ı yapılandırır: asistan, bilgi tabanı, metinler. Kapsam seçiminin tamamını değiştirir. |
| Salt okunur (örnek seti) | chats:read · messages:read · contacts:read · stats:read | Kontrol panelleri, BI, dışa aktarmalar. |
| Yardım masası köprüsü (örnek seti) | chats:read · messages:read · messages:write · webhooks:write · support:read | Diyalogları ve biletleri CRM'nize yansıtın. |
ai:credentials:write'ı yalnızca sahibi, sağlayıcı anahtarı kurulumuna izin verdiğinde verin. Yapay zeka kurulumu için hesap, faturalandırma ve iş ortağı haklarına gerek yoktur. Anahtar bir kez gösterilir; kurulum tamamlandığında iptal edin.Kapsamlar
53 rota kapsamı artı bir koşullu ve bir ayrılmış. Bir istek yalnızca belirtecin rota kapsamını (veya listelenen bir alternatifi) içermesi durumunda başarılı olur.
| Kapsam | Hibeler |
|---|---|
| chats · 2 | |
| chats:read | Sohbetleri ve meta verilerini okuyun |
| chats:write | Bir sohbeti kapatın, derecelendirme isteyin, aktarın, hak talebinde bulunun, temsilci ekleyin veya çıkarın |
| messages · 2 | |
| messages:read | Bir sohbetin mesaj geçmişini okuma |
| messages:write | Temsilci olarak mesaj gönderin, göstergeler yazın ve okundu bilgilerini okuyun |
| contacts · 2 | |
| contacts:read | Kişileri oku |
| contacts:write | İletişim alanlarını ve niteliklerini güncelleyin |
| agents · 3 | |
| agents:read | Temsilcileri ve varlıklarını okuyun |
| agents:writehassas | Temsilcileri davet edin, güncelleyin, askıya alın, geri yükleyin veya kaldırın; davetli widget'ın her sohbetini görür |
| agents:events:read | Bir aracının olay günlüğünü ve aracı başına metrikleri okuyun |
| tags · 2 | |
| tags:read | Etiketleri oku |
| tags:write | Bir kişiye etiket ekleme |
| files · 2 | |
| files:read | Yüklenen bir dosyayı indirme |
| files:write | Yeni bir dosya yükle |
| stats · 1 | |
| stats:read | Toplu sohbet, mesaj ve derecelendirme istatistiklerini okuyun |
| channels · 3 | |
| channels:read | Özel bir kanalın çevrimiçi durumunu okuyun |
| channels:write | Gelen bir mesajı özel bir kanalda iletme |
| channels:register | Yeni bir özel kanal kaydedin (yalnızca yüklü uygulamalar) |
| webhooks · 2 | |
| webhooks:read | Webhook aboneliklerini listeleme |
| webhooks:write | Abonelik oluşturma, silme veya yeniden teslim etme |
| quick_phrases · 2 | |
| quick_phrases:read | Bir temsilcinin kısa ifadelerini okuyun |
| quick_phrases:write | Kısa ifadeler oluşturun, düzenleyin veya silin |
| ratings · 1 | |
| ratings:read | Ziyaretçi derecelendirmelerini ve her birinin hangi temsilciye puan verdiğini okuyun |
| responder · 2 | |
| responder:injecthassas | Harici bir yapay zeka operatörü veya bot olarak canlı sohbete yanıt ekleme |
| responder:escalatekoşullu | POST /v1/ai/yanıtlar için: escalate=true aracılığıyla arayana yönelik aktarım |
| widget · 2 | |
| widget:read | Widget görünümünü, davranışını ve yerleştirme ayarlarını okuyun |
| widget:write | Widget ayarlarını güncelleyin ve widget önbelleğini temizleyin |
| departments · 2 | |
| departments:read | Departmanları, temsilcilerini ve programlarını okuyun |
| departments:write | Departmanları ve programları oluşturun, güncelleyin veya silin |
| messengers · 2 | |
| messengers:read | Hangi mesajlaşma programlarının bağlı olduğunu okuyun (asla kimlik bilgileri vermeyin) |
| messengers:writehassas | Bir messenger'ı bağlayın veya bağlantısını kesin; sağlayıcı kimlik bilgilerini yazar |
| ai · 4 | |
| ai:read | Yapay zeka asistanlarını, yapılandırmalarını ve uyarılarını okuyun |
| ai:write | Asistanlar, yapay zeka ayarları ve yapay zeka operatörleri, kişi ve bilgi istemi oluşturma ve güncelleme |
| ai:credentials:writehassas | Üçüncü taraf LLM sağlayıcı kimlik bilgilerini saklayın (BYOK) |
| ai:apply | Canlı asistanın kişiliğini yeniden yazan bir iyileştirmeyi onaylayın |
| kb · 2 | |
| kb:read | Bilgi tabanı kurallarını ve alınan kaynakları okuyun |
| kb:write | Bilgi Bankası kuralları ve kaynakları oluşturma, güncelleme veya silme |
| transcripts · 1 | |
| transcripts:read | Sohbet metnini dışa aktarma |
| account · 2 | |
| account:read | Hesap profilini ve tüm tüzel kişiliklerini okuyun |
| account:write | Yalnızca hesabın adını, soyadını ve telefonunu güncelleyin |
| billing · 2 | |
| billing:read | Widget'ın fatura kayıtlarını ve tüzel kişiliklerini okuyun |
| billing:write | Tüzel kişilikleri oluşturun, güncelleyin, silin; fatura kesmiyor, para hareket ettirmiyor |
| partners · 2 | |
| partners:read | İş ortağı ve yönlendirme verilerini okuyun |
| partners:withdrawayrılmış | Rezerve edilmiştir: Bugün hiçbir ödeme işlemi bunu kullanmıyor |
| support · 4 | |
| support:read | Biletleri, aktif sohbetleri, mesajlarını ve kendi denetlenen eylemlerini okuyun |
| support:replyhassas | Bir müşteriye destek operatörü olarak yanıt verin |
| support:write | Bir sohbeti talep edin veya sohbeti iptal edin, yanıt vermeden kapatın, yeniden açın |
| support:tickets:close | Yalnızca bir bileti kapatın; başka bir şey yok |
| marketing · 2 | |
| marketing:read | Pazarlama kampanyalarını okuyun: banner'lar, pop‑up'lar, e‑posta |
| marketing:write | Kampanyalar oluşturun ve düzenleyin, durumu değiştirin, e‑posta gönderimi başlatın |
| broadcasts · 2 | |
| broadcasts:read | Messenger yayınlarını okuyun (WhatsApp, Telegram, Messenger, Viber, VK, MAX) |
| broadcasts:write | Yayın oluşturun, düzenleyin ve başlatın |
| problems · 2 | |
| problems:read | Müşteri sorunu kümelerini ve ayarlarını okuyun |
| problems:write | Ayarları ve küme durumunu değiştirin: yeni, devam ediyor, çözümlendi, yineleniyor |
| invitations · 2 | |
| invitations:read | Davetiye kurallarını, A/B çeşitlerini, şablonları ve dönüşüm hunisini okuyun |
| invitations:write | Kuralları ve şablonları oluşturun, düzenleyin, etkinleştirin veya silin |
Uç noktalar
Tüm halka açık yüzey tek bir listede. Kaynağa göre filtreleyin, yola göre arayın, hazır bir kıvrımı kopyalamak için bir satırı tıklayın.
ai Asistanlar, operatörler, anahtarlar, öğrenme, pazar yeri54
chats Diyaloglar, mesajlar, aktarım, derecelendirmeler18
kb Bilgi tabanı: kurallar, tarayıcı, dosyalar, arama16
agents Temsilciler, davetiyeler, ölçümler14
messengers Haberciler, sosyal ağlar ve pazar kanalları13
billing Bakiye, abonelikler, faturalar, varlıklar12
support Destek temsilcisi: biletler ve sohbetler12
widget Ayarlar, dil, çeviriler, dış görünümler, önbellek12
channels Özel kanallar8
external‑operators Operatör olarak botunuz8
webhook‑subscriptions Web kancası abonelikleri8
broadcasts Messenger yayınları7
departments Bölümler ve program7
invitations Akıllı davetiyeler7
marketing Pazarlama kampanyaları7
partner Ortak programı7
wishes Yapay zeka için dilekler7
contacts Kişiler ve etiketler5
problems Müşteri sorun analitiği4
quick‑phrases Kısa ifadeler4
compat Taşıma uyumluluğu3
stats İstatistikler3
account Hesap2
files Dosyalar2
ratings Derecelendirmeler1
tags Etiketler1
v1 1
webhook‑events Etkinlik kataloğu1
Yollar https://smartbtn.me/api ile ilişkilidir. Yazma işlemleri için Content‑Type: application/json ve X‑Smartbtn‑Idempotency‑Key gerekir. compat grubu, başka bir sohbet platformundan geçiş yapan ekipler için bir uyumluluk katmanıdır.
Web kancaları
Abone olunan bir etkinlik gerçekleştiğinde URL'nize imzalı bir JSON POST gönderilir. Abonelikleri /v1/webhook‑subscriptions aracılığıyla veya kontrol panelinden yönetin.
{
"id": "evt_01JAB3K9Q7",
"type": "ticket.created",
"data": {
"button_guid": "b_3f9c2e",
"ticket_number": 10482,
"chat_id": 48211,
"client_id": 9134,
"reason": "human_request",
"priority": "high",
"sla_hours": 4,
"source": "chat",
"created_at": "2026-10-17T10:15:00+03:00"
}
}sebep: human_request | faturalandırma | ai_unresolved | action_request | …; öncelik: yüksek | normal; kaynak: sohbet | uygulama | alan. GET /v1/support/tickets/{number ile bileti ve iletişim kutusunu okuyun.
Teslimat başlıkları
| X‑Smartbtn‑Event | Etkinlik türü, ör. message.created. |
| X‑Smartbtn‑Signature | Ham gövdenin sha256=v1:. |
| X‑Smartbtn‑Idempotency‑Key | Etkinlik başına bir değer, yeniden denemelerde kararlı. Tekilleştirmeyi gerçekleştirin. |
| X‑Smartbtn‑Delivery | Günlükleriniz için teslimat denemesi başına bir değer. |
| X‑Smartbtn‑Timestamp | Unix gönderme zamanı. Bilgilendirici, imzalı değil. |
İmza doğrulama
Uç nokta sırrınızla birlikte ham gövdenin HMAC‑SHA256'sı (JSON ayrıştırmasından önce alınan bayt sayısı); sabit zamanda karşılaştırın. Bu sır, abonelik oluşturulduğunda bir kez gösterilir; POST /v1/webhook‑subscriptions/{id}/rotate‑secret ile döndürün.
// Node.js · örneğin, sır bir yer tutucudur import crypto from 'node:crypto'; function verify(rawBody, header, secret) { const expected = 'sha256=v1:' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex'); const a = Buffer.from(expected), b = Buffer.from(header || ''); return a.length === b.length && crypto.timingSafeEqual(a, b); }
// PHP $expected = 'sha256=v1:' . hash_hmac('sha256', file_get_contents('php://input'), $secret); if (!hash_equals($expected, $_SERVER['HTTP_X_SMARTBTN_SIGNATURE'] ?? '')) { http_response_code(401); exit; }
Yeniden denemeler ve sipariş
- En fazla 4 deneme (ilk gönderme artı 3 yeniden deneme), geri alma
dak(60, 2^deneme × 5)saniye — yaklaşık 10, 20, 40 saniye. - 2xx olmayan veya zaman aşımı başarısız bir girişim olarak sayılır. Başarısız teslimatlar
POST /v1/webhook‑subscriptions/{id}/redeliverile yeniden gönderilebilir - aynı idempotency anahtarı, yeni teslimat kimliği. - Teslimat en az bir kez yapılır ve sipariş edilmez. Yükler minimum düzeydedir; tam kayıtlar değil, kimlikler; REST API aracılığıyla ayrıntıları alın.
JS API
Ziyaretçi hakkında bildiklerinizi doğrudan temsilciye iletin. Aramalar yalnızca widget ayarlarında belirlenen alan adından kabul edilir.
smartbtn_widget_api.setContactInfo(info)
Ziyaretçinin iletişim verilerini ayarlar. Temsilci, ziyaretçinin giriş formunu doldurmuş gibi görür. Ad, telefon ve e‑posta Smartbtn'de özel bir rol oynar; dolayısıyla ayrı bir yöntemdir.
| İsim | Tür | Açıklama |
|---|---|---|
| name | string | Ziyaretçi adı |
| string | Ziyaretçi e‑postası | |
| phone | string | Ziyaretçi telefonu |
| description | string | Müşteri hakkında herhangi bir ekstra bilgi |
Smartbtn_api.setClientInfo({ name: "Alex Morgan", email: "email@example.com", phone: "+17584987855", description: "Description text" });
smartbtn_widget_api.setCustomData(fields)
Temsilci uygulamasının sağındaki bilgi paneline ilişkin ekstra veriler. İstediğiniz sıklıkta arayın; açık bir iletişim kutusunda panel gerçek zamanlı olarak güncellenir. Alanlar dizi sırasına göre gösterilir.
| İsim | Tür | Açıklama |
|---|---|---|
| fields | array | Veri alanlarının listesi |
| field.title | string | Alanın üstünde ilerlemek |
| field.content | string | Alan içeriği; etiketler kaçtı |
| field.link | string | Tıklandığında açılan URL |
Smartbtn_api.setClientCustomData([ { title: "Order", content: "#10482 · 3 items", link: "https://shop.example/orders/10482" }, { title: "Actions", content: "Open customer profile", link: "https://crm.example/c/9134" } ]);
smartbtn_widget_api.setSkin(skin, opts) · open() · close()
Sayfayı yeniden yüklemeden widget temasını anında değiştirin (klasik, minimal, kapsül, sıvı) veya sohbet penceresini programlı olarak kontrol edin. Proje bazında kalıcı özelleştirme için aynı alanları PATCH /v1/widget/settings'e iletin.
// JS API · sayfadaki görünümü gerçek zamanlı olarak değiştirin smartbtn_widget_api.setSkin("minimal"); smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "Yanıt ~1 saniye içinde" }); // REST API · PATCH /v1/widget/settings (kapsam widget:write) { "skin": "minimal", "widget_header_align": "center", "widget_show_operator_avatars": false, "widget_show_tabs_bar": false, "chat_bg": "#FAF8F5", "capsule_title": "Smartbtn AI", "capsule_subtitle": "7/24 Çevrimiçi" }
widget_api_contact_sync açıkken, bu çağrılar aynı zamanda contact.updated web kancasını da tetikler.Support‑agent API
Otomatik bir destek temsilcisi, bilet kuyruğunu ve müşteri sohbetlerini yönetir: sohbeti alır, insan destek operatörünüz olarak yanıt verir ve bildirimi kapatır. Widget sahibi onu açana kadar kapalıdır.
- Sahibi buna izin veriyorDestek aracısı olarak görev yapmasına izin verilen belirteçleri ve bunların arayabileceği IP'leri listeler.
- Sırayı oku
GET /v1/support/tickets·GET /v1/support/chats - Sohbet kiralama
POST …/chats/{id}/claim·…/release - YanıtlaDüz metin, yalnızca widget'ın izin verilen ana bilgisayarlarına bağlantılar.
201yalnızca mesaj depolandığında. - Kapatın veya yeniden açın
POST …/tickets/{number}/close·…/reopen
| Kapsam | İzin verir |
|---|---|
| support:read | Biletler, aktif sohbetler, istemci / yapay zeka / destek / sistem etiketli mesajlar, kendi denetlenen eylemler |
| support:write | Bir sohbeti talep edin / iptal edin, yanıt vermeden kapatın, yeniden açın |
| support:reply | Müşteriye destek operatörü olarak yanıt verin (hassas) |
| support:tickets:close | Yalnızca bir bildirimi kapatın — arka uçta "soru çözüldü" düğmesi için |
curl -X POST https://smartbtn.me/api/v1/support/chats/48211/reply \ -H "Authorization: Bearer $AGENT_TOKEN" \ -H "Content-Type: application/json" \ -H "X-Smartbtn-Idempotency-Key: $(uuidgen)" \ -d '{"text":"Bitti, erişim yeniden sağlandı."}'
AI API'si
Kontrol panelinin AI bölümünün yaptığı her şey: asistanlar, kendi sağlayıcı anahtarlarınız, bilgi tabanınız, geri alma ile kendi kendine öğrenme, dilekler, sorunlar, talep sinyalleri ve uygulamanızın içindeki bir asistan.
Kendi rolleri ve dilleri olan birkaç asistan, yayına geçmeden önce bir test, dile göre operatörlerin adlandırılması.
- GET/v1/ai/assistants
- POST/v1/ai/assistants/{id}/test
- PATCH/v1/ai/operators/{id}
- POST/v1/ai/handoff
Claude, ChatGPT, DeepSeek, Gemini, Mistral, bölgesel LLM'ler veya herhangi bir OpenAI uyumlu. Modeller anahtar başına listelenir.
- GET/v1/ai/credentials
- POST/v1/ai/credentials
- GET/v1/ai/credentials/{id}/models
Siteniz, PDF ve DOCX yüklemeleriniz, kurallarınız, arama ve indeksleme durumunuz için bir tarayıcı.
- PUT/v1/kb/crawler
- POST/v1/kb/uploads
- POST/v1/kb/rules
- GET/v1/kb/search
Çalıştırmaları, döngüleri, geçmişi, geri alma ve durdurma anahtarıyla kişisel versiyonları ayarlama.
- POST/v1/ai/learning/tune
- GET/v1/ai/learning/cycles
- POST/v1/ai/learning/persona‑versions/{version}/revert
- GET/v1/ai/learning/kill‑switch
Basit kelimelerle bir dilek → yan etkisi olmayan bir önizleme → onaylayın, reddedin veya geri alın.
- POST/v1/wishes
- GET/v1/wishes/{id}/preview
- POST/v1/wishes/{id}/approve
- POST/v1/wishes/{id}/revert
Durumlar ve aylık harcama sınırıyla ilgili sorun kümeleri; Müşterilerin sizden istediği ancak sunmadığınız şeyler.
- GET/v1/problems
- PATCH/v1/problems/settings
- POST/v1/problems/{id}/status
- GET/v1/ai/demand‑signals
Arka ucunuz, HMAC imzalı bir istekte müşteri durumunu (kayıtlı, ücretli, ilk müşteri, hizmet durumu) bildirir; yapay zeka, yanıt verirken ve iletirken bunu tartar.
- POST/v1/ai/customer‑status
- POST/v1/ai/tickets
- GET/v1/ai/alerts
İmzalı bir entegrasyon üzerinden diyalog dönüşleri, hesap bağlama, konuşmayı metne ve metinden konuşmaya, uygulama biletleri.
- POST/v1/ai/assistant/turn
- POST/v1/ai/assistant/account‑link
- POST/v1/ai/assistant/speech‑to‑text
- POST/v1/ai/assistant/text‑to‑speech
Nişlere göre hazır asistanlar: kafe, klinik, mağaza, araba servisi. Tek istekte başvurun.
- GET/v1/ai/marketplace/templates
- POST/v1/ai/marketplace/templates/{slug}/apply
Sohbetlere kendi botunuz yanıt verir: eşzamansız yanıtlar, aktarım, testler ve yaşam döngüsü.
- POST/v1/ai/replies
- POST/v1/external‑operators/{public_id}/tests
- POST/v1/external‑operators/{public_id}/lifecycle
Oran sınırları
Belirteç başına iki sayaç: okuma ve yazma işlemleri ayrı ayrı sayılır, bu nedenle yoklama hiçbir zaman yazma bütçesini tüketmez.
| X‑RateLimit‑Limit | Bu isteğin sayıldığı sayacın boyutu (600 veya 120) |
| X‑RateLimit‑Remaining | Geçerli pencerede kalan istekler |
| X‑RateLimit‑Reset | Pencere sıfırlandığında |
| Retry‑After | 429'da: saniyeler kaldı |
HTTP/1.1 429 Too Many Requests Content-Type: application/problem+json Retry-After: 12 X-RateLimit-Limit: 120 X-RateLimit-Remaining: 0 { "status": 429, "title": "Too Many Requests", "reason": "rate_limited" }
/v1/ai/assistant/tickets/status ve /v1/ai/assistant/account‑link'in kendi sayaçları vardır; destek aracısı API'si, widget başına geçersiz kılmaya sahip olabilir.
Hatalar
Her hata RFC‑7807 application/problem+json'dur: makine tarafından okunabilen bir durum ve neden, insan tarafından okunabilen bir ayrıntı.
HTTP/1.1 403 · Content-Type: application/problem+json { "type": "https://smartbtn.me/problems/forbidden", "title": "Forbidden", "status": 403, "detail": "Token lacks scope chats:write.", "required_scopes": [ "chats:write" ], "hint": "Dashboard → API tokens → key → Edit scopes" }
Gerekli_kapsamların gövde adları ve bunların nereye verileceği. Anahtarı yeniden vermenize gerek yok.
| Durum | Anlamı |
|---|---|
| 400 | Hatalı biçimlendirilmiş istek veya gerekli bir kimlik anahtarı eksik |
| 401 | Jeton yok, geçersiz veya iptal edilmiş jeton |
| 403 | Belirtecin kapsamı yoktur; gövde gerekli_kapsamlar'ı ve bunun nereye verileceğini ekler |
| 404 | Bu widget'ta bulunamadı |
| 405 | Yönteme izin verilmiyor — durdur ve rapor et; alternatif yazma aramayın |
| 409 | Kimlik anahtarının 24 saat içinde yeniden kullanılması veya durum çakışması |
| 422 | Doğrulama başarısız oldu (ör. salt okunur bir alan gönderildi) |
| 429 | Hız limiti; saygı duy Yeniden Dene‑Sonra |
iktidarsızlık
Ağlar başarısız oluyor. Bir anahtar, yeniden denenen yazmayı güvenli hale getirir: aynı işlem hiçbir zaman iki kez uygulanmaz.
- Her POST / PATCH / PUT / DELETE'de
X‑Smartbtn‑Idempotency‑Keygönderin: yeni bir işlem için yeni bir UUID, aynı işlemin yeniden denenmesi için aynı anahtar. - OpenAPI'de
x‑idempotency: gerekliolarak işaretlenen işlemler: anahtar yok → 400, anahtar 24 saat içinde yeniden kullanıldı → 409 (önbelleğe alınmış bir başarı değil). - Geçtiğinden emin değil misiniz? Önce durumu okuyun. Anahtarı asla otomatik olarak değiştirmeyin; Yeniden Dene‑Sonra'ya saygı gösterin.
- Yukarı akış sağlayıcısından gelen bir
502anahtarı serbest bırakır; aynı anahtarla yeniden deneyin.
KEY=$(uuidgen) curl -X PATCH https://smartbtn.me/api/v1/widget/settings \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ -H "Content-Type: application/json" \ -H "X-Smartbtn-Idempotency-Key: $KEY" \ -d '{"language":"ru"}' # ağ hatası mı? aynı $KEY ile tekrarlayın
Changelog
2026'da genel API ve web kancalarında yapılacak değişiklikler. Aşağıdaki her şey ekleme niteliğindedir ve v1'de kalır.
Yeni canlı etkinlik bileti oluşturuldu. GET /v1/support/tickets, bir destek aracısı yapılandırılana kadar support:read ile herhangi bir anahtarı yanıtlar. Anahtar kapsamlar yeniden yayımlanmadan düzenlenebilir. 403 gerekli_kapsamı kazanır.
POST/PATCH /v1/ai/operatörler name_i18n'yi kabul ediyor; varsayılan adlar widget diline çevrilir; tahmin edilebilir selamlama seçimi.
Okuma — dakikada 600, yazma — 120. Oylama artık yazma bütçesini tüketmiyor. X‑RateLimit-* kullanılan sayacı tanımlar.
Ne kadar eski olursa olsun, bir andan itibaren etkinlikle sohbet eder. Artık her sohbette last_message_at bilgisi bulunuyor.
chat.account.email_requested — sohbet adresi bekliyor; aracılar başka bir kod akışı başlatmamalıdır.
Arka uçta bir "soru çözüldü" düğmesi için bir destek bildirimini kapatın ve başka hiçbir şey yapmayın.
Filtreler has_client_messages=1 ve q (2‑100 karakter).
POST /v1/ai/assistant/account‑link ve /revoke. Sahibi etkinleştirene kadar kapalı.
Kurallar, widget tuşuyla veya etkinleştirilmiş bir yardımcı tuşla gömülür; 502, idempotency anahtarını serbest bırakır.
Hesap, bilet açıkken ve sonrasında 7 gün boyunca görünür.
Yeni /v1/destek grubu: kuyruk, sohbetler, kiralamalar, yanıtlar, bildirimlerin kapatılması ve yeniden açılması. Sahibi etkinleştirene kadar kapalı.
Code_pending, code_expires_at, last_code_result ve last_code_at alanları.
WordPress eklentisi
Tema koduna dokunmadan bir WordPress sitesindeki widget.
- İndireklenti arşivini bilgisayarınıza indirin.
- YüklePaketten çıkarılan klasörü
wp‑content/plugins/içine yerleştirin veya WordPress yöneticisine yükleyin. - EtkinleştirMenüde bir Smartbtn öğesi görünür.
- Belirteci yapıştırınGüvenlik belirtecini kontrol panelinizdeki widget ayarlarından kopyalayın.
Şifrenizi değiştirdiğinizde güvenlik belirteci de değişir ve eskisi çalışmayı durdurur; yenisini eklentiye yapıştırın.
Kod örnekleri
İmleci sonuna kadar takip ederek, son anketinizden bu yana gerçekleşen tüm sohbet etkinliklerini listeleyin.
# ilk sayfa curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "updated_since=2026-10-17T09:00:00+03:00" # next - yanıttaki next_cursor ile curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "cursor=eyJpZCI6NDgyMDd9"