Prova gratis
CaratteristicheAICruscottoAPIPrezziScaricaAiuto
Aspetto (Auto: light)
Prova gratis
Casa / API
API e sviluppatori

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.

smartbtn.me/api/v1
# premere Invio o il segno a destra
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

Avvio rapido

Tre passi dallo zero alla prima risposta. Ogni richiesta è legata a un widget e autenticata con un token al portatore.

  1. 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.
  2. 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.
  3. Invia la prima richiestaIl token va solo nell'intestazione Autorizzazione e 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
}
URL di base verificato. 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.
Token mancante, non valido o con ambito insufficiente? Ottieni 401 o 403 con un corpo applicazione/problema+json RFC‑7807: vedi Errori.
02

Autenticazione

Tre percorsi, a seconda di chi chiama chi. L'accesso è negato per impostazione predefinita: nessun ambito, nessuna chiamata.

Tu → Smartbtn
Chiamate REST

Ogni richiesta trasporta Autorizzazione: Portatore . Sul server il token si risolve in un widget e nei suoi ambiti.

Smartbtn → tu
Webhook, operatore AI esterno

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.

Il tuo operatore AI → Smartbtn
Risposte asincrone

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

PreimpostatoAmbitiQuando
Configurazione dell'IA 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:readLa 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:readDashboard, BI, esportazioni.
Bridge Helpdesk (set di esempi)chats:read · messages:read · messages:write · webhooks:write · support:readSpecchia finestre di dialogo e ticket nel tuo CRM.
Le chiavi del provider sono separate. Concedi 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.
03

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).

53 + 1 condizionale + 1 riservato
sensibilecondizionaleriservato
AmbitoSovvenzioni
chats · 2
chats:readLeggi le chat e i relativi metadati
chats:writeChiudi una chat, richiedi una valutazione, trasferisci, rivendica, collega o scollega un agente
messages · 2
messages:readLeggere la cronologia dei messaggi di una chat
messages:writeInvia messaggi, digita indicatori e leggi le ricevute come agente
contacts · 2
contacts:readLeggi i contatti
contacts:writeAggiorna i campi e gli attributi dei contatti
agents · 3
agents:readLeggere gli agenti e la loro presenza
agents:writesensibileInvitare, aggiornare, sospendere, ripristinare o rimuovere agenti; un invitato vede tutte le chat del widget
agents:events:readLeggere il registro eventi di un agente e i parametri per agente
tags · 2
tags:readLeggi i tag
tags:writeAllega tag a un contatto
files · 2
files:readScarica un file caricato
files:writeCarica un nuovo file
stats · 1
stats:readLeggi le statistiche aggregate su chat, messaggi e valutazioni
channels · 3
channels:readLeggere lo stato online di un canale personalizzato
channels:writeConsegnare un messaggio in entrata su un canale personalizzato
channels:registerRegistra un nuovo canale personalizzato (solo app installate)
webhooks · 2
webhooks:readElenca gli abbonamenti ai webhook
webhooks:writeCrea, elimina o riconsegna un abbonamento
quick_phrases · 2
quick_phrases:readLeggi le frasi rapide di un agente
quick_phrases:writeCrea, modifica o elimina le frasi rapide
ratings · 1
ratings:readLeggi le valutazioni dei visitatori e quale agente ottiene ciascuno di essi
responder · 2
responder:injectsensibileInserisci una risposta in una chat dal vivo come operatore o bot AI esterno
responder:escalatecondizionalePer POST /v1/ai/replies: trasferimento diretto dal chiamante tramite escalate=true
widget · 2
widget:readLeggi l'aspetto, il comportamento e le impostazioni di incorporamento del widget
widget:writeAggiorna le impostazioni del widget ed elimina la cache del widget
departments · 2
departments:readLeggi i dipartimenti, i loro agenti e gli orari
departments:writeCrea, aggiorna o elimina reparti e pianificazioni
messengers · 2
messengers:readLeggere quali messenger sono collegati (mai credenziali)
messengers:writesensibileConnetti o disconnetti un messenger; scrive le credenziali del provider
ai · 4
ai:readLeggi gli assistenti AI, la loro configurazione e gli avvisi
ai:writeCrea e aggiorna assistenti, impostazioni AI e operatori AI, persona e prompt inclusi
ai:credentials:writesensibileArchiviare le credenziali del provider LLM di terze parti (BYOK)
ai:applyApprova un miglioramento che riscrive la personalità di un assistente dal vivo
kb · 2
kb:readLeggere le regole della knowledge base e le origini importate
kb:writeCrea, aggiorna o elimina regole e origini KB
transcripts · 1
transcripts:readEsporta una trascrizione della chat
account · 2
account:readLeggi il profilo dell'account e tutte le sue persone giuridiche
account:writeAggiorna solo il nome, cognome e telefono dell'account
billing · 2
billing:readLeggi i record di fatturazione e le persone giuridiche del widget
billing:writeCreare, aggiornare, eliminare persone giuridiche; non emette fatture, non sposta denaro
partners · 2
partners:readLeggi i dati dei partner e dei referral
partners:withdrawriservatoRiservato: nessuna operazione di pagamento lo utilizza oggi
support · 4
support:readLeggi i ticket, le chat attive, i loro messaggi e le tue azioni controllate
support:replysensibileRispondi a un cliente come operatore di supporto
support:writeRichiedi o rilascia una chat, chiudi senza risposta, riapri
support:tickets:closeChiudi solo un ticket, nient'altro
marketing · 2
marketing:readLeggi campagne di marketing: banner, popup, email
marketing:writeCrea e modifica campagne, modifica stato, avvia l'invio di email
broadcasts · 2
broadcasts:readLeggere le trasmissioni di messaggistica (WhatsApp, Telegram, Messenger, Viber, VK, MAX)
broadcasts:writeCrea, modifica e avvia una trasmissione
problems · 2
problems:readLeggere i cluster e le impostazioni dei problemi dei clienti
problems:writeModifica impostazioni e stato cluster: nuovo, in corso, risolto, ricorrente
invitations · 2
invitations:readLeggi le regole dell'invito, le varianti A/B, i modelli e la canalizzazione
invitations:writeCrea, modifica, abilita o elimina regole e modelli
04

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.

