Funkcjesztuczna inteligencjaPulpit nawigacyjnyAPICenyPobierzPomoc
Wygląd (Auto: light)
Wypróbuj za darmo
Dom / API
API i programiści

Naciśnij Enter.
Uzyskaj swoje dane.

REST API /api/v1, 53 zakresy, 239 punktów końcowych, 11 zdarzeń webhook i API JS dla widgetu. Czaty, kontakty, sztuczna inteligencja, baza wiedzy, zgłoszenia i rozliczenia — cokolwiek robi panel, Twój kod też może to zrobić.

smartbtn.me/api/v1
# naciśnij Enter lub znak po prawej stronie
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

Szybki start

Trzy kroki od zera do pierwszej odpowiedzi. Każde żądanie jest powiązane z jednym widżetem i uwierzytelniane za pomocą tokena na okaziciela.

  1. Wydaj tokenPanel → Tokeny API: nazwa, opcjonalny okres ważności i potrzebne zakresy. Token należy do dokładnie jednego widgetu. Token w postaci zwykłego tekstu jest wyświetlany raz; Smartbtn przechowuje tylko jednokierunkowy skrót, więc utraconego tokena nie można odzyskać – można go jedynie unieważnić i ponownie wystawić.
  2. Włącz API widżetuW ustawieniach widgetu włącz opcję „Zezwalaj na API widgetów (JS i REST)”. Wydanie tokena nie powoduje przełączenia tego przełącznika za Ciebie.
  3. Wyślij pierwszą prośbęToken trafia tylko do nagłówka Authorization — nigdy do adresu URL.
# wyświetl listę czatów widżetu
curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \
     https://smartbtn.me/api/v1/chats
// 200 OK · paginacja kursora
{
  "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ],
  "next_cursor": "eyJpZCI6NDgyMTB9"   // null — na ostatniej stronie
}
Zweryfikowany podstawowy adres URL. https://smartbtn.me/api/v1 to główny punkt końcowy interfejsu API dla wszystkich danych projektu. Zawsze wysyłaj żądania przez HTTPS i nigdy nie przesyłaj dalej tokena w przypadku przekierowań.
Brakujący, nieprawidłowy lub mający ograniczony zakres token? Otrzymujesz 401 lub 403 z treścią application/problem+json RFC‑7807 — zobacz Błędy.
02

Uwierzytelnianie

Trzy ścieżki, w zależności od tego, kto do kogo dzwoni. Dostęp jest domyślnie odmowy: brak zakresu — brak połączenia.

Ty → Smartbtn
Połączenia REST

Każde żądanie zawiera Autoryzację: Bearer . Na serwerze token jest rozpoznawany jako jeden widget i jego zakresy.

Smartbtn → ty
Webhooki, zewnętrzny operator AI

Żądania wychodzące są podpisane tajemnicą przypadającą na dzierżawcę: X‑Smartbtn‑Signature. Można dodać dodatkowe dane uwierzytelniające na okaziciela, jeśli Twoja strona ich potrzebuje.

Twój operator AI → Smartbtn
Odpowiedzi asynchroniczne

POST /v1/ai/replies wykorzystuje własną podpisaną ramkę, przypinaną do operatora AI i widżetu oraz kluczowaną przez trwały causation_id.

Przełącznik, o którym ludzie zapominają

«Zezwól na API widgetów (JS i REST)» w ustawieniach widgetu otwiera zarówno API REST, jak i API widgetu JS. Wydanie tokena nie umożliwia takiej możliwości. Zakresy istniejącego klucza można edytować w panelu kontrolnym (tokeny API → klucz → Edytuj zakresy) bez ponownego wydawania – integracje działają dalej.

Ustawienia wstępne

