Özellikleryapay zekaKontrol PaneliAPIFiyatlandırmaİndirYardım
Görünüm (Auto: light)
Ücretsiz deneyin
API ve geliştiriciler

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.

smartbtn.me/api/v1
# Enter'a veya sağdaki işarete basın
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

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.

  1. 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.
  2. 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.
  3. İlk isteği gönderBelirteç yalnızca Yetkilendirme baş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
}
Doğrulanmış temel URL. 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.
Eksik, geçersiz veya kapsamı yetersiz mi? RFC‑7807 application/problem+json gövdesiyle 401 veya 403 alıyorsunuz - bkz. Hatalar.
02

Kimlik doğrulama

Kimin kimi aradığına bağlı olarak üç yol. Erişim varsayılan olarak reddedilir: kapsam yok - çağrı yok.

Siz → Smartbtn
REST çağrıları

Her istek Yetkilendirmeyi taşır: Taşıyıcı . Sunucuda belirteç tek bir widget'a ve onun kapsamlarına çözümlenir.

Smartbtn → siz
Web kancaları, harici AI operatörü

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.

AI operatörünüz → Smartbtn
Eşzamansız yanıtlar

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 ayarKapsamlarNe zaman
Yapay zeka kurulumu 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:readAI 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:readKontrol panelleri, BI, dışa aktarmalar.
Yardım masası köprüsü (örnek seti)chats:read · messages:read · messages:write · webhooks:write · support:readDiyalogları ve biletleri CRM'nize yansıtın.
Sağlayıcı anahtarları ayrıdır. 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.
03

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.

53 + 1 koşullu + 1 ayrılmış
hassaskoşulluayrılmış
KapsamHibeler
chats · 2
chats:readSohbetleri ve meta verilerini okuyun
chats:writeBir sohbeti kapatın, derecelendirme isteyin, aktarın, hak talebinde bulunun, temsilci ekleyin veya çıkarın
messages · 2
messages:readBir sohbetin mesaj geçmişini okuma
messages:writeTemsilci olarak mesaj gönderin, göstergeler yazın ve okundu bilgilerini okuyun
contacts · 2
contacts:readKişileri oku
contacts:writeİletişim alanlarını ve niteliklerini güncelleyin
agents · 3
agents:readTemsilcileri ve varlıklarını okuyun
agents:writehassasTemsilcileri 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:readBir aracının olay günlüğünü ve aracı başına metrikleri okuyun
tags · 2
tags:readEtiketleri oku
tags:writeBir kişiye etiket ekleme
files · 2
files:readYüklenen bir dosyayı indirme
files:writeYeni bir dosya yükle
stats · 1
stats:readToplu sohbet, mesaj ve derecelendirme istatistiklerini okuyun
channels · 3
channels:readÖzel bir kanalın çevrimiçi durumunu okuyun
channels:writeGelen bir mesajı özel bir kanalda iletme
channels:registerYeni bir özel kanal kaydedin (yalnızca yüklü uygulamalar)
webhooks · 2
webhooks:readWebhook aboneliklerini listeleme
webhooks:writeAbonelik oluşturma, silme veya yeniden teslim etme
quick_phrases · 2
quick_phrases:readBir temsilcinin kısa ifadelerini okuyun
quick_phrases:writeKısa ifadeler oluşturun, düzenleyin veya silin
ratings · 1
ratings:readZiyaretçi derecelendirmelerini ve her birinin hangi temsilciye puan verdiğini okuyun
responder · 2
responder:injecthassasHarici bir yapay zeka operatörü veya bot olarak canlı sohbete yanıt ekleme
responder:escalatekoşulluPOST /v1/ai/yanıtlar için: escalate=true aracılığıyla arayana yönelik aktarım
widget · 2
widget:readWidget görünümünü, davranışını ve yerleştirme ayarlarını okuyun
widget:writeWidget ayarlarını güncelleyin ve widget önbelleğini temizleyin
departments · 2
departments:readDepartmanları, temsilcilerini ve programlarını okuyun
departments:writeDepartmanları ve programları oluşturun, güncelleyin veya silin
messengers · 2
messengers:readHangi mesajlaşma programlarının bağlı olduğunu okuyun (asla kimlik bilgileri vermeyin)
messengers:writehassasBir messenger'ı bağlayın veya bağlantısını kesin; sağlayıcı kimlik bilgilerini yazar
ai · 4
ai:readYapay zeka asistanlarını, yapılandırmalarını ve uyarılarını okuyun
ai:writeAsistanlar, 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:applyCanlı asistanın kişiliğini yeniden yazan bir iyileştirmeyi onaylayın
kb · 2
kb:readBilgi tabanı kurallarını ve alınan kaynakları okuyun
kb:writeBilgi Bankası kuralları ve kaynakları oluşturma, güncelleme veya silme
transcripts · 1
transcripts:readSohbet metnini dışa aktarma
account · 2
account:readHesap profilini ve tüm tüzel kişiliklerini okuyun
account:writeYalnızca hesabın adını, soyadını ve telefonunu güncelleyin
billing · 2
billing:readWidget'ın fatura kayıtlarını ve tüzel kişiliklerini okuyun
billing:writeTü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:readBiletleri, aktif sohbetleri, mesajlarını ve kendi denetlenen eylemlerini okuyun
support:replyhassasBir müşteriye destek operatörü olarak yanıt verin
support:writeBir sohbeti talep edin veya sohbeti iptal edin, yanıt vermeden kapatın, yeniden açın
support:tickets:closeYalnızca bir bileti kapatın; başka bir şey yok
marketing · 2
marketing:readPazarlama kampanyalarını okuyun: banner'lar, pop‑up'lar, e‑posta
marketing:writeKampanyalar oluşturun ve düzenleyin, durumu değiştirin, e‑posta gönderimi başlatın
broadcasts · 2
broadcasts:readMessenger yayınlarını okuyun (WhatsApp, Telegram, Messenger, Viber, VK, MAX)
broadcasts:writeYayın oluşturun, düzenleyin ve başlatın
problems · 2
problems:readMüşteri sorunu kümelerini ve ayarlarını okuyun
problems:writeAyarları ve küme durumunu değiştirin: yeni, devam ediyor, çözümlendi, yineleniyor
invitations · 2
invitations:readDavetiye kurallarını, A/B çeşitlerini, şablonları ve dönüşüm hunisini okuyun
invitations:writeKuralları ve şablonları oluşturun, düzenleyin, etkinleştirin veya silin
04

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.