Mostrando 245 di 245
GETPOSTPUTPATCHDELETE

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.

05

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.

POST il tuo 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"
  }
}

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‑EventTipo di evento, ad es. messaggio.creato.
X‑Smartbtn‑Signaturesha256=v1: del corpo grezzo.
X‑Smartbtn‑Idempotency‑KeyUn valore per evento, stabile tra i tentativi. Deduplica su di esso.
X‑Smartbtn‑DeliveryUn valore per tentativo di consegna: per i tuoi log.
X‑Smartbtn‑TimestampOra 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.
06

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.

NomeDigitareDescrizione
namestringNome del visitatore
emailstringE‑mail del visitatore
phonestringTelefono dei visitatori
descriptionstringEventuali 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.

NomeDigitareDescrizione
fieldsarrayElenco dei campi dati
field.titlestringDirigendosi sopra il campo
field.contentstringContenuto del campo; i tag vengono sottoposti a escape
field.linkstringURL 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"
}
Con widget_api_contact_sync attivo, queste chiamate attivano anche il webhook contact.updated.
07

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.

  1. Il proprietario lo consenteElenca i token autorizzati a fungere da agenti di supporto e gli IP da cui possono chiamare.
  2. Leggi la codaGET /v1/support/tickets · GET /v1/support/chats
  3. Affitta una chiacchierataPOST …/chats/{id}/claim · …/release
  4. RispondiTesto semplice, collega solo agli host consentiti del widget. 201 solo una volta memorizzato il messaggio.
  5. Chiudi o riapriPOST …/tickets/{number}/close · …/reopen
AmbitoPermette
support:readTicket, chat attive, messaggi etichettati client/ai/supporto/sistema, azioni proprie controllate
support:writeRichiedi/rilascia una chat, chiudi senza risposta, riapri
support:replyRispondere al cliente come operatore dell'assistenza (sensibile)
support:tickets:closeChiudi 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."}'
Il proprietario può assegnare ai token dell'agente di supporto il proprio limite al minuto o nessuno. Ogni altro percorso mantiene il limite generale.
08

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.

Assistenti e operatori AI

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
Ambiti: ai:read · ai:write
Porta la tua chiave

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
Ambiti: ai:read · ai:credentials:write
Base di conoscenza

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
Ambiti: kb:read · kb:write · files:write
Autoapprendimento

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
Ambiti: ai:read · ai:write · ai:apply
Auguri per l'IA

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
Ambiti: ai:write · ai:apply
Problemi e segnali di domanda

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
Ambiti: problems:read · problems:write · ai:read
Stato del cliente

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
Ambiti: ai:write · ai:read
Assistente nella tua app

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
Ambiti: firma di integrazione (HMAC)
Mercato delle soluzioni

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
Ambiti: ai:read · ai:write
Operatore AI esterno

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

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.