Wstępnie ustawioneZakresyKiedy
Konfiguracja AI 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:readTwoja aplikacja AI konfiguruje widżet: asystenta, bazę wiedzy, teksty. Zastępuje cały wybór zakresu.
Tylko do odczytu (zestaw przykładowy)chats:read · messages:read · contacts:read · stats:readDashboardy, BI, eksport.
Mostek Helpdesk (przykładowy zestaw)chats:read · messages:read · messages:write · webhooks:write · support:readOdbij okna dialogowe i zgłoszenia w swoim systemie CRM.
Klucze dostawcy są oddzielne. Przyznaj ai:credentials:write tylko wtedy, gdy właściciel autoryzuje konfigurację klucza dostawcy. Do konfiguracji AI nie są potrzebne uprawnienia do konta, rozliczeń ani partnera. Klucz zostanie wyświetlony raz — unieważnij go po zakończeniu konfiguracji.
03

Zakresy

53 zakresy tras, plus jeden warunkowy i jeden zarezerwowany. Żądanie powiedzie się tylko wtedy, gdy token zawiera zakres trasy (lub wymienioną alternatywę).

53 + 1 warunkowy + 1 zarezerwowany
wrażliwywarunkowyzarezerwowane
ZakresDotacje
chats · 2
chats:readPrzeczytaj czaty i ich metadane
chats:writeZamknij czat, poproś o ocenę, przenieś, zgłoś wniosek, dołącz lub odłącz agenta
messages · 2
messages:readPrzeczytaj historię wiadomości czatu
messages:writeWysyłaj wiadomości, wpisz wskaźniki i potwierdzenia przeczytania jako agent
contacts · 2
contacts:readPrzeczytaj kontakty
contacts:writeZaktualizuj pola i atrybuty kontaktów
agents · 3
agents:readPrzeczytaj agentów i ich obecność
agents:writewrażliwyZapraszaj, aktualizuj, zawieszaj, przywracaj lub usuwaj agentów; zaproszona osoba widzi każdy czat widżetu
agents:events:readPrzeczytaj dziennik zdarzeń agenta i metryki poszczególnych agentów
tags · 2
tags:readCzytaj tagi
tags:writeDołącz tagi do kontaktu
files · 2
files:readPobierz przesłany plik
files:writePrześlij nowy plik
stats · 1
stats:readPrzeczytaj zbiorcze statystyki czatów, wiadomości i ocen
channels · 3
channels:readPrzeczytaj status online kanału niestandardowego
channels:writeDostarcz wiadomość przychodzącą na niestandardowym kanale
channels:registerZarejestruj nowy kanał niestandardowy (tylko zainstalowane aplikacje)
webhooks · 2
webhooks:readLista subskrypcji webhooka
webhooks:writeUtwórz, usuń lub ponownie dostarcz subskrypcję
quick_phrases · 2
quick_phrases:readPrzeczytaj krótkie frazy agenta
quick_phrases:writeTwórz, edytuj lub usuwaj szybkie frazy
ratings · 1
ratings:readZapoznaj się z ocenami gości i oceną każdego agenta
responder · 2
responder:injectwrażliwyWstaw odpowiedź na czacie na żywo jako zewnętrzny operator AI lub bot
responder:escalatewarunkowyDla POST /v1/ai/replies: przekazywanie kierowane do rozmówcy poprzez escalate=true
widget · 2
widget:readPrzeczytaj wygląd, zachowanie i ustawienia widżetu
widget:writeZaktualizuj ustawienia widżetu i wyczyść pamięć podręczną widżetów
departments · 2
departments:readPrzeczytaj działy, ich agentów i harmonogramy
departments:writeTwórz, aktualizuj lub usuwaj działy i harmonogramy
messengers · 2
messengers:readPrzeczytaj, którzy komunikatorzy są połączeni (nigdy dane uwierzytelniające)
messengers:writewrażliwyPodłącz lub odłącz komunikator; zapisuje dane uwierzytelniające dostawcy
ai · 4
ai:readPrzeczytaj asystentów AI, ich konfigurację i alerty
ai:writeTwórz i aktualizuj asystentów, ustawienia AI i operatorów AI, osobowość i podpowiedzi
ai:credentials:writewrażliwyPrzechowuj dane uwierzytelniające zewnętrznego dostawcy LLM (BYOK)
ai:applyZatwierdź ulepszenie, które zmienia osobowość asystenta na żywo
kb · 2
kb:readPrzeczytaj reguły bazy wiedzy i przetworzone źródła
kb:writeTwórz, aktualizuj lub usuwaj reguły i źródła KB
transcripts · 1
transcripts:readEksportuj transkrypcję czatu
account · 2
account:readPrzeczytaj profil konta i wszystkie jego podmioty prawne
account:writeAktualizuj tylko imię, nazwisko i telefon konta
billing · 2
billing:readPrzeczytaj zapisy rozliczeniowe widżetu i osoby prawne
billing:writeTwórz, aktualizuj, usuwaj osoby prawne; nie wystawia żadnych faktur, nie przekazuje pieniędzy
partners · 2
partners:readPrzeczytaj dane partnerów i poleceń
partners:withdrawzarezerwowaneZarezerwowane: obecnie nie jest używana żadna operacja wypłaty
support · 4
support:readCzytaj zgłoszenia, aktywne czaty, ich wiadomości i własne kontrolowane działania
support:replywrażliwyOdpowiedz klientowi jako operator wsparcia
support:writeOdbierz lub rozłącz czat, zamknij bez odpowiedzi, otwórz ponownie
support:tickets:closeZamknij tylko bilet — nic więcej
marketing · 2
marketing:readCzytaj kampanie marketingowe: banery, pop‑upy, e‑maile
marketing:writeTwórz i edytuj kampanie, zmieniaj status, rozpocznij wysyłanie e‑maili
broadcasts · 2
broadcasts:readCzytaj transmisje komunikatorów (WhatsApp, Telegram, Messenger, Viber, VK, MAX)
broadcasts:writeTwórz, edytuj i rozpocznij transmisję
problems · 2
problems:readPrzeczytaj klastry i ustawienia problemów klientów
problems:writeZmień ustawienia i status klastra: nowy, w toku, rozwiązany, cykliczny
invitations · 2
invitations:readPrzeczytaj zasady zaproszeń, warianty A/B, szablony i lejek
invitations:writeTwórz, edytuj, włączaj lub usuwaj reguły i szablony
04