245 / 245 tanesi gösteriliyor
GETPOSTPUTPATCHDELETE

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.

05

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.

POST URL'niz · X‑Smartbtn‑Event: ticket.created
{
  "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‑EventEtkinlik türü, ör. message.created.
X‑Smartbtn‑SignatureHam gövdenin sha256=v1:.
X‑Smartbtn‑Idempotency‑KeyEtkinlik başına bir değer, yeniden denemelerde kararlı. Tekilleştirmeyi gerçekleştirin.
X‑Smartbtn‑DeliveryGünlükleriniz için teslimat denemesi başına bir değer.
X‑Smartbtn‑TimestampUnix 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}/redeliver ile 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.
06

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.

İsimTürAçıklama
namestringZiyaretçi adı
emailstringZiyaretçi e‑postası
phonestringZiyaretçi telefonu
descriptionstringMüş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.

İsimTürAçıklama
fieldsarrayVeri alanlarının listesi
field.titlestringAlanın üstünde ilerlemek
field.contentstringAlan içeriği; etiketler kaçtı
field.linkstringTı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.
07

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.

  1. Sahibi buna izin veriyorDestek aracısı olarak görev yapmasına izin verilen belirteçleri ve bunların arayabileceği IP'leri listeler.
  2. Sırayı okuGET /v1/support/tickets · GET /v1/support/chats
  3. Sohbet kiralamaPOST …/chats/{id}/claim · …/release
  4. YanıtlaDüz metin, yalnızca widget'ın izin verilen ana bilgisayarlarına bağlantılar. 201 yalnızca mesaj depolandığında.
  5. Kapatın veya yeniden açınPOST …/tickets/{number}/close · …/reopen
Kapsamİzin verir
support:readBiletler, aktif sohbetler, istemci / yapay zeka / destek / sistem etiketli mesajlar, kendi denetlenen eylemler
support:writeBir sohbeti talep edin / iptal edin, yanıt vermeden kapatın, yeniden açın
support:replyMüşteriye destek operatörü olarak yanıt verin (hassas)
support:tickets:closeYalnı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ı."}'
Sahibi, destek temsilcisi tokenlarına kendi dakika başına limitlerini verebilir veya hiç vermeyebilir. Diğer tüm rotalar genel limiti korur.
08

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.

Asistanlar ve yapay zeka operatörleri

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
Kapsamlar: ai:read · ai:write
Kendi anahtarınızı getirin

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
Kapsamlar: ai:read · ai:credentials:write
Bilgi tabanı

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
Kapsamlar: kb:read · kb:write · files:write
Kendi kendine öğrenme

Ç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
Kapsamlar: ai:read · ai:write · ai:apply
Yapay zeka için dilekler

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
Kapsamlar: ai:write · ai:apply
Sorunlar ve talep sinyalleri

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
Kapsamlar: problems:read · problems:write · ai:read
Müşteri durumu

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
Kapsamlar: ai:write · ai:read
Uygulamanızdaki asistan

