FiturAIDasborAPIHargaUnduhBantuan
Penampilan (Auto: light)
Coba gratis
Rumah / API
API dan pengembang

Tekan Enter.
Dapatkan data Anda.

REST API /api/v1, 53 cakupan, 239 titik akhir, 11 peristiwa webhook, dan API JS untuk widget. Obrolan, kontak, AI, basis pengetahuan, tiket, dan penagihan — apa pun yang dilakukan dasbor, kode Anda juga dapat melakukannya.

smartbtn.me/api/v1
# tekan Enter atau tandai di sebelah kanan
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

Mulai cepat

Tiga langkah dari nol ke jawaban pertama. Setiap permintaan terikat pada satu widget dan diautentikasi dengan token pembawa.

  1. Keluarkan tokenDasbor → Token API: nama, masa berlaku opsional, dan cakupan yang Anda perlukan. Sebuah token dimiliki tepat oleh satu widget. Token teks biasa ditampilkan sekali; Smartbtn hanya menyimpan hash satu arah, sehingga token yang hilang tidak dapat dipulihkan — hanya dicabut dan diterbitkan kembali.
  2. Aktifkan API widgetDi pengaturan widget, aktifkan «Izinkan API widget (JS dan REST)». Menerbitkan token tidak mengubah hal ini untuk Anda.
  3. Kirim permintaan pertamaToken hanya masuk ke header Otorisasi — tidak pernah masuk ke URL.
# daftar obrolan widget
curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \
     https://smartbtn.me/api/v1/chats
// 200 OK · paginasi kursor
{
  "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ],
  "next_cursor": "eyJpZCI6NDgyMTB9"   // null — di halaman terakhir
}
URL dasar terverifikasi. https://smartbtn.me/api/v1 adalah titik akhir API utama untuk semua data proyek. Selalu kirim permintaan melalui HTTPS dan jangan pernah meneruskan token saat pengalihan.
Token tidak ada, tidak valid, atau cakupannya kurang? Anda mendapatkan 401 atau 403 dengan isi application/problem+json RFC‑7807 — lihat Errors.
02

Otentikasi

Tiga jalur, tergantung siapa memanggil siapa. Akses ditolak secara default: tidak ada cakupan — tidak ada panggilan.

Anda → Smartbtn
panggilan REST

Setiap permintaan membawa Otorisasi: Pembawa . Di server, token ditentukan menjadi satu widget dan cakupannya.

Smartbtn → kamu
Webhook, operator AI eksternal

Permintaan keluar ditandatangani dengan rahasia per penyewa: X‑Smartbtn‑Signature. Kredensial pembawa tambahan dapat ditambahkan jika pihak Anda membutuhkannya.

Operator AI Anda → Smartbtn
Balasan asinkron

POST /v1/ai/replies menggunakan bingkai bertanda tangannya sendiri, disematkan ke operator dan widget AI Anda, serta dikunci oleh causation_id yang tahan lama.

Peralihan yang dilupakan orang

«Izinkan API widget (JS dan REST)» di pengaturan widget akan membuka REST API dan widget JS API. Menerbitkan token tidak mengaktifkannya. Cakupan kunci yang ada dapat diedit di dasbor (token API → kunci → Edit cakupan) tanpa menerbitkan ulang — integrasi tetap berfungsi.

Preset

PrasetelLingkupKapan
pengaturan AI 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:readAplikasi AI Anda mengonfigurasi widget: asisten, basis pengetahuan, teks. Menggantikan seluruh pilihan cakupan.
Hanya‑baca (kumpulan contoh)chats:read · messages:read · contacts:read · stats:readDasbor, BI, ekspor.
Jembatan helpdesk (kumpulan contoh)chats:read · messages:read · messages:write · webhooks:write · support:readCerminkan dialog dan tiket ke dalam CRM Anda.
Kunci penyedia terpisah. Berikan ai:credentials:write hanya jika pemilik mengizinkan penyiapan kunci penyedia. Hak akun, penagihan, dan mitra tidak diperlukan untuk penyiapan AI. Kuncinya ditampilkan satu kali — cabut ketika pengaturan selesai.
03

Lingkup

53 cakupan rute, ditambah satu kondisional dan satu cadangan. Permintaan berhasil hanya jika token tersebut memiliki cakupan rute (atau alternatif yang terdaftar).