600 / minsi legge: OTTIENI, TESTA
120 / minscrive: POST, PATCH, PUT, DELETE
429oltre il limite: attendi Retry‑After
X‑RateLimit‑LimitDimensione del contatore in cui è stata conteggiata questa richiesta (600 o 120)
X‑RateLimit‑RemainingRichieste rimaste nella finestra corrente
X‑RateLimit‑ResetQuando la finestra si ripristina
Retry‑AfterSu 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.

10

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.

StatoSignificato
400Richiesta non valida o manca una chiave di idempotenza richiesta
401Nessun token, token non valido o revocato
403Il token non ha lo scopo; il corpo aggiunge required_scopes e dove concederlo
404Non trovato in questo widget
405Metodo non consentito: fermarsi e riferire; non cercare scritture alternative
409Chiave di idempotenza riutilizzata entro 24 ore o conflitto di stato
422Convalida non riuscita (ad esempio è stato inviato un campo di sola lettura)
429Limite di velocità; rispettare Retry‑After
11

Idempotenza

Le reti falliscono. Una chiave rende sicura la scrittura riprovata: la stessa operazione non viene mai eseguita due volte.

  • Invia X‑Smartbtn‑Idempotency‑Key su 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: richiesta in 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 502 da 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
12

Changelog

Modifiche all'API pubblica e ai webhook nel 2026. Tutto ciò che segue è additivo e rimane in v1.

NuovoTicket: webhook ticket.created, letture in coda con support:read, suggerimento 403

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.

NuovoNome dell'operatore AI per lingua

POST/PATCH /v1/ai/operators accetta name_i18n; i nomi predefiniti vengono tradotti nella lingua del widget; scelta di saluto prevedibile.

CambiareLimite di velocità: letture e scritture conteggiate a parte

Legge - 600 al minuto, scrive - 120. Il sondaggio non consuma più il budget di scrittura. X‑RateLimit-* descrive il contatore utilizzato.

NuovoGET /v1/chats: filtro aggiornato_since

Chatta con attività da un istante, qualunque sia la loro età. Ogni chat ora contiene last_message_at.

NuovoAPI di supporto: la chat ha richiesto la casella di posta

chat.account.email_requested — la chat attende l'indirizzo; gli agenti non devono avviare un altro flusso di codice.

NuovoSupporto ambito:biglietti:chiudi

Chiudi un ticket e nient'altro - per un pulsante «domanda risolta» sul tuo backend.

NuovoGET /v1/chats: ricerca di testo e messaggi client

Filtra has_client_messages=1 e q (2–100 caratteri).

NuovoCollegamento all'account dal tuo backend

POST /v1/ai/assistant/account‑link e /revoke. Spento finché il proprietario non lo abilita.

CorreggiBase di conoscenza: scrive con una chiave associata all'assistente

Le regole sono integrate con la chiave widget o una chiave assistente abilitata; un 502 rilascia la chiave di idempotenza.

CambiareAPI dell'agente di supporto: durata dell'account del ticket dell'app

L'account è visibile durante l'apertura del ticket e per i 7 giorni successivi.

NuovoAPI dell'agente di supporto

Nuovo gruppo /v1/support: code, chat, lease, risposte, ticket di chiusura e riapertura. Spento finché il proprietario non lo abilita.

NuovoAPI dell'agente di supporto: finestra del codice e‑mail

Campi code_pending, code_expires_at, last_code_result e last_code_at.

13

Plug‑in WordPress

Il widget su un sito WordPress senza toccare il codice del tema.

  1. Scarical'archivio dei plugin sul tuo computer.
  2. InstallaInserisci la cartella decompressa in wp‑content/plugins/ o caricala nell'amministratore di WordPress.
  3. AttivaNel menu viene visualizzata la voce Smartbtn.
  4. Incolla il tokenCopia il token di sicurezza dalle impostazioni del widget nella dashboard.
Buono a sapersi

Quando cambi la password, cambia anche il token di sicurezza e quello vecchio smette di funzionare: incolla quello nuovo nel plugin.

14

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

Emetti un token e premi Invio.