Punkty końcowe

Cała powierzchnia publiczna na jednej liście. Filtruj według zasobu, szukaj według ścieżki, kliknij wiersz, aby skopiować gotowy zawinięcie.

Wyświetlanie 245 z 245
GETPOSTPUTPATCHDELETE

ai Asystenci, operatorzy, klucze, nauka, rynek54

chats Dialogi, wiadomości, transfer, oceny18

kb Baza wiedzy: reguły, crawler, pliki, wyszukiwanie16

agents Agenci, zaproszenia, metryki14

messengers Komunikatory, sieci społecznościowe i kanały rynkowe13

billing Saldo, subskrypcje, faktury, podmioty12

support Agent wsparcia: bilety i czaty12

widget Ustawienia, język, tłumaczenia, skórki, pamięć podręczna12

channels Kanały niestandardowe8

external‑operators Twój bot jako operator8

webhook‑subscriptions Subskrypcje webhooków8

broadcasts Transmisje na Messengerze7

departments Działy i harmonogram7

invitations Inteligentne zaproszenia7

marketing Kampanie marketingowe7

partner Program partnerski7

wishes Życzenia dla AI7

contacts Kontakty i tagi5

problems Analiza problemów klientów4

quick‑phrases Szybkie frazy4

compat Zgodność migracji3

stats Statystyki3

account Konto2

files Pliki2

ratings Oceny1

tags Tagi1

v1 1

webhook‑events Katalog wydarzeń1

Ścieżki są zależne od https://smartbtn.me/api. Zapisy wymagają Content‑Type: application/json i X‑Smartbtn‑Idempotency‑Key. Grupa compat to warstwa zgodności dla zespołów przenoszących się z innej platformy czatu.

05

Haki internetowe

Podpisany JSON POST na Twój adres URL za każdym razem, gdy nastąpi subskrybowane wydarzenie. Zarządzaj subskrypcjami poprzez /v1/webhook‑subscriptions lub w panelu kontrolnym.