53 + 1 bersyarat + 1 dicadangkan
sensitifbersyaratdilindungi undang‑undang
Ruang lingkupHibah
chats · 2
chats:readBaca obrolan dan metadatanya
chats:writeTutup obrolan, minta rating, transfer, klaim, lampirkan atau lepaskan agen
messages · 2
messages:readMembaca riwayat pesan obrolan
messages:writeKirim pesan, ketikkan indikator dan baca tanda terima sebagai agen
contacts · 2
contacts:readBaca kontak
contacts:writePerbarui bidang dan atribut kontak
agents · 3
agents:readBaca agen dan kehadirannya
agents:writesensitifMengundang, memperbarui, menangguhkan, memulihkan atau menghapus agen; seorang yang diundang melihat setiap obrolan widget
agents:events:readBaca log peristiwa agen dan metrik per agen
tags · 2
tags:readBaca tag
tags:writeLampirkan tag ke kontak
files · 2
files:readUnduh file yang diunggah
files:writeUnggah file baru
stats · 1
stats:readBaca statistik obrolan, pesan, dan peringkat agregat
channels · 3
channels:readMembaca status online saluran khusus
channels:writeKirimkan pesan masuk pada saluran khusus
channels:registerDaftarkan saluran khusus baru (hanya aplikasi yang diinstal)
webhooks · 2
webhooks:readDaftar langganan webhook
webhooks:writeMembuat, menghapus, atau mengirim ulang langganan
quick_phrases · 2
quick_phrases:readBaca frasa singkat agen
quick_phrases:writeMembuat, mengedit, atau menghapus frasa cepat
ratings · 1
ratings:readBaca peringkat pengunjung dan agen mana yang mendapat skor
responder · 2
responder:injectsensitifMasukkan balasan ke dalam obrolan langsung sebagai operator atau bot AI eksternal
responder:escalatebersyaratUntuk POST /v1/ai/replies: handoff yang diarahkan ke pemanggil melalui escalate=true
widget · 2
widget:readBaca tampilan widget, perilaku, dan pengaturan penyematan
widget:writePerbarui pengaturan widget dan bersihkan cache widget
departments · 2
departments:readBaca departemen, agen dan jadwalnya
departments:writeMembuat, memperbarui, atau menghapus departemen dan jadwal
messengers · 2
messengers:readBaca messenger mana yang terhubung (tidak pernah kredensial)
messengers:writesensitifHubungkan atau putuskan sambungan messenger; menulis kredensial penyedia
ai · 4
ai:readBaca asisten AI, konfigurasi dan peringatannya
ai:writeMembuat dan memperbarui asisten, pengaturan AI dan operator AI, termasuk persona dan prompt
ai:credentials:writesensitifSimpan kredensial penyedia LLM pihak ketiga (BYOK)
ai:applyMenyetujui peningkatan yang mengubah kepribadian asisten langsung
kb · 2
kb:readBaca aturan basis pengetahuan dan sumber yang diserap
kb:writeMembuat, memperbarui, atau menghapus aturan dan sumber KB
transcripts · 1
transcripts:readEkspor transkrip obrolan
account · 2
account:readBaca profil akun dan seluruh badan hukumnya
account:writePerbarui hanya nama akun, nama keluarga, dan telepon
billing · 2
billing:readBaca catatan penagihan widget dan badan hukum
billing:writeMembuat, memperbarui, menghapus badan hukum; tidak mengeluarkan faktur, tidak memindahkan uang
partners · 2
partners:readBaca data mitra dan rujukan
partners:withdrawdilindungi undang‑undangDicadangkan: tidak ada operasi pembayaran yang menggunakannya hari ini
support · 4
support:readBaca tiket, obrolan aktif, pesan mereka, dan tindakan yang diaudit sendiri
support:replysensitifJawab pelanggan sebagai operator dukungan
support:writeKlaim atau lepaskan obrolan, tutup tanpa balasan, buka kembali
support:tickets:closeTutup saja tiketnya — tidak ada yang lain
marketing · 2
marketing:readBaca kampanye pemasaran: spanduk, popup, email
marketing:writeBuat dan edit kampanye, ubah status, mulai pengiriman email
broadcasts · 2
broadcasts:readBaca siaran messenger (WhatsApp, Telegram, Messenger, Viber, VK, MAX)
broadcasts:writeMembuat, mengedit, dan memulai siaran
problems · 2
problems:readBaca klaster dan pengaturan masalah pelanggan
problems:writeUbah pengaturan dan status klaster: baru, sedang berlangsung, terselesaikan, berulang
invitations · 2
invitations:readBaca aturan undangan, varian A/B, template, dan corong
invitations:writeMembuat, mengedit, mengaktifkan atau menghapus aturan dan templat
04

