Premi Invio.
Ottieni i tuoi dati.
API REST /api/v1, 53 ambiti, 239 endpoint, 11 eventi webhook e un'API JS per il widget. Chat, contatti, intelligenza artificiale, knowledge base, ticket e fatturazione: qualunque cosa faccia la dashboard, può farlo anche il tuo codice.
# premere Invio o il segno a destra $ curl -H "Authorization: Bearer sb_••••" \ https://smartbtn.me/api/v1/chats?limit=1
Avvio rapido
Tre passi dallo zero alla prima risposta. Ogni richiesta è legata a un widget e autenticata con un token al portatore.
- Emetti un tokenDashboard → Token API: un nome, una scadenza opzionale e gli ambiti di cui hai bisogno. Un token appartiene esattamente a un widget. Il token in testo semplice viene mostrato una volta; Smartbtn memorizza solo un hash unidirezionale, quindi un token perso non può essere recuperato, ma solo revocato e riemesso.
- Attiva l'API widgetNelle impostazioni del widget, attiva «Consenti API widget (JS e REST)». L'emissione di un token non attiva questo interruttore per te.
- Invia la prima richiestaIl token va solo nell'intestazione
Autorizzazionee mai nell'URL.
# elenca le chat del widget curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \ https://smartbtn.me/api/v1/chats
// 200 OK · impaginazione del cursore { "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ], "next_cursor": "eyJpZCI6NDgyMTB9" // null — nell'ultima pagina }
https://smartbtn.me/api/v1 è l'endpoint API primario per tutti i dati del progetto. Invia sempre richieste tramite HTTPS e non inoltrare mai il token durante i reindirizzamenti.401 o 403 con un corpo applicazione/problema+json RFC‑7807: vedi Errori.Autenticazione
Tre percorsi, a seconda di chi chiama chi. L'accesso è negato per impostazione predefinita: nessun ambito, nessuna chiamata.
Ogni richiesta trasporta Autorizzazione: Portatore . Sul server il token si risolve in un widget e nei suoi ambiti.
Le richieste in uscita vengono firmate con un segreto per tenant: X‑Smartbtn‑Signature. È possibile aggiungere una credenziale al portatore extra se la tua fazione ne ha bisogno.
POST /v1/ai/replies utilizza il proprio frame firmato, aggiunto all'operatore AI e al widget e digitato da un causation_id durevole.
Il cambio che la gente dimentica
«Consenti API widget (JS e REST)» nelle impostazioni del widget apre sia l'API REST che l'API JS del widget. L'emissione di un token non lo abilita. Gli ambiti di una chiave esistente possono essere modificati nella dashboard (token API → chiave → Modifica ambiti) senza riemetterla: le integrazioni continuano a funzionare.
Preimpostazioni
| Preimpostato | Ambiti | Quando |
|---|---|---|
| Configurazione dell'IA 9 | widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:read | La tua app AI configura il widget: assistente, knowledge base, testi. Sostituisce l'intera selezione dell'ambito. |
| Sola lettura (set di esempi) | chats:read · messages:read · contacts:read · stats:read | Dashboard, BI, esportazioni. |
| Bridge Helpdesk (set di esempi) | chats:read · messages:read · messages:write · webhooks:write · support:read | Specchia finestre di dialogo e ticket nel tuo CRM. |
ai:credentials:write solo quando il proprietario autorizza la configurazione della chiave del provider. I diritti relativi all'account, alla fatturazione e ai partner non sono necessari per la configurazione dell'IA. La chiave viene visualizzata una volta: revocala al termine della configurazione.Ambiti
53 ambiti di percorso, più uno condizionale e uno riservato. Una richiesta ha esito positivo solo se il token contiene l'ambito della route (o un'alternativa elencata).
| Ambito | Sovvenzioni |
|---|---|
| chats · 2 | |
| chats:read | Leggi le chat e i relativi metadati |
| chats:write | Chiudi una chat, richiedi una valutazione, trasferisci, rivendica, collega o scollega un agente |
| messages · 2 | |
| messages:read | Leggere la cronologia dei messaggi di una chat |
| messages:write | Invia messaggi, digita indicatori e leggi le ricevute come agente |
| contacts · 2 | |
| contacts:read | Leggi i contatti |
| contacts:write | Aggiorna i campi e gli attributi dei contatti |
| agents · 3 | |
| agents:read | Leggere gli agenti e la loro presenza |
| agents:writesensibile | Invitare, aggiornare, sospendere, ripristinare o rimuovere agenti; un invitato vede tutte le chat del widget |
| agents:events:read | Leggere il registro eventi di un agente e i parametri per agente |
| tags · 2 | |
| tags:read | Leggi i tag |
| tags:write | Allega tag a un contatto |
| files · 2 | |
| files:read | Scarica un file caricato |
| files:write | Carica un nuovo file |
| stats · 1 | |
| stats:read | Leggi le statistiche aggregate su chat, messaggi e valutazioni |
| channels · 3 | |
| channels:read | Leggere lo stato online di un canale personalizzato |
| channels:write | Consegnare un messaggio in entrata su un canale personalizzato |
| channels:register | Registra un nuovo canale personalizzato (solo app installate) |
| webhooks · 2 | |
| webhooks:read | Elenca gli abbonamenti ai webhook |
| webhooks:write | Crea, elimina o riconsegna un abbonamento |
| quick_phrases · 2 | |
| quick_phrases:read | Leggi le frasi rapide di un agente |
| quick_phrases:write | Crea, modifica o elimina le frasi rapide |
| ratings · 1 | |
| ratings:read | Leggi le valutazioni dei visitatori e quale agente ottiene ciascuno di essi |
| responder · 2 | |
| responder:injectsensibile | Inserisci una risposta in una chat dal vivo come operatore o bot AI esterno |
| responder:escalatecondizionale | Per POST /v1/ai/replies: trasferimento diretto dal chiamante tramite escalate=true |
| widget · 2 | |
| widget:read | Leggi l'aspetto, il comportamento e le impostazioni di incorporamento del widget |
| widget:write | Aggiorna le impostazioni del widget ed elimina la cache del widget |
| departments · 2 | |
| departments:read | Leggi i dipartimenti, i loro agenti e gli orari |
| departments:write | Crea, aggiorna o elimina reparti e pianificazioni |
| messengers · 2 | |
| messengers:read | Leggere quali messenger sono collegati (mai credenziali) |
| messengers:writesensibile | Connetti o disconnetti un messenger; scrive le credenziali del provider |
| ai · 4 | |
| ai:read | Leggi gli assistenti AI, la loro configurazione e gli avvisi |
| ai:write | Crea e aggiorna assistenti, impostazioni AI e operatori AI, persona e prompt inclusi |
| ai:credentials:writesensibile | Archiviare le credenziali del provider LLM di terze parti (BYOK) |
| ai:apply | Approva un miglioramento che riscrive la personalità di un assistente dal vivo |
| kb · 2 | |
| kb:read | Leggere le regole della knowledge base e le origini importate |
| kb:write | Crea, aggiorna o elimina regole e origini KB |
| transcripts · 1 | |
| transcripts:read | Esporta una trascrizione della chat |
| account · 2 | |
| account:read | Leggi il profilo dell'account e tutte le sue persone giuridiche |
| account:write | Aggiorna solo il nome, cognome e telefono dell'account |
| billing · 2 | |
| billing:read | Leggi i record di fatturazione e le persone giuridiche del widget |
| billing:write | Creare, aggiornare, eliminare persone giuridiche; non emette fatture, non sposta denaro |
| partners · 2 | |
| partners:read | Leggi i dati dei partner e dei referral |
| partners:withdrawriservato | Riservato: nessuna operazione di pagamento lo utilizza oggi |
| support · 4 | |
| support:read | Leggi i ticket, le chat attive, i loro messaggi e le tue azioni controllate |
| support:replysensibile | Rispondi a un cliente come operatore di supporto |
| support:write | Richiedi o rilascia una chat, chiudi senza risposta, riapri |
| support:tickets:close | Chiudi solo un ticket, nient'altro |
| marketing · 2 | |
| marketing:read | Leggi campagne di marketing: banner, popup, email |
| marketing:write | Crea e modifica campagne, modifica stato, avvia l'invio di email |
| broadcasts · 2 | |
| broadcasts:read | Leggere le trasmissioni di messaggistica (WhatsApp, Telegram, Messenger, Viber, VK, MAX) |
| broadcasts:write | Crea, modifica e avvia una trasmissione |
| problems · 2 | |
| problems:read | Leggere i cluster e le impostazioni dei problemi dei clienti |
| problems:write | Modifica impostazioni e stato cluster: nuovo, in corso, risolto, ricorrente |
| invitations · 2 | |
| invitations:read | Leggi le regole dell'invito, le varianti A/B, i modelli e la canalizzazione |
| invitations:write | Crea, modifica, abilita o elimina regole e modelli |
Endpoint
Tutta la superficie pubblica in un unico elenco. Filtra per risorsa, cerca per percorso, fai clic su una riga per copiare un ricciolo pronto.
ai Assistenti, operatori, chiavi, apprendimento, mercato54
chats Finestre di dialogo, messaggi, trasferimenti, valutazioni18
kb Base di conoscenza: regole, crawler, file, ricerca16
agents Agenti, inviti, metriche14
messengers Messaggeri, social network e canali di mercato13
billing Saldo, abbonamenti, fatture, enti12
support Agente di supporto: ticket e chat12
widget Impostazioni, lingua, traduzioni, skin, cache12
channels Canali personalizzati8
external‑operators Il tuo bot come operatore8
webhook‑subscriptions Abbonamenti al webhook8
broadcasts Trasmissioni di Messenger7
departments Dipartimenti e orari7
invitations Inviti intelligenti7
marketing Campagne di marketing7
partner Programma partner7
wishes Auguri per l'IA7
contacts Contatti e tag5
problems Analisi dei problemi dei clienti4
quick‑phrases Frasi veloci4
compat Compatibilità con la migrazione3
stats Statistiche3
account Conto2
files File2
ratings Valutazioni1
tags Tag1
v1 1
webhook‑events Catalogo eventi1
I percorsi sono relativi a https://smartbtn.me/api. Le scritture richiedono Content‑Type: application/json e X‑Smartbtn‑Idempotency‑Key. Il gruppo compat è un livello di compatibilità per i team che si spostano da un'altra piattaforma di chat.
Webhook
Un POST JSON firmato sul tuo URL ogni volta che si verifica un evento sottoscritto. Gestisci gli abbonamenti tramite /v1/webhook‑subscriptions o nella dashboard.
{
"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"
}
}motivo: richiesta_umana | fatturazione | ai_irrisolto | richiesta_azione | …; priorità: alta | normale; fonte: chat | applicazione | sito. Leggi il ticket e la sua finestra di dialogo con GET /v1/support/tickets/{number}.
Intestazioni di consegna
| X‑Smartbtn‑Event | Tipo di evento, ad es. messaggio.creato. |
| X‑Smartbtn‑Signature | sha256=v1: del corpo grezzo. |
| X‑Smartbtn‑Idempotency‑Key | Un valore per evento, stabile tra i tentativi. Deduplica su di esso. |
| X‑Smartbtn‑Delivery | Un valore per tentativo di consegna: per i tuoi log. |
| X‑Smartbtn‑Timestamp | Ora Unix di invio. Informativo, non firmato. |
Verifica della firma
HMAC‑SHA256 del corpo raw (byte ricevuti, prima dell'analisi JSON) con il segreto dell'endpoint; confrontare in tempo costante. Il segreto viene mostrato una volta, quando viene creata la sottoscrizione; ruotalo con POST /v1/webhook‑subscriptions/{id}/rotate‑secret.
// Node.js · ad esempio, il segreto è un segnaposto 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; }
Riprovare e ordinare
- Fino a 4 tentativi (il primo invio più 3 tentativi), backoff
min(60, 2^tentativo × 5)s: circa 10, 20, 40 s. - Un tentativo diverso da 2xx o un timeout conta come un tentativo fallito. Le consegne non riuscite possono essere rinviate con
POST /v1/webhook‑subscriptions/{id}/redeliver: stessa chiave di idempotenza, nuovo ID di consegna. - La consegna è effettuata almeno una volta e non è stata ordinata. I carichi utili sono minimi: ID, non record completi; recuperare i dettagli tramite l'API REST.
JS API
Passa ciò che già sai sul visitatore direttamente all'agente. Si accettano chiamate solo dal dominio impostato nelle impostazioni del widget.
smartbtn_widget_api.setContactInfo(info)
Imposta i dati di contatto del visitatore. L'agente lo vede come se il visitatore avesse compilato il modulo di presentazione. Nome, telefono ed e‑mail svolgono un ruolo speciale in Smartbtn, quindi un metodo separato.
| Nome | Digitare | Descrizione |
|---|---|---|
| name | string | Nome del visitatore |
| string | E‑mail del visitatore | |
| phone | string | Telefono dei visitatori |
| description | string | Eventuali informazioni aggiuntive sul cliente |
Smartbtn_api.setClientInfo({ name: "Alessio Morgan", email: "email@example.com", phone: "+17584987855", description: "Description text" });
smartbtn_widget_api.setCustomData(fields)
Eventuali dati aggiuntivi per il pannello informativo a destra dell'app dell'agente. Chiamalo tutte le volte che vuoi: in una finestra di dialogo aperta il pannello si aggiorna in tempo reale. I campi vengono visualizzati in ordine di matrice.
| Nome | Digitare | Descrizione |
|---|---|---|
| fields | array | Elenco dei campi dati |
| field.title | string | Dirigendosi sopra il campo |
| field.content | string | Contenuto del campo; i tag vengono sottoposti a escape |
| field.link | string | URL aperto al clic |
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()
Cambia il tema del widget al volo senza ricaricare la pagina (classic, minimal, capsule, liquid) o controlla la finestra di chat in modo programmatico. Per la personalizzazione permanente per progetto, passa gli stessi campi a PATCH /v1/widget/settings.
// JS API · cambia skin sulla pagina in tempo reale smartbtn_widget_api.setSkin("minimal"); smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "Risposte entro ~ 1 s" }); // REST API · PATCH /v1/widget/settings (ambito 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 ore su 24, 7 giorni su 7" }
widget_api_contact_sync attivo, queste chiamate attivano anche il webhook contact.updated.Support‑agent API
Un agente di supporto automatizzato gestisce la coda dei ticket e le chat dei clienti: avvia una chat, risponde come il tuo operatore di supporto umano, chiude il ticket. Disattivato finché il proprietario del widget non lo attiva.
- Il proprietario lo consenteElenca i token autorizzati a fungere da agenti di supporto e gli IP da cui possono chiamare.
- Leggi la coda
GET /v1/support/tickets·GET /v1/support/chats - Affitta una chiacchierata
POST …/chats/{id}/claim·…/release - RispondiTesto semplice, collega solo agli host consentiti del widget.
201solo una volta memorizzato il messaggio. - Chiudi o riapri
POST …/tickets/{number}/close·…/reopen
| Ambito | Permette |
|---|---|
| support:read | Ticket, chat attive, messaggi etichettati client/ai/supporto/sistema, azioni proprie controllate |
| support:write | Richiedi/rilascia una chat, chiudi senza risposta, riapri |
| support:reply | Rispondere al cliente come operatore dell'assistenza (sensibile) |
| support:tickets:close | Chiudi solo un ticket - per un pulsante «domanda risolta» sul tuo backend |
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":"Fatto, l'accesso è stato ripristinato."}'
API dell'intelligenza artificiale
Tutto ciò che fa la sezione AI della dashboard: assistenti, chiavi del tuo fornitore, knowledge base, autoapprendimento con rollback, desideri, problemi, segnali di domanda e un assistente all'interno della tua app.
Diversi assistenti con il proprio ruolo e lingua, un test prima della messa in diretta, operatori nominati per lingua.
- GET/v1/ai/assistants
- POST/v1/ai/assistants/{id}/test
- PATCH/v1/ai/operators/{id}
- POST/v1/ai/handoff
Claude, ChatGPT, DeepSeek, Gemini, Mistral, LLM regionali o qualsiasi compatibile con OpenAI. I modelli sono elencati per chiave.
- GET/v1/ai/credentials
- POST/v1/ai/credentials
- GET/v1/ai/credentials/{id}/models
Un crawler per il tuo sito, caricamenti di PDF e DOCX, regole, ricerca e stato di indicizzazione.
- PUT/v1/kb/crawler
- POST/v1/kb/uploads
- POST/v1/kb/rules
- GET/v1/kb/search
Ottimizzazione di corse, cicli, cronologia, versioni dei personaggi con rollback e kill switch.
- POST/v1/ai/learning/tune
- GET/v1/ai/learning/cycles
- POST/v1/ai/learning/persona‑versions/{version}/revert
- GET/v1/ai/learning/kill‑switch
Un desiderio in parole povere → un'anteprima senza effetti collaterali → approva, rifiuta o annulla.
- POST/v1/wishes
- GET/v1/wishes/{id}/preview
- POST/v1/wishes/{id}/approve
- POST/v1/wishes/{id}/revert
Gruppi di problemi con stati e limite di spesa mensile; ciò che i clienti hanno chiesto e che tu non offri.
- GET/v1/problems
- PATCH/v1/problems/settings
- POST/v1/problems/{id}/status
- GET/v1/ai/demand‑signals
Il tuo backend invia lo stato del cliente (registrato, pagato, cliente dal, stato del servizio) in una richiesta firmata HMAC: l'intelligenza artificiale lo valuta durante la risposta e l'escalation.
- POST/v1/ai/customer‑status
- POST/v1/ai/tickets
- GET/v1/ai/alerts
Turni di dialogo, collegamento di account, sintesi vocale e sintesi vocale, ticket di app, tramite un'integrazione firmata.
- 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
Assistenti pronti per nicchia: bar, clinica, negozio, servizio auto. Presentare domanda in un'unica richiesta.
- GET/v1/ai/marketplace/templates
- POST/v1/ai/marketplace/templates/{slug}/apply
Il tuo bot risponde alle chat: risposte asincrone, handoff, test e ciclo di vita.
- POST/v1/ai/replies
- POST/v1/external‑operators/{public_id}/tests
- POST/v1/external‑operators/{public_id}/lifecycle
Limiti di tariffa
Per token, due contatori: le letture e le scritture vengono conteggiate separatamente, quindi il polling non consuma mai il budget di scrittura.
| X‑RateLimit‑Limit | Dimensione del contatore in cui è stata conteggiata questa richiesta (600 o 120) |
| X‑RateLimit‑Remaining | Richieste rimaste nella finestra corrente |
| X‑RateLimit‑Reset | Quando la finestra si ripristina |
| Retry‑After | Su 429: secondi di attesa |
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 e /v1/ai/assistant/account‑link hanno i propri contatori; l'API dell'agente di supporto può avere un override per widget.
Errori
Ogni errore è RFC‑7807 application/problem+json: uno stato e un motivo leggibili dalla macchina, un dettaglio leggibile dall'uomo.
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" }
Il corpo nomina gli ambiti_richiesti e dove concederli. Non è necessario riemettere la chiave.
| Stato | Significato |
|---|---|
| 400 | Richiesta non valida o manca una chiave di idempotenza richiesta |
| 401 | Nessun token, token non valido o revocato |
| 403 | Il token non ha lo scopo; il corpo aggiunge required_scopes e dove concederlo |
| 404 | Non trovato in questo widget |
| 405 | Metodo non consentito: fermarsi e riferire; non cercare scritture alternative |
| 409 | Chiave di idempotenza riutilizzata entro 24 ore o conflitto di stato |
| 422 | Convalida non riuscita (ad esempio è stato inviato un campo di sola lettura) |
| 429 | Limite di velocità; rispettare Retry‑After |
Idempotenza
Le reti falliscono. Una chiave rende sicura la scrittura riprovata: la stessa operazione non viene mai eseguita due volte.
- Invia
X‑Smartbtn‑Idempotency‑Keysu ogni POST / PATCH / PUT / DELETE: un nuovo UUID per una nuova operazione, la stessa chiave per un nuovo tentativo della stessa. - Operazioni contrassegnate con
x‑idempotenza: richiestain OpenAPI: nessuna chiave → 400, la chiave riutilizzata entro 24 ore → 409 (non un successo memorizzato nella cache). - Non sei sicuro che sia andato a buon fine? Leggi prima lo stato. Non cambiare mai la chiave automaticamente; rispettare Retry‑After.
- Un
502da un fornitore upstream rilascia la chiave: riprova con la stessa chiave.
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"}' # errore di rete? ripetere con la stessa $KEY
Changelog
Modifiche all'API pubblica e ai webhook nel 2026. Tutto ciò che segue è additivo e rimane in v1.
Nuovo biglietto per un evento dal vivo creato. GET /v1/support/tickets risponde a qualsiasi chiave con support:read finché non viene configurato un agente di supporto. Gli ambiti chiave sono modificabili senza riemissione. 403 guadagni request_scopes.
POST/PATCH /v1/ai/operators accetta name_i18n; i nomi predefiniti vengono tradotti nella lingua del widget; scelta di saluto prevedibile.
Legge - 600 al minuto, scrive - 120. Il sondaggio non consuma più il budget di scrittura. X‑RateLimit-* descrive il contatore utilizzato.
Chatta con attività da un istante, qualunque sia la loro età. Ogni chat ora contiene last_message_at.
chat.account.email_requested — la chat attende l'indirizzo; gli agenti non devono avviare un altro flusso di codice.
Chiudi un ticket e nient'altro - per un pulsante «domanda risolta» sul tuo backend.
Filtra has_client_messages=1 e q (2–100 caratteri).
POST /v1/ai/assistant/account‑link e /revoke. Spento finché il proprietario non lo abilita.
Le regole sono integrate con la chiave widget o una chiave assistente abilitata; un 502 rilascia la chiave di idempotenza.
L'account è visibile durante l'apertura del ticket e per i 7 giorni successivi.
Nuovo gruppo /v1/support: code, chat, lease, risposte, ticket di chiusura e riapertura. Spento finché il proprietario non lo abilita.
Campi code_pending, code_expires_at, last_code_result e last_code_at.
Plug‑in WordPress
Il widget su un sito WordPress senza toccare il codice del tema.
- Scarical'archivio dei plugin sul tuo computer.
- InstallaInserisci la cartella decompressa in
wp‑content/plugins/o caricala nell'amministratore di WordPress. - AttivaNel menu viene visualizzata la voce Smartbtn.
- Incolla il tokenCopia il token di sicurezza dalle impostazioni del widget nella dashboard.
Quando cambi la password, cambia anche il token di sicurezza e quello vecchio smette di funzionare: incolla quello nuovo nel plugin.
Esempi di codici
Elenca tutte le chat con attività dal tuo ultimo sondaggio, seguendo il cursore fino alla fine.
# prima pagina 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 - con next_cursor dalla risposta curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "cursor=eyJpZCI6NDgyMDd9"