POST Twój adres URL · 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"
  }
}

powód: human_request | rozliczenia | ai_nierozwiązany | żądanie_akcji | …; priorytet: wysoki | normalna; źródło: czat | aplikacja | strona. Przeczytaj zgłoszenie i jego okno dialogowe za pomocą GET /v1/support/tickets/{number.

Nagłówki dostawy

X‑Smartbtn‑EventTyp zdarzenia, np. wiadomość.utworzona.
X‑Smartbtn‑Signaturesha256=v1: surowej treści.
X‑Smartbtn‑Idempotency‑KeyJedna wartość na zdarzenie, stabilna przy kolejnych próbach. Deduplikuj to.
X‑Smartbtn‑DeliveryJedna wartość na próbę dostarczenia — dla Twoich dzienników.
X‑Smartbtn‑TimestampUnixowy czas wysyłania. Informacyjne, niepodpisane.

Weryfikacja podpisu

HMAC‑SHA256 surowej treści (bajty w postaci otrzymanej, przed analizą JSON) z sekretem punktu końcowego; porównać w stałym czasie. Sekret jest pokazywany jednorazowo podczas tworzenia subskrypcji; obróć go za pomocą POST /v1/webhook‑subscriptions/{id}/rotate‑secret.

// Node.js · na przykład sekret jest symbolem zastępczym
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; }

Ponów próbę i zamów

  • Do 4 prób (pierwsza wysyłka plus 3 ponowne próby), opóźnienie min(60, 2^attempt × 5) s — około 10, 20, 40 s.
  • Wartość inna niż 2xx lub przekroczenie limitu czasu liczy się jako nieudana próba. Nieudane dostawy można wysłać ponownie za pomocą POST /v1/webhook‑subscriptions/{id}/redeliver — ten sam klucz idempotencji, nowy identyfikator dostawy.
  • Dostawa odbywa się co najmniej raz i nie jest zamawiana. Ładunki są minimalne — identyfikatory, a nie pełne rekordy; pobierz szczegóły za pośrednictwem interfejsu API REST.
06

JS API

Przekaż wszystko, co już wiesz o gościu, bezpośrednio agentowi. Połączenia akceptowane są wyłącznie z domeny ustawionej w ustawieniach widgetu.

smartbtn_widget_api.setContactInfo(info)

Ustawia dane kontaktowe odwiedzającego. Agent widzi to tak, jakby odwiedzający wypełnił formularz wprowadzający. Imię i nazwisko, telefon i e‑mail odgrywają w Smartbtn szczególną rolę — stąd osobna metoda.

ImięWpiszOpis
namestringImię gościa
emailstringE‑mail gościa
phonestringTelefon gościa
descriptionstringWszelkie dodatkowe informacje o kliencie
Smartbtn_api.setClientInfo({
  name: „Aleks Morgan”,
  email: "email@example.com",
  phone: "+17584987855",
  description: "Description text"
});

smartbtn_widget_api.setCustomData(fields)

Wszelkie dodatkowe dane do panelu informacyjnego po prawej stronie aplikacji agenta. Nazywaj go tak często, jak chcesz — w otwartym oknie dialogowym panel aktualizuje się w czasie rzeczywistym. Pola są wyświetlane w kolejności tablicowej.

ImięWpiszOpis
fieldsarrayLista pól danych
field.titlestringKierunek nad polem
field.contentstringZawartość pola; tagi są ucieczki
field.linkstringAdres URL otwierany po kliknięciu
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()

Zmień motyw widżetu w locie, bez ponownego ładowania strony (classic, minimal, capsule, liquid) lub programowo kontroluj okno czatu. Aby trwale dostosować projekt do potrzeb, przekaż te same pola do PATCH /v1/widget/settings.

// JS API · przełączaj skórkę na stronie w czasie rzeczywistym
smartbtn_widget_api.setSkin("minimal");
smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: „Odpowiedzi za ~1 s” });