Titik akhir

Seluruh permukaan publik dalam satu daftar. Filter berdasarkan sumber daya, cari berdasarkan jalur, klik baris untuk menyalin ikal yang sudah jadi.

Menampilkan 245 dari 245
GETPOSTPUTPATCHDELETE

ai Asisten, operator, kunci, pembelajaran, pasar54

chats Dialog, pesan, transfer, peringkat18

kb Basis pengetahuan: aturan, perayap, file, pencarian16

agents Agen, undangan, metrik14

messengers Messenger, jejaring sosial & saluran pasar13

billing Saldo, langganan, faktur, entitas12

support Agen dukungan: tiket dan obrolan12

widget Pengaturan, bahasa, terjemahan, skin, cache12

channels Saluran khusus8

external‑operators Bot Anda sebagai operator8

webhook‑subscriptions Langganan webhook8

broadcasts Siaran utusan7

departments Departemen dan jadwal7

invitations Undangan cerdas7

marketing Kampanye pemasaran7

partner Program mitra7

wishes Harapan untuk AI7

contacts Kontak dan tag5

problems Analisis masalah pelanggan4

quick‑phrases Frase cepat4

compat Kompatibilitas migrasi3

stats Statistik3

account Akun2

files File2

ratings Peringkat1

tags Tag1

v1 1

webhook‑events Katalog acara1

Jalur bersifat relatif terhadap https://smartbtn.me/api. Penulisan memerlukan Content‑Type: application/json dan X‑Smartbtn‑Idempotency‑Key. Grup compat adalah lapisan kompatibilitas untuk tim yang berpindah dari platform chat lain.

05

Webhook

POST JSON yang ditandatangani ke URL Anda setiap kali peristiwa berlangganan terjadi. Kelola langganan melalui /v1/webhook‑subscriptions atau di dasbor.

POST URL Anda · 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"
  }
}

alasan: permintaan_manusia | penagihan | ai_belum terselesaikan | permintaan_aksi | …; prioritas: tinggi | normal; sumber: obrolan | aplikasi | lokasi. Baca tiket dan dialognya dengan GET /v1/support/tickets/{number}.

Header pengiriman

X‑Smartbtn‑EventJenis acara, mis. pesan.dibuat.
X‑Smartbtn‑Signaturesha256=v1: dari isi mentah.
X‑Smartbtn‑Idempotency‑KeySatu nilai per peristiwa, stabil di seluruh percobaan ulang. Dedupe di atasnya.
X‑Smartbtn‑DeliverySatu nilai per upaya pengiriman — untuk log Anda.
X‑Smartbtn‑TimestampUnix waktu pengiriman. Informasional, tidak ditandatangani.

Verifikasi tanda tangan

HMAC‑SHA256 dari isi mentah (byte yang diterima, sebelum penguraian JSON) dengan rahasia titik akhir Anda; bandingkan dalam waktu yang konstan. Rahasianya ditampilkan satu kali, saat langganan dibuat; putar dengan POST /v1/webhook‑subscriptions/{id}/rotate‑secret.

// Node.js · Misalnya, rahasianya adalah placeholder
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; }

Coba lagi dan pesan

  • Hingga 4 percobaan (pengiriman pertama ditambah 3 percobaan ulang), backoff min(60, 2^attempt × 5) s — sekitar 10, 20, 40 detik.
  • Non‑2xx atau batas waktu dihitung sebagai upaya yang gagal. Pengiriman yang gagal dapat dikirim ulang dengan POST /v1/webhook‑subscriptions/{id}/redeliver — kunci idempotensi yang sama, id pengiriman baru.
  • Pengiriman dilakukan setidaknya satu kali dan tidak dipesan. Muatannya minimal — id, bukan catatan lengkap; ambil detail melalui REST API.
06

JS API

Sampaikan apa yang sudah Anda ketahui tentang pengunjung langsung ke agen. Panggilan hanya diterima dari domain yang diatur dalam pengaturan widget.

smartbtn_widget_api.setContactInfo(info)

Mengatur data kontak pengunjung. Agen melihatnya seolah‑olah pengunjung mengisi formulir perkenalan. Nama, telepon, dan email memainkan peran khusus di Smartbtn — oleh karena itu merupakan metode terpisah.