İ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
Kapsamlar: entegrasyon imzası (HMAC)
Çözüm pazarı

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
Kapsamlar: ai:read · ai:write
Harici AI operatörü

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
Kapsamlar: responder:inject · responder:escalate
09

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.

600 / dk.okur: AL, BAŞ
120 / dk.şunu yazar: POST, PATCH, PUT, DELETE
429limitin aşılması — Sonra Yeniden Dene'yi bekleyin
X‑RateLimit‑LimitBu isteğin sayıldığı sayacın boyutu (600 veya 120)
X‑RateLimit‑RemainingGeçerli pencerede kalan istekler
X‑RateLimit‑ResetPencere sıfırlandığında
Retry‑After429'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.

10

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.

DurumAnlamı
400Hatalı biçimlendirilmiş istek veya gerekli bir kimlik anahtarı eksik
401Jeton yok, geçersiz veya iptal edilmiş jeton
403Belirtecin kapsamı yoktur; gövde gerekli_kapsamlar'ı ve bunun nereye verileceğini ekler
404Bu widget'ta bulunamadı
405Yönteme izin verilmiyor — durdur ve rapor et; alternatif yazma aramayın
409Kimlik anahtarının 24 saat içinde yeniden kullanılması veya durum çakışması
422Doğrulama başarısız oldu (ör. salt okunur bir alan gönderildi)
429Hız limiti; saygı duy Yeniden Dene‑Sonra
11

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‑Key gönderin: yeni bir işlem için yeni bir UUID, aynı işlemin yeniden denenmesi için aynı anahtar.
  • OpenAPI'de x‑idempotency: gerekli olarak 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 502 anahtarı 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
12

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.

YeniBiletler: ticket.created webhook, support:read ile kuyruk okumaları, 403 ipucu

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.

YeniDil başına AI operatör adı

POST/PATCH /v1/ai/operatörler name_i18n'yi kabul ediyor; varsayılan adlar widget diline çevrilir; tahmin edilebilir selamlama seçimi.

DeğiştirHız sınırı: okuma ve yazma işlemleri ayrı ayrı sayılır

Okuma — dakikada 600, yazma — 120. Oylama artık yazma bütçesini tüketmiyor. X‑RateLimit-* kullanılan sayacı tanımlar.

YeniGET /v1/chats: update_since filtresi

Ne kadar eski olursa olsun, bir andan itibaren etkinlikle sohbet eder. Artık her sohbette last_message_at bilgisi bulunuyor.

YeniDestek API'si: sohbet posta kutusunu istedi

chat.account.email_requested — sohbet adresi bekliyor; aracılar başka bir kod akışı başlatmamalıdır.

YeniKapsam desteği:biletler:kapat

Arka uçta bir "soru çözüldü" düğmesi için bir destek bildirimini kapatın ve başka hiçbir şey yapmayın.

YeniGET /v1/chats: metin araması ve istemci mesajları

Filtreler has_client_messages=1 ve q (2‑100 karakter).

YeniArka uçtan hesap bağlantısı

POST /v1/ai/assistant/account‑link ve /revoke. Sahibi etkinleştirene kadar kapalı.

DüzeltmeBilgi tabanı: asistana bağlı bir anahtarla yazar

Kurallar, widget tuşuyla veya etkinleştirilmiş bir yardımcı tuşla gömülür; 502, idempotency anahtarını serbest bırakır.

DeğiştirDestek aracısı API'si: uygulama bileti hesabının ömrü

Hesap, bilet açıkken ve sonrasında 7 gün boyunca görünür.

YeniDestek aracısı API'si

Yeni /v1/destek grubu: kuyruk, sohbetler, kiralamalar, yanıtlar, bildirimlerin kapatılması ve yeniden açılması. Sahibi etkinleştirene kadar kapalı.

YeniDestek aracısı API'si: e‑posta kodu penceresi

Code_pending, code_expires_at, last_code_result ve last_code_at alanları.

13

WordPress eklentisi

Tema koduna dokunmadan bir WordPress sitesindeki widget.

  1. İndireklenti arşivini bilgisayarınıza indirin.
  2. YüklePaketten çıkarılan klasörü wp‑content/plugins/ içine yerleştirin veya WordPress yöneticisine yükleyin.
  3. EtkinleştirMenüde bir Smartbtn öğesi görünür.
  4. Belirteci yapıştırınGüvenlik belirtecini kontrol panelinizdeki widget ayarlarından kopyalayın.
bilmek güzel

Şifrenizi değiştirdiğinizde güvenlik belirteci de değişir ve eskisi çalışmayı durdurur; yenisini eklentiye yapıştırın.

14

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"
Hazır

Bir jeton düzenleyin ve Enter'a basın.