// REST API · PATCH /v1/widget/settings (zakres 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 godziny na dobę, 7 dni w tygodniu”
}
Gdy opcja widget_api_contact_sync jest włączona, te wywołania uruchamiają również webhook contact.updated.
07

Support‑agent API

Zautomatyzowany agent wsparcia obsługuje kolejkę zgłoszeń i czaty z klientami: bierze udział w czacie, odpowiada jako operator wsparcia technicznego, zamyka zgłoszenie. Wyłączone, dopóki właściciel widżetu go nie włączy.

  1. Właściciel to umożliwiaWyświetla listę tokenów, które mogą działać jako agenci wsparcia, oraz adresy IP, z których mogą dzwonić.
  2. Przeczytaj kolejkęGET /v1/support/tickets · GET /v1/support/chats
  3. Wynajmij czatPOST …/chats/{id}/claim · …/release
  4. OdpowiedzZwykły tekst, linki tylko do dozwolonych hostów widżetu. 201 tylko po zapisaniu wiadomości.
  5. Zamknij lub otwórz ponowniePOST …/tickets/{number}/close · …/reopen
ZakresPozwala
support:readBilety, aktywne czaty, wiadomości oznaczone etykietą klient / AI / wsparcie / system, własne kontrolowane działania
support:writeOdbierz / rozłącz czat, zamknij bez odpowiedzi, otwórz ponownie
support:replyOdpowiedz klientowi jako operator wsparcia (wrażliwy)
support:tickets:closeZamknij tylko zgłoszenie — aby wyświetlić przycisk „Pytanie rozwiązane” na swoim backendzie
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":"Gotowe, dostęp został przywrócony."}'
Właściciel może przypisać tokenom agenta wsparcia własny limit minut lub nie mieć go wcale. Każda inna trasa zachowuje ogólny limit.
08

API AI

Wszystko, co robi sekcja AI na pulpicie nawigacyjnym: asystenci, własne klucze dostawców, baza wiedzy, samokształcenie z wycofywaniem, życzenia, problemy, sygnały zapotrzebowania i asystent w Twojej aplikacji.

Asystenci i operatorzy AI

Kilku asystentów z własną rolą i językiem, test przed uruchomieniem, operatorzy wymienieni według języka.

  • GET/v1/ai/assistants
  • POST/v1/ai/assistants/{id}/test
  • PATCH/v1/ai/operators/{id}
  • POST/v1/ai/handoff
Zakresy: ai:read · ai:write
Przynieś swój własny klucz

Claude, ChatGPT, DeepSeek, Gemini, Mistral, regionalne LLM lub dowolne kompatybilne z OpenAI. Modele są wymienione według klucza.

  • GET/v1/ai/credentials
  • POST/v1/ai/credentials
  • GET/v1/ai/credentials/{id}/models
Zakresy: ai:read · ai:credentials:write
Baza wiedzy

Robot indeksujący Twoją witrynę, przesyłane pliki PDF i DOCX, reguły, stan wyszukiwania i indeksowania.

  • PUT/v1/kb/crawler
  • POST/v1/kb/uploads
  • POST/v1/kb/rules
  • GET/v1/kb/search
Zakresy: kb:read · kb:write · files:write
Samokształcenie

Dostrajanie przebiegów, cykli, historii, wersji postaci z wycofywaniem i wyłącznikiem awaryjnym.

  • POST/v1/ai/learning/tune
  • GET/v1/ai/learning/cycles
  • POST/v1/ai/learning/persona‑versions/{version}/revert
  • GET/v1/ai/learning/kill‑switch
Zakresy: ai:read · ai:write · ai:apply
Życzenia dla AI

Życzenie w prostych słowach → podgląd wolny od skutków ubocznych → zatwierdź, odrzuć lub przywróć.

  • POST/v1/wishes
  • GET/v1/wishes/{id}/preview
  • POST/v1/wishes/{id}/approve
  • POST/v1/wishes/{id}/revert
Zakresy: ai:write · ai:apply
Problemy i sygnały popytowe