NamaKetikDeskripsi
namestringNama pengunjung
emailstringemail pengunjung
phonestringTelepon pengunjung
descriptionstringInformasi tambahan apa pun tentang klien
Smartbtn_api.setClientInfo({
  name: "Alex Morgan",
  email: "email@example.com",
  phone: "+17584987855",
  description: "Description text"
});

smartbtn_widget_api.setCustomData(fields)

Data tambahan apa pun untuk panel info di sebelah kanan aplikasi agen. Sebut saja sesering yang Anda suka — dalam dialog terbuka, panel diperbarui secara real‑time. Bidang ditampilkan dalam urutan array.

NamaKetikDeskripsi
fieldsarrayDaftar bidang data
field.titlestringMenuju ke atas lapangan
field.contentstringKonten lapangan; tag di‑escape
field.linkstringURL dibuka saat diklik
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()

Ganti tema widget dengan cepat tanpa memuat ulang halaman (klasik, minimal, capsule, liquid) atau mengontrol jendela obrolan secara terprogram. Untuk penyesuaian permanen per proyek, teruskan kolom yang sama ke PATCH /v1/widget/settings.

// JS API · ganti kulit pada halaman secara real time
smartbtn_widget_api.setSkin("minimal");
smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "Balasan dalam ~1 detik" });

// REST API · PATCH /v1/widget/settings (ruang lingkup 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": "Online 24/7"
}
Dengan widget_api_contact_sync aktif, panggilan ini juga mengaktifkan webhook contact.updated.
07

Support‑agent API

Agen dukungan otomatis mengerjakan antrian tiket dan obrolan pelanggan: menerima obrolan, menjawab sesuai operator dukungan manusia Anda, menutup tiket. Mati hingga pemilik widget menyalakannya.

  1. Pemilik mengaktifkannyaMencantumkan token yang diizinkan untuk bertindak sebagai agen dukungan dan IP yang dapat mereka gunakan untuk menelepon.
  2. Baca antriannyaGET /v1/support/tickets · GET /v1/support/chats
  3. Sewa obrolanPOST …/chats/{id}/claim · …/release
  4. MembalasTeks biasa, tautan hanya ke host widget yang diizinkan. 201 hanya setelah pesan disimpan.
  5. Tutup atau buka kembaliPOST …/tickets/{number}/close · …/reopen
Ruang lingkupMemungkinkan
support:readTiket, obrolan aktif, pesan berlabel klien / ai / dukungan / sistem, tindakan yang diaudit sendiri
support:writeKlaim / lepaskan obrolan, tutup tanpa balasan, buka kembali
support:replyJawab pelanggan sebagai operator support (sensitif)
support:tickets:closeTutup tiket saja — untuk tombol «pertanyaan terpecahkan» di backend Anda
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":"Selesai, akses telah dipulihkan."}'
Pemilik dapat memberikan token agen dukungan batas per menitnya sendiri — atau tidak sama sekali. Setiap rute lainnya mempertahankan batas umum.
08

API AI

Semua yang dilakukan bagian AI di dasbor: asisten, kunci penyedia Anda sendiri, basis pengetahuan, pembelajaran mandiri dengan rollback, keinginan, masalah, sinyal permintaan, dan asisten di dalam aplikasi Anda.

Asisten dan operator AI

Beberapa asisten dengan peran dan bahasanya masing‑masing, tes sebelum ditayangkan, nama operator per bahasa.

  • GET/v1/ai/assistants
  • POST/v1/ai/assistants/{id}/test
  • PATCH/v1/ai/operators/{id}
  • POST/v1/ai/handoff
Lingkup: ai:read · ai:write
Bawalah kunci Anda sendiri

Claude, ChatGPT, DeepSeek, Gemini, Mistral, LLM regional, atau apa pun yang kompatibel dengan OpenAI. Model dicantumkan per kunci.

  • GET/v1/ai/credentials
  • POST/v1/ai/credentials
  • GET/v1/ai/credentials/{id}/models
Lingkup: ai:read · ai:credentials:write
Basis pengetahuan

Perayap untuk situs Anda, unggahan PDF dan DOCX, aturan, status pencarian dan pengindeksan.

  • PUT/v1/kb/crawler
  • POST/v1/kb/uploads
  • POST/v1/kb/rules
  • GET/v1/kb/search
Lingkup: kb:read · kb:write · files:write
Belajar mandiri

