Enter tugmasini bosing.
Maʼlumotlaringizni oling.
REST API /api/v1, 53 ta soha, 239 ta oxirgi nuqta, 11 ta webhook hodisasi va vidjet uchun JS API. Chatlar, kontaktlar, AI, bilimlar bazasi, chiptalar va hisob‑kitoblar — asboblar paneli nima qilsa, sizning kodingiz ham qila oladi.
# Enter tugmasini yoki o'ngdagi belgini bosing $ curl -H "Authorization: Bearer sb_••••" \ https://smartbtn.me/api/v1/chats?limit=1
Tez boshlash
Noldan birinchi javobgacha uch qadam. Har bir so'rov bitta vidjetga bog'langan va tashuvchi tokeni bilan autentifikatsiya qilingan.
- Token chiqaringBoshqaruv paneli → API tokenlari: nom, ixtiyoriy amal qilish muddati va sizga kerak bo‘lgan qamrovlar. Token aynan bitta vidjetga tegishli. Oddiy matnli token bir marta ko'rsatiladi; Smartbtn faqat bir tomonlama xeshni saqlaydi, shuning uchun yo'qolgan tokenni tiklab bo'lmaydi - faqat bekor qilinadi va qayta chiqariladi.
- Vidjet API‑ni yoqingVidjet sozlamalarida "Vidjet API‑ga ruxsat berish (JS va REST)" ni yoqing. Token chiqarish bu kalitni siz uchun aylantirmaydi.
- Birinchi so'rovni yuboringToken faqat
Authorizationsarlavhasiga kiradi - hech qachon URL manziliga kirmaydi.
# vidjet chatlarini ro'yxatga kiriting curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \ https://smartbtn.me/api/v1/chats
// 200 OK · kursorni sahifalash { "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ], "next_cursor": "eyJpZCI6NDgyMTB9" // null — oxirgi sahifada }
https://smartbtn.me/api/v1 barcha loyiha maʼlumotlari uchun asosiy API yakuniy nuqtasidir. Har doim so'rovlarni HTTPS orqali yuboring va hech qachon tokenni qayta yo'naltirishga yo'naltirmang.application/problem+json korpusli 401 yoki 403 olasizmi — qarang: r.Autentifikatsiya
Kim kimni chaqirganiga qarab uchta yo'l. Kirish sukut bo'yicha rad etiladi: qamrov yo'q - qo'ng'iroq yo'q.
Har bir so'rovda Authorization: Bearer mavjud. Serverda token bitta vidjetga va uning qamroviga hal qilinadi.
Chiquvchi soʻrovlar har bir ijarachi siri bilan imzolanadi: X‑Smartbtn‑Signature. Agar sizning tomoningizga kerak bo'lsa, qo'shimcha tashuvchining hisob ma'lumotlari qo'shilishi mumkin.
POST /v1/ai/replies AI operatori va vidjetingizga biriktirilgan va mustahkam causation_id bilan kalitlangan o‘zining imzolangan ramkasidan foydalanadi.
O'zgartiruvchi odamlar unutishadi
Vidjet sozlamalaridagi «Vidjet API (JS va REST) ruxsat berish» REST API va vidjet JS API ni ochadi. Tokenni chiqarish uni faollashtirmaydi. Mavjud kalitning qamrovini asboblar panelida tahrirlash mumkin (API tokenlari → kalit → Qo‘llanish doirasini tahrirlash) qayta chiqarmasdan - integratsiya ishlashda davom etadi.
Oldindan sozlash
| Oldindan oʻrnatilgan | Qo'llash sohalari | Qachon |
|---|---|---|
| AI sozlamalari 9 | widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:read | Sizning AI ilovangiz vidjetni sozlaydi: yordamchi, bilimlar bazasi, matnlar. Butun doira tanlashni almashtiradi. |
| Faqat o'qish uchun (misol to'plami) | chats:read · messages:read · contacts:read · stats:read | Boshqaruv paneli, BI, eksport. |
| Yordam xizmati ko'prigi (misol to'plami) | chats:read · messages:read · messages:write · webhooks:write · support:read | Muloqot oynalari va chiptalarni CRM‑ga aks ettiring. |
ai:credentials:writega faqat egasi provayder kalitini sozlashga ruxsat berganida ruxsat bering. AIni sozlash uchun hisob, billing va hamkor huquqlari kerak emas. Kalit bir marta ko'rsatiladi - sozlash tugagach, uni bekor qiling.Qo'llash sohalari
53 ta marshrut doirasi, bundan tashqari bitta shartli va bitta zaxiralangan. Agar token marshrut doirasini (yoki sanab o'tilgan muqobilni) ushlab tursa, so'rov muvaffaqiyatli bo'ladi.
| Qo'llash doirasi | Grantlar |
|---|---|
| chats · 2 | |
| chats:read | Chatlarni va ularning metama'lumotlarini o'qing |
| chats:write | Suhbatni yoping, reyting so'rang, agentni o'tkazing, da'vo qiling, biriktiring yoki ajrating |
| messages · 2 | |
| messages:read | Chat xabarlari tarixini o'qing |
| messages:write | Agent sifatida xabarlar yuboring, indikatorlarni kiriting va o'qish kvitansiyasini yuboring |
| contacts · 2 | |
| contacts:read | Kontaktlarni o'qing |
| contacts:write | Kontakt maydonlari va atributlarini yangilang |
| agents · 3 | |
| agents:read | Agentlar va ularning mavjudligini o'qing |
| agents:writesezgir | Agentlarni taklif qilish, yangilash, to'xtatib turish, tiklash yoki olib tashlash; taklif qilingan kishi vidjetning har bir suhbatini ko'radi |
| agents:events:read | Agentning voqealar jurnalini va har bir agent ko'rsatkichlarini o'qing |
| tags · 2 | |
| tags:read | Teglarni o'qing |
| tags:write | Kontaktga teglar biriktiring |
| files · 2 | |
| files:read | Yuklangan faylni yuklab oling |
| files:write | Yangi fayl yuklang |
| stats · 1 | |
| stats:read | Umumiy chat, xabar va reyting statistikasini oʻqing |
| channels · 3 | |
| channels:read | Maxsus kanalning onlayn holatini o'qing |
| channels:write | Maxsus kanalda kiruvchi xabarni yetkazing |
| channels:register | Yangi maxsus kanalni roʻyxatdan oʻtkazing (faqat oʻrnatilgan ilovalar) |
| webhooks · 2 | |
| webhooks:read | Webhook obunalarini ro'yxatlash |
| webhooks:write | Obuna yaratish, o‘chirish yoki qayta yetkazib berish |
| quick_phrases · 2 | |
| quick_phrases:read | Agentning tezkor iboralarini o'qing |
| quick_phrases:write | Tezkor iboralarni yaratish, tahrirlash yoki o'chirish |
| ratings · 1 | |
| ratings:read | Mehmonlar reytingini va qaysi agentning har biri ball olganini o'qing |
| responder · 2 | |
| responder:injectsezgir | Tashqi AI operatori yoki bot sifatida jonli chatga javob kiriting |
| responder:escalateshartli | POST /v1/ai/replies uchun: escalate=true orqali qo'ng'iroq qiluvchiga yo'naltirilgan uzatish |
| widget · 2 | |
| widget:read | Vidjet ko‘rinishi, xatti‑harakati va o‘rnatish sozlamalarini o‘qing |
| widget:write | Vidjet sozlamalarini yangilang va vidjet keshini tozalang |
| departments · 2 | |
| departments:read | Bo'limlar, ularning agentlari va jadvallarini o'qing |
| departments:write | Bo'limlar va jadvallarni yaratish, yangilash yoki o'chirish |
| messengers · 2 | |
| messengers:read | Qaysi messenjerlar ulanganligini o'qing (hech qachon hisob ma'lumotlari) |
| messengers:writesezgir | Messenjerni ulash yoki o'chirish; provayder hisob ma'lumotlarini yozadi |
| ai · 4 | |
| ai:read | AI yordamchilari, ularning konfiguratsiyasi va ogohlantirishlarini o'qing |
| ai:write | Yordamchilar, AI sozlamalari va AI operatorlari, persona va taklifni yarating va yangilang |
| ai:credentials:writesezgir | Uchinchi tomon LLM provayderi hisob ma'lumotlarini saqlang (BYOK) |
| ai:apply | Jonli yordamchining shaxsini qayta yozadigan yaxshilanishni tasdiqlang |
| kb · 2 | |
| kb:read | Bilimlar bazasi qoidalarini va kiritilgan manbalarni o'qing |
| kb:write | KB qoidalari va manbalarini yarating, yangilang yoki o'chiring |
| transcripts · 1 | |
| transcripts:read | Suhbat transkriptini eksport qiling |
| account · 2 | |
| account:read | Hisob profilini va uning barcha yuridik shaxslarini o'qing |
| account:write | Faqat hisob nomi, familiyasi va telefonini yangilang |
| billing · 2 | |
| billing:read | Vidjetning hisob‑kitob yozuvlarini va yuridik shaxslarni o'qing |
| billing:write | Yuridik shaxslarni yaratish, yangilash, yo'q qilish; hisob‑fakturalarni bermaydi, pul o'tkazmaydi |
| partners · 2 | |
| partners:read | Hamkor va tavsiya ma'lumotlarini o'qing |
| partners:withdrawzaxiralangan | Zaxiralangan: bugungi kunda hech qanday to'lov operatsiyasi foydalanmaydi |
| support · 4 | |
| support:read | Chiptalarni, faol chatlarni, ularning xabarlarini va tekshirilgan harakatlaringizni o'qing |
| support:replysezgir | Qo'llab‑quvvatlash operatori sifatida mijozga javob bering |
| support:write | Chatni daʼvo qiling yoki qoʻyib yuboring, javobsiz yoping, qayta oching |
| support:tickets:close | Faqat chiptani yoping - boshqa hech narsa |
| marketing · 2 | |
| marketing:read | Marketing kampaniyalarini o'qing: bannerlar, qalqib chiquvchi oynalar, elektron pochta |
| marketing:write | Kampaniyalarni yarating va tahrirlang, holatni o'zgartiring, elektron pochta xabarini yuboring |
| broadcasts · 2 | |
| broadcasts:read | Messenjer translyatsiyalarini o'qish (WhatsApp, Telegram, Messenger, Viber, VK, MAX) |
| broadcasts:write | Efir yaratish, tahrirlash va boshlash |
| problems · 2 | |
| problems:read | Mijoz muammosi klasterlari va sozlamalarini o'qing |
| problems:write | Sozlamalarni va klaster holatini o'zgartirish: yangi, davom etayotgan, hal qilingan, takrorlanuvchi |
| invitations · 2 | |
| invitations:read | Taklif qoidalari, A/B variantlari, andozalar va huni bilan tanishing |
| invitations:write | Qoidalar va shablonlarni yaratish, tahrirlash, yoqish yoki o'chirish |
Yakuniy nuqtalar
Bir ro'yxatda butun jamoatchilik yuzasi. Resurs bo'yicha filtrlang, yo'l bo'yicha qidiring, tayyor jingalakni nusxalash uchun qatorni bosing.
ai Yordamchilar, operatorlar, kalitlar, o'rganish, bozor54
chats Dialoglar, xabarlar, uzatish, reytinglar18
kb Bilimlar bazasi: qoidalar, brauzer, fayllar, qidiruv16
agents Agentlar, taklifnomalar, ko'rsatkichlar14
messengers Messenjerlar, ijtimoiy tarmoqlar va bozor kanallari13
billing Balans, obunalar, hisob‑fakturalar, ob'ektlar12
support Yordam agenti: chiptalar va suhbatlar12
widget Sozlamalar, til, tarjimalar, terilar, kesh12
channels Maxsus kanallar8
external‑operators Sizning botingiz operator sifatida8
webhook‑subscriptions Webhook obunalari8
broadcasts Messenger translyatsiyalari7
departments Bo'limlar va jadval7
invitations Aqlli taklifnomalar7
marketing Marketing kampaniyalari7
partner Hamkorlik dasturi7
wishes AI uchun tilaklar7
contacts Kontaktlar va teglar5
problems Mijoz muammolarini tahlil qilish4
quick‑phrases Tezkor iboralar4
compat Migratsiya mosligi3
stats Statistika3
account Hisob2
files Fayllar2
ratings Reytinglar1
tags Teglar1
v1 1
webhook‑events Tadbirlar katalogi1
Yo'llar https://smartbtn.me/api ga nisbatan. Yozish uchun Content‑Type: application/json va X‑Smartbtn‑Idempotency‑Key kerak. compat guruhi boshqa chat platformasidan harakatlanuvchi jamoalar uchun moslik qatlamidir.
Webhuklar
Obuna boʻlgan voqea sodir boʻlganda URL manzilingizga imzolangan JSON POST. Obunalarni /v1/webhook‑subscriptions yoki asboblar paneli orqali boshqaring.
{
"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"
}
}sababi: human_request | billing | ai_unresolved | action_request | …; ustuvorlik: yuqori | normal; manba: chat | ilova | sayt. Chipta va uning dialog oynasini GET /v1/support/tickets/{number} bilan o'qing.
Yetkazib berish sarlavhalari
| X‑Smartbtn‑Event | Tadbir turi, masalan. message.created. |
| X‑Smartbtn‑Signature | sha256=v1: xom tananing. |
| X‑Smartbtn‑Idempotency‑Key | Har bir hodisa uchun bitta qiymat, qayta urinishlar davomida barqaror. Unga ishoning. |
| X‑Smartbtn‑Delivery | Yetkazib berish urinishida bitta qiymat — jurnallaringiz uchun. |
| X‑Smartbtn‑Timestamp | Unix yuborish vaqti. Axborot, imzolanmagan. |
Imzoni tekshirish
xom korpusning HMAC‑SHA256 (qabul qilingan baytlar, JSON tahlilidan oldin) oxirgi nuqta siringiz bilan; doimiy vaqtda solishtiring. Yashirin obuna yaratilganda bir marta ko'rsatiladi; uni POST /v1/webhook‑subscriptions/{id}/rotate‑secret bilan aylantiring.
// Node.js · masalan, sir o‘rin tutuvchidir 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; }
Qayta urinish va buyurtma
- 4 urinishgacha (birinchi yuborish plyus 3 marta urinish), orqaga qaytish
min(60, 2^urinish × 5)s — taxminan 10, 20, 40 s. - 2xx bo'lmagan yoki vaqt tugashi muvaffaqiyatsiz urinish sifatida hisoblanadi. Muvaffaqiyatsiz yetkazib berishlarni
POST /v1/webhook‑subscriptions/{id}/redeliverbilan qayta yuborish mumkin — bir xil identifikator kaliti, yangi yetkazib berish identifikatori. - Yetkazib berish kamida bir marta amalga oshiriladi va buyurtma berilmagan. Foydali yuklar minimal - to'liq yozuvlar emas, idlar; REST API orqali tafsilotlarni olish.
JS API
Mehmon haqida allaqachon bilganingizni to'g'ridan‑to'g'ri agentga uzating. Qo'ng'iroqlar faqat vidjet sozlamalarida o'rnatilgan domendan qabul qilinadi.
smartbtn_widget_api.setContactInfo(info)
Tashrifchining aloqa ma'lumotlarini o'rnatadi. Agent buni xuddi tashrifchi kirish shaklini to'ldirgandek ko'radi. Smartbtn‑da ism, telefon va elektron pochta alohida rol o'ynaydi - shuning uchun alohida usul.
| Ism | Turi | Tavsif |
|---|---|---|
| name | string | Mehmon nomi |
| string | Mehmon elektron pochtasi | |
| phone | string | Mehmon telefoni |
| description | string | Mijoz haqida har qanday qo'shimcha ma'lumot |
Smartbtn_api.setClientInfo({ name: "Aleks Morgan", email: "email@example.com", phone: "+17584987855", description: "Description text" });
smartbtn_widget_api.setCustomData(fields)
Agent ilovasining oʻng tomonidagi maʼlumotlar paneli uchun qoʻshimcha maʼlumotlar. Istaganingizcha tez‑tez qo'ng'iroq qiling - ochiq muloqot oynasida panel real vaqtda yangilanadi. Maydonlar massiv tartibida ko'rsatilgan.
| Ism | Turi | Tavsif |
|---|---|---|
| fields | array | Ma'lumotlar maydonlari ro'yxati |
| field.title | string | Maydon ustidagi sarlavha |
| field.content | string | Maydon tarkibi; teglar qochib ketadi |
| field.link | string | URL bosish orqali ochiladi |
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()
Vidjet mavzusini sahifani qayta yuklamasdan tezda almashtiring (klassik, minimal, capsule, liquid) yoki chat oynasini dasturiy tarzda boshqaring. Har bir loyihani doimiy sozlash uchun bir xil maydonlarni PATCH /v1/widget/settings ga o'tkazing.
// JS API · real vaqtda sahifadagi terini almashtirish smartbtn_widget_api.setSkin("minimal"); smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "~1 soniyada javoblar" }); // REST API · PATCH /v1/widget/settings (qamrovi 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": "Onlayn 24/7" }
widget_api_contact_sync yoqilgan bo'lsa, bu qo'ng'iroqlar contact.updated veb‑hukni ham ishga tushiradi.Support‑agent API
Avtomatlashtirilgan qo'llab‑quvvatlash agenti chiptalar navbatini va mijozlar suhbatlarini ishlaydi: suhbatni qabul qiladi, sizning insoniy yordam operatoringiz sifatida javob beradi, chiptani yopadi. Vidjet egasi uni yoqmaguncha oʻchiring.
- Egasi bunga ruxsat beradiQo'llab‑quvvatlash agentlari sifatida ishlashga ruxsat berilgan tokenlar va ular qo'ng'iroq qilishlari mumkin bo'lgan IP‑lar ro'yxati.
- Navbatni o'qing
GET /v1/support/tickets·GET /v1/support/chats - Suhbatni ijaraga oling
POST …/chats/{id}/claim·…/release - Javob beringOddiy matn, faqat vidjetning ruxsat etilgan xostlariga havolalar.
201xabar faqat bir marta saqlangan. - Yopish yoki qayta ochish
POST …/tickets/{number}/close·…/reopen
| Qo'llash doirasi | Ruxsat beradi |
|---|---|
| support:read | Chiptalar, faol chatlar, mijoz / ai / qo'llab‑quvvatlash / tizim etiketli xabarlar, o'z tekshirilgan harakatlar |
| support:write | Suhbatni da'vo qilish / qo'yib yuborish, javobsiz yopish, qayta ochish |
| support:reply | Mijozga qo'llab‑quvvatlash operatori sifatida javob bering (sezgir) |
| support:tickets:close | Faqat chiptani yoping — orqa tomoningizdagi “savol echildi” tugmasi uchun |
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":"Bajarildi, kirish tiklandi."}'
AI API
Boshqaruv panelining AI bo'limi bajaradigan hamma narsa: yordamchilar, shaxsiy provayder kalitlari, bilimlar bazasi, orqaga qaytish bilan o'z‑o'zini o'rganish, istaklar, muammolar, talab signallari va ilovangiz ichidagi yordamchi.
O'z roli va tiliga ega bo'lgan bir nechta yordamchilar, jonli efirga chiqishdan oldin test, har bir til uchun operatorlar nomlanadi.
- GET/v1/ai/assistants
- POST/v1/ai/assistants/{id}/test
- PATCH/v1/ai/operators/{id}
- POST/v1/ai/handoff
Klod, ChatGPT, DeepSeek, Gemini, Mistral, mintaqaviy LLMlar yoki OpenAI‑ga mos keladigan har qanday. Modellar har bir kalit uchun keltirilgan.
- GET/v1/ai/credentials
- POST/v1/ai/credentials
- GET/v1/ai/credentials/{id}/models
Saytingiz uchun brauzer, PDF va DOCX yuklamalari, qoidalar, qidiruv va indekslash holati.
- PUT/v1/kb/crawler
- POST/v1/kb/uploads
- POST/v1/kb/rules
- GET/v1/kb/search
Tyuning yugurishlari, tsikllar, tarix, orqaga qaytarish va o'chirish tugmasi bilan persona versiyalari.
- POST/v1/ai/learning/tune
- GET/v1/ai/learning/cycles
- POST/v1/ai/learning/persona‑versions/{version}/revert
- GET/v1/ai/learning/kill‑switch
Oddiy so'zdagi tilak → nojo'ya ta'sirlarsiz oldindan ko'rish → ma'qullash, rad etish yoki qaytarish.
- POST/v1/wishes
- GET/v1/wishes/{id}/preview
- POST/v1/wishes/{id}/approve
- POST/v1/wishes/{id}/revert
Statuslar va oylik xarajatlar chegarasi bilan muammoli klasterlar; mijozlar nimani so'rashini siz taklif qilmaysiz.
- GET/v1/problems
- PATCH/v1/problems/settings
- POST/v1/problems/{id}/status
- GET/v1/ai/demand‑signals
Sizning serveringiz mijoz holatini (roʻyxatdan oʻtgan, toʻlangan, mijoz, xizmat koʻrsatish holati) HMAC imzosi bilan imzolangan soʻrovda koʻrsatadi — AI javob berayotganda va koʻtarilayotganda uni oʻlchaydi.
- POST/v1/ai/customer‑status
- POST/v1/ai/tickets
- GET/v1/ai/alerts
Imzolangan integratsiya orqali dialog oynasi, hisobni ulash, nutqdan matnga va matndan nutqqa, ilova chiptalari.
- 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
Joy bo'yicha tayyor yordamchilar: kafe, klinika, do'kon, avtoservis. Bitta so'rovda murojaat qiling.
- GET/v1/ai/marketplace/templates
- POST/v1/ai/marketplace/templates/{slug}/apply
O'zingizning botingiz suhbatlarga javob beradi: asinxron javoblar, topshirish, testlar va hayot aylanishi.
- POST/v1/ai/replies
- POST/v1/external‑operators/{public_id}/tests
- POST/v1/external‑operators/{public_id}/lifecycle
Tarif cheklovlari
Token uchun ikkita hisoblagich: o'qish va yozish bir‑biridan ajratiladi, shuning uchun so'rov hech qachon yozish byudjetini yemaydi.
| X‑RateLimit‑Limit | Ushbu so'rov hisobga olingan hisoblagichning o'lchami (600 yoki 120) |
| X‑RateLimit‑Remaining | Joriy oynada qoldirilgan so'rovlar |
| X‑RateLimit‑Reset | Oyna qayta tiklanganda |
| Retry‑After | 429‑da: kutish uchun soniya |
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 va /v1/ai/assistant/account‑link o'z hisoblagichlariga ega; qo'llab‑quvvatlash agenti API har bir vidjetni bekor qilishi mumkin.
Xatolar
Har bir xato RFC‑7807 application/problem+json: mashina o‘qiy oladigan holat va sabab, odam o‘qiy oladigan tafsilot.
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" }
Tana shartli_skoplarni va ularni qayerda berishni nomlaydi. Kalitni qayta chiqarish shart emas.
| Status | Ma'nosi |
|---|---|
| 400 | Noto'g'ri so'rov yoki kerakli identifikator kaliti yo'q |
| 401 | Token yoʻq, yaroqsiz yoki bekor qilingan token |
| 403 | Tokenning qamrovi yo'q; tana required_scopes va uni qaerga berish kerakligini qo'shadi |
| 404 | Bu vidjetda topilmadi |
| 405 | Ruxsat berilmagan usul - to'xtatish va hisobot berish; muqobil yozuvlarni qidirmang |
| 409 | Imkoniyatsizlik kaliti 24 soat ichida qayta ishlatiladi yoki holatdagi ziddiyat |
| 422 | Tasdiqlash amalga oshmadi (masalan, faqat o‘qish uchun maydon yuborilgan) |
| 429 | Tarif chegarasi; Qayta urinish‑Keyin hurmat qiling |
Idroksizlik
Tarmoqlar muvaffaqiyatsiz. Kalit qayta urinilgan yozishni xavfsiz qiladi: bir xil operatsiya hech qachon ikki marta qo'llanilmaydi.
- Har bir POST / PATCH / PUT / DELETE da
X‑Smartbtn‑Idempotency‑Keyyuboring: yangi operatsiya uchun yangi UUID, bir xilni qayta urinish uchun bir xil kalit. - OpenAPI da
x‑idempotency: requireddeb belgilangan operatsiyalar: kalit yoʻq → 400, kalit 24 soat ichida qayta ishlatiladi → 409 (keshlangan muvaffaqiyat emas). - Ishonchingiz komil emasmi? Avval davlatni o'qing. Hech qachon kalitni avtomatik ravishda o'zgartirmang; Qayta urinish‑Keyin hurmat qiling.
- Yuqori oqim provayderidan
502kalitni chiqaradi — xuddi shu kalit bilan qayta urinib ko'ring.
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"}' # tarmoq xatosi? bir xil $KEY bilan takrorlang
Changelog
2026‑yilda umumiy API va vebhuklarga o‘zgartirishlar. Quyida hamma narsa qo‘shimcha va v1 da qoladi.
Yangi jonli tadbir chiptasi.created. GET /v1/support/tickets qo'llab‑quvvatlash bilan har qanday kalitga javob beradi: qo'llab‑quvvatlash agenti sozlanmaguncha o'qing. Asosiy doiralar qayta chiqarilmasdan tahrirlanishi mumkin. 403 ta daromad zarur_ko'lamlar.
POST/PATCH /v1/ai/operatorlar name_i18n qabul qiladi; standart nomlar vidjet tiliga tarjima qilinadi; bashorat qilinadigan salomlashish tanlovi.
O'qiydi - daqiqasiga 600, yozadi - 120. So'rovnoma endi yozish byudjetini yemaydi. X‑RateLimit-* ishlatilgan hisoblagichni tavsiflang.
Qanchalik eski bo'lmasin, bir lahzadan beri faollik bilan suhbatlar. Endi har bir chatda last_message_at mavjud.
chat.account.email_requested — chat manzilni kutmoqda; agentlar boshqa kod oqimini boshlamasligi kerak.
Chiptani yoping va boshqa hech narsa qilmang - orqa tarafdagi "savol echildi" tugmasi uchun.
Filtrlar has_client_messages=1 va q (2–100 belgi).
POST /v1/ai/assistant/hisob‑havola va/bekor qilish. Egasi ruxsat bermaguncha o'chiring.
Qoidalar vidjet kaliti yoki yoqilgan yordamchi kalit bilan o'rnatilgan; a 502 idempotent kalitni chiqaradi.
Hisob chipta ochiq bo'lganda va undan keyin 7 kun davomida ko'rinadi.
Yangi /v1/quvvatlash guruhi: navbat, chatlar, ijaralar, javoblar, chiptalarni yopish va qayta ochish. Egasi ruxsat bermaguncha o'chiring.
Maydonlar code_kuting, code_expires_at, last_code_result va last_code_at.
WordPress plagin
Mavzu kodiga tegmasdan WordPress saytidagi vidjet.
- Yuklab olingplagin arxivini kompyuteringizga yuklang.
- O'rnatishOchilmagan jildni
wp‑content/plugins/-ga joylashtiring yoki uni WordPress administratoriga yuklang. - FaollashtirishMenyuda Smartbtn elementi paydo bo'ladi.
- Tokenni joylashtiringXavfsizlik tokenini asboblar panelidagi vidjet sozlamalaridan nusxa oling.
Parolingizni o'zgartirganingizda, xavfsizlik belgisi ham o'zgaradi va eskisi ishlashni to'xtatadi - yangisini plaginga joylashtiring.
Kod namunalari
Oxirgi so'rovingizdan keyingi har bir chatni ro'yxatlang - kursorni oxirigacha kuzatib boring.
# birinchi sahifa curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "updated_since=2026-10-17T09:00:00+03:00" # keyingi — javobdan keyingi_kursor bilan curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "cursor=eyJpZCI6NDgyMDd9"