Klastry problemowe ze statusami i miesięcznym limitem wydatków; o co prosili klienci, a tego nie oferujesz.

  • GET/v1/problems
  • PATCH/v1/problems/settings
  • POST/v1/problems/{id}/status
  • GET/v1/ai/demand‑signals
Zakresy: problems:read · problems:write · ai:read
Stan klienta

Twój backend przesyła status klienta (zarejestrowany, opłacony, klient od czasu, stan usługi) w żądaniu podpisanym przez HMAC — sztuczna inteligencja waży go podczas odpowiadania i eskalacji.

  • POST/v1/ai/customer‑status
  • POST/v1/ai/tickets
  • GET/v1/ai/alerts
Zakresy: ai:write · ai:read
Asystent w Twojej aplikacji

Zwroty dialogów, łączenie kont, zamiana mowy na tekst i zamiana tekstu na mowę, bilety aplikacji — w ramach podpisanej integracji.

  • 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
Zakresy: podpis integracji (HMAC)
Rynek rozwiązań

Gotowi asystenci według niszy: kawiarnia, przychodnia, sklep, serwis samochodowy. Złóż wniosek w jednym wniosku.

  • GET/v1/ai/marketplace/templates
  • POST/v1/ai/marketplace/templates/{slug}/apply
Zakresy: ai:read · ai:write
Zewnętrzny operator AI

Twój własny bot odpowiada na czaty: odpowiedzi asynchroniczne, przekazywanie, testy i cykl życia.

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

Limity stawek

Na token przypadają dwa liczniki: odczyty i zapisy, więc odpytywanie nigdy nie pochłania budżetu zapisu.

600 / minbrzmi: GET, GŁOWA
120 / minpisze: POST, PATCH, PUT, DELETE
429przekroczył limit — poczekaj na opcję Retry‑After
X‑RateLimit‑LimitRozmiar licznika, w którym zostało naliczone to żądanie (600 lub 120)
X‑RateLimit‑RemainingŻądania pozostawione w bieżącym oknie
X‑RateLimit‑ResetKiedy okno się resetuje
Retry‑AfterNa 429: sekundy oczekiwania
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 i /v1/ai/assistant/account‑link mają własne liczniki; interfejs API agenta wsparcia może mieć zastąpienie poszczególnych widżetów.

10

Błędy

Każdy błąd to RFC‑7807 application/problem+json: status i przyczyna czytelne dla maszyny, szczegóły czytelne dla człowieka.

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

Treść zawiera nazwy wymagane_zakresy i miejsce ich przyznania. Nie ma potrzeby ponownego wydawania klucza.

StanZnaczenie
400Źle sformułowane żądanie lub brak wymaganego klucza idempotencji
401Brak tokena, nieprawidłowy lub unieważniony token
403Token nie ma zakresu; treść dodaje required_scopes i gdzie je przyznać
404Nie znaleziono w tym widżecie
405Metoda niedozwolona — zatrzymaj się i zgłoś; nie szukaj alternatywnych zapisów
409Klucz idempotencji ponownie wykorzystany w ciągu 24 godzin lub konflikt stanu
422Walidacja nie powiodła się (np. wysłano pole tylko do odczytu)
429Limit stawki; szanuj opcję Ponów próbę po
11

Idempotencja

Sieci zawodzą. Klucz sprawia, że ​​ponowna próba zapisu jest bezpieczna: ta sama operacja nigdy nie jest wykonywana dwukrotnie.

  • Wysyłaj X‑Smartbtn‑Idempotency‑Key przy każdym POST/PATCH/PUT/DELETE: nowy UUID dla nowej operacji, ten sam klucz dla ponownej próby tego samego.
  • Operacje oznaczone x‑idempotency: wymagane w OpenAPI: brak klucza → 400, klucz ponownie użyty w ciągu 24 godzin → 409 (nie jest to sukces zapisany w pamięci podręcznej).
  • Nie jesteś pewien, czy przeszło? Najpierw przeczytaj stan. Nigdy nie zmieniaj klucza automatycznie; szanuj opcję Ponów próbę po.
  • 502 od dostawcy wyższego szczebla zwalnia klucz — spróbuj ponownie, używając tego samego klucza.
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"}'
# błąd sieci? powtórz z tym samym $KEY
12