Penyetelan berjalan, siklus, riwayat, versi persona dengan rollback dan tombol pemutus.

  • POST/v1/ai/learning/tune
  • GET/v1/ai/learning/cycles
  • POST/v1/ai/learning/persona‑versions/{version}/revert
  • GET/v1/ai/learning/kill‑switch
Lingkup: ai:read · ai:write · ai:apply
Harapan untuk AI

Keinginan dengan kata‑kata sederhana → pratinjau bebas efek samping → setujui, tolak, atau kembalikan.

  • POST/v1/wishes
  • GET/v1/wishes/{id}/preview
  • POST/v1/wishes/{id}/approve
  • POST/v1/wishes/{id}/revert
Lingkup: ai:write · ai:apply
Masalah dan sinyal permintaan

Masalah cluster dengan status dan batas pembelanjaan bulanan; apa yang diminta pelanggan yang tidak Anda tawarkan.

  • GET/v1/problems
  • PATCH/v1/problems/settings
  • POST/v1/problems/{id}/status
  • GET/v1/ai/demand‑signals
Lingkup: problems:read · problems:write · ai:read
Status pelanggan

Backend Anda memasukkan status pelanggan (terdaftar, berbayar, pelanggan sejak, status layanan) dalam permintaan yang ditandatangani HMAC — AI akan mempertimbangkannya saat menjawab dan mengeskalasi.

  • POST/v1/ai/customer‑status
  • POST/v1/ai/tickets
  • GET/v1/ai/alerts
Lingkup: ai:write · ai:read
Asisten di aplikasi Anda

Pergantian dialog, penautan akun, ucapan‑ke‑teks dan teks‑ke‑ucapan, tiket aplikasi — melalui integrasi yang ditandatangani.

  • 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
Lingkup: tanda tangan integrasi (HMAC)
Pasar solusi

Asisten siap pakai berdasarkan niche: kafe, klinik, toko, layanan mobil. Terapkan dalam satu permintaan.

  • GET/v1/ai/marketplace/templates
  • POST/v1/ai/marketplace/templates/{slug}/apply
Lingkup: ai:read · ai:write
Operator AI eksternal

Bot Anda sendiri menjawab obrolan: balasan asinkron, handoff, pengujian, dan siklus hidup.

  • POST/v1/ai/replies
  • POST/v1/external‑operators/{public_id}/tests
  • POST/v1/external‑operators/{public_id}/lifecycle
Lingkup: responder:inject · responder:escalate
09

Batasan tarif

Per token, ada dua penghitung: baca dan tulis dihitung secara terpisah, sehingga jajak pendapat tidak pernah menghabiskan anggaran penulisan.

600 / menitberbunyi: DAPATKAN, KEPALA
120 / menitmenulis: POST, PATCH, PUT, HAPUS
429melebihi batas — tunggu Retry‑After
X‑RateLimit‑LimitUkuran penghitung permintaan ini dihitung (600 atau 120)
X‑RateLimit‑RemainingPermintaan tertinggal di jendela saat ini
X‑RateLimit‑ResetSaat jendela direset
Retry‑AfterPada 429: detik untuk menunggu
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 dan /v1/ai/assistant/account‑link memiliki penghitungnya sendiri; API agen dukungan dapat memiliki penggantian per widget.

10

Kesalahan

Setiap kesalahan adalah application/problem+json RFC‑7807: status dan alasan yang dapat dibaca mesin, detail yang dapat dibaca manusia.

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"
}

Nama badan yang diperlukan_scopes dan di mana memberikannya. Tidak perlu mengeluarkan ulang kuncinya.

StatusArtinya
400Permintaan salah atau kunci idempotensi yang diperlukan tidak ada
401Tidak ada token, token tidak valid atau dicabut
403Token tersebut tidak memiliki cakupan; isi menambahkan required_scopes dan di mana memberikannya
404Tidak ditemukan di widget ini
405Metode tidak diperbolehkan — berhenti dan lapor; jangan mencari tulisan alternatif
409Kunci idempotensi digunakan kembali dalam waktu 24 jam, atau terjadi konflik negara
422Validasi gagal (misalnya, kolom hanya baca dikirimkan)
429Batas tarif; hormati Coba Lagi‑Setelah
11

Idempotensi