Changelog

Zmiany w publicznym API i webhookach w 2026 roku. Wszystko poniżej ma charakter addytywny i pozostaje w wersji v1.

NowyBilety: webhook utworzony przez bilet, odczyty kolejki z obsługą:czytanie, podpowiedź 403

Utworzono nowy bilet na wydarzenie na żywo. GET /v1/support/tickets odpowiada na dowolny klucz za pomocą support:read, dopóki nie zostanie skonfigurowany agent wsparcia. Kluczowe zakresy można edytować bez ponownego wydawania. 403 zyski wymagane_zakresy.

NowyNazwa operatora AI dla każdego języka

POST/PATCH /v1/ai/operatorzy akceptują nazwę_i18n; nazwy domyślne są tłumaczone na język widgetów; przewidywalny wybór powitania.

ZmieńLimit szybkości: odczyty i zapisy liczone osobno

Odczytuje — 600 na minutę, pisze — 120. Odpytywanie nie pochłania już budżetu na zapis. X‑RateLimit-* opisuje użyty licznik.

NowyPOBIERZ /v1/chats: filtr zaktualizowany_od

Czaty z aktywnością od chwili, niezależnie od ich wieku. Każdy czat zawiera teraz last_message_at.

NowyWsparcie API: na czacie pojawiło się pytanie o skrzynkę pocztową

chat.account.email_requested — czat oczekuje na adres; agenci nie mogą rozpoczynać kolejnego przepływu kodu.

NowyObsługa zakresu: bilety: zamknij

Zamknij zgłoszenie i nic więcej — aby uzyskać przycisk „Pytanie rozwiązane” na swoim backendzie.

NowyGET /v1/chats: wyszukiwanie tekstowe i wiadomości od klientów

Filtruje has_client_messages=1 i q (2–100 znaków).

NowyLink do konta z Twojego backendu

POST /v1/ai/assistant/account‑link i /revoke. Wyłączone, dopóki właściciel tego nie włączy.

NaprawBaza wiedzy: zapisuje kluczem związanym z asystentem

Reguły są osadzone za pomocą klawisza widgetu lub włączonego klawisza asystenta; 502 zwalnia klucz idempotencji.

ZmieńInterfejs API agenta wsparcia: czas życia konta biletu aplikacji

Konto widoczne jest w trakcie ważności biletu oraz przez 7 dni po jego zakończeniu.

NowyAPI agenta wsparcia

Nowa grupa wsparcia /v1/: kolejka, czaty, dzierżawy, odpowiedzi, zamykanie i ponowne otwieranie zgłoszeń. Wyłączone, dopóki właściciel tego nie włączy.

NowyAPI agenta wsparcia: okno kodu e‑mail

Pola code_pending, code_expires_at, last_code_result i last_code_at.

13

Wtyczka WordPressa

Widget na stronie WordPress bez dotykania kodu motywu.

  1. Pobierzarchiwum wtyczek na swój komputer.
  2. ZainstalujUmieść rozpakowany folder w wp‑content/plugins/ — lub prześlij go do panelu administracyjnego WordPress.
  3. AktywujW menu pojawi się pozycja Smartbtn.
  4. Wklej tokenSkopiuj token bezpieczeństwa z ustawień widżetu na pulpicie nawigacyjnym.
Dobrze wiedzieć

Gdy zmienisz hasło, zmienia się także token bezpieczeństwa, a stary przestaje działać — wklej nowy do wtyczki.

14

Próbki kodu

Wypisz każdy czat z aktywnością od czasu ostatniej ankiety — podążając za kursorem do końca.

# pierwsza strona
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 — z next_cursor z odpowiedzi
curl -G https://smartbtn.me/api/v1/chats \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  --data-urlencode "cursor=eyJpZCI6NDgyMDd9"
Gotowy

Wydaj token — i naciśnij Enter.