Jaringan gagal. Kunci membuat percobaan ulang penulisan menjadi aman: operasi yang sama tidak pernah diterapkan dua kali.

  • Kirim X‑Smartbtn‑Idempotency‑Key pada setiap POST / PATCH / PUT / DELETE: UUID baru untuk operasi baru, kunci yang sama untuk mencoba ulang operasi yang sama.
  • Operasi yang ditandai x‑idempotensi: diperlukan di OpenAPI: tanpa kunci → 400, kunci digunakan kembali dalam waktu 24 jam → 409 (tidak berhasil disimpan dalam cache).
  • Tidak yakin itu berhasil? Baca negara bagiannya terlebih dahulu. Jangan pernah mengganti kunci secara otomatis; hormati Coba Lagi‑Setelah.
  • 502 dari penyedia upstream melepaskan kunci — coba lagi dengan kunci yang sama.
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"}'
# kesalahan jaringan? ulangi dengan $KEY yang sama
12

Changelog

Perubahan pada API publik dan webhook pada tahun 2026. Segala sesuatu di bawah bersifat aditif dan tetap berada di v1.

BaruTiket: tiket.webhook dibuat, antrian dibaca dengan dukungan:baca, petunjuk 403

Tiket acara langsung baru.dibuat. GET /v1/support/tickets menjawab kunci apa pun dengan support:read hingga agen dukungan dikonfigurasi. Cakupan utama dapat diedit tanpa diterbitkan ulang. 403 keuntungan yang diperlukan_scopes.

BaruNama operator AI per bahasa

POST/PATCH /v1/ai/operator menerima name_i18n; nama default diterjemahkan ke dalam bahasa widget; pilihan salam yang dapat diprediksi.

PerubahanBatas kecepatan: membaca dan menulis dihitung secara terpisah

Membaca — 600 per menit, menulis — 120. Jajak pendapat tidak lagi memakan anggaran penulisan. X‑RateLimit-* mendeskripsikan counter yang digunakan.

BaruDAPATKAN /v1/obrolan: filter yang diperbarui_since

Obrolan dengan aktivitas sejak saat itu, berapa pun usianya. Setiap obrolan sekarang membawa last_message_at.

BaruDukungan API: obrolan meminta kotak surat

chat.account.email_requested — obrolan menunggu alamatnya; agen tidak boleh memulai aliran kode lain.

BaruDukungan cakupan: tiket: tutup

Tutup tiket dan tidak ada yang lain — untuk tombol «pertanyaan terpecahkan» di backend Anda.

BaruDAPATKAN /v1/chats: pencarian teks dan pesan klien

Filter has_client_messages=1 dan q (2–100 karakter).

BaruTautan akun dari backend Anda

POST /v1/ai/assistant/account‑link dan /revoke. Mati sampai pemilik mengaktifkannya.

PerbaikiBasis pengetahuan: menulis dengan kunci yang terikat asisten

Aturan disematkan dengan tombol widget atau tombol asisten yang diaktifkan; a 502 melepaskan kunci idempotensi.

PerubahanAPI agen dukungan: akun tiket aplikasi seumur hidup

Akun tersebut terlihat saat tiket dibuka dan selama 7 hari setelahnya.

BaruAPI agen dukungan

Grup /v1/support baru: antrian, obrolan, sewa, balasan, penutupan dan pembukaan kembali tiket. Mati sampai pemilik mengaktifkannya.

BaruAPI agen dukungan: jendela kode email

Bidang code_pending, code_expires_at, last_code_result dan last_code_at.

13

plugin WordPress

Widget di situs WordPress tanpa menyentuh kode tema.

  1. Unduharsip plugin ke komputer Anda.
  2. InstalMasukkan folder yang belum dibongkar ke dalam wp‑content/plugins/ — atau unggah ke admin WordPress.
  3. AktifkanItem Smartbtn muncul di menu.
  4. Tempelkan tokennyaSalin token keamanan dari pengaturan widget di dasbor Anda.
Senang mengetahuinya

Saat Anda mengubah kata sandi, token keamanan juga berubah dan yang lama berhenti berfungsi — tempelkan yang baru ke dalam plugin.

14

Contoh kode

Cantumkan setiap obrolan dengan aktivitas sejak jajak pendapat terakhir Anda — ikuti kursor hingga akhir.

# halaman pertama
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 — dengan next_cursor dari respons
curl -G https://smartbtn.me/api/v1/chats \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  --data-urlencode "cursor=eyJpZCI6NDgyMDd9"
Siap

Keluarkan token — dan tekan Enter.