CaractéristiquesIATableau de bordAPITarifsTéléchargerAide
Apparence (Auto: light)
Essayez gratuitement
Accueil / API
API et développeurs

Appuyez sur Entrée.
Récupérez vos données.

API REST /api/v1, 53 étendues, 239 points de terminaison, 11 événements webhook et une API JS pour le widget. Chats, contacts, IA, base de connaissances, tickets et facturation : quoi que fasse le tableau de bord, votre code peut le faire aussi.

smartbtn.me/api/v1
# appuyez sur Entrée ou sur la marque à droite
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

Démarrage rapide

Trois étapes de zéro à la première réponse. Chaque demande est liée à un widget et authentifiée avec un jeton de porteur.

  1. Émettre un jetonTableau de bord → Jetons API : un nom, une expiration facultative et les étendues dont vous avez besoin. Un jeton appartient à exactement un widget. Le jeton en texte brut est affiché une fois ; Smartbtn stocke uniquement un hachage unidirectionnel, de sorte qu'un jeton perdu ne peut pas être récupéré, mais seulement révoqué et réémis.
  2. Activez l'API du widgetDans les paramètres du widget, activez «Autoriser l'API du widget (JS et REST)». L'émission d'un jeton ne fait pas basculer ce commutateur à votre place.
  3. Envoyez la première demandeLe jeton va uniquement dans l'en‑tête Authorization - jamais dans l'URL.
# lister les chats du widget
curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \
     https://smartbtn.me/api/v1/chats
// 200 OK · pagination du curseur
{
  "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ],
  "next_cursor": "eyJpZCI6NDgyMTB9"   // null — sur la dernière page
}
URL de base vérifiée. https://smartbtn.me/api/v1 est le point de terminaison principal de l'API pour toutes les données du projet. Envoyez toujours des requêtes via HTTPS et ne transférez jamais le jeton lors des redirections.
Jeton manquant, invalide ou sous‑porté ? Vous obtenez 401 ou 403 avec un corps application/problem+json RFC‑7807 — voir Erreurs.
02

Authentification

Trois chemins, selon qui appelle qui. L'accès est refusé par défaut : pas de portée, pas d'appel.

Vous → Smartbtn
Appels REST

Chaque requête porte une Autorisation : Porteur . Sur le serveur, le jeton est résolu en un widget et ses étendues.

Smartbtn → vous
Webhooks, opérateur IA externe

Les requêtes sortantes sont signées avec un secret par locataire : X‑Smartbtn‑Signature. Un identifiant de porteur supplémentaire peut être ajouté si votre camp en a besoin.

Votre opérateur IA → Smartbtn
Réponses asynchrones

POST /v1/ai/replies utilise son propre cadre signé, épinglé à votre opérateur IA et à votre widget et saisi par un causation_id durable.

Le changement que les gens oublient

«Autoriser l'API du widget (JS et REST)» dans les paramètres du widget ouvre à la fois l'API REST et l'API JS du widget. L'émission d'un jeton ne l'active pas. Les étendues d'une clé existante peuvent être modifiées dans le tableau de bord (jetons API → clé → Modifier les étendues) sans la réémettre : les intégrations continuent de fonctionner.

Préréglages

PréréglagePortéesQuand
Configuration de l'IA 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:readVotre application IA configure le widget : assistant, base de connaissances, textes. Remplace toute la sélection de portée.
Lecture seule (exemple)chats:read · messages:read · contacts:read · stats:readTableaux de bord, BI, exports.
Pont de support technique (exemple)chats:read · messages:read · messages:write · webhooks:write · support:readMettez en miroir les boîtes de dialogue et les tickets dans votre CRM.
Les clés du fournisseur sont distinctes. Accordez ai:credentials:write uniquement lorsque le propriétaire autorise la configuration de la clé du fournisseur. Les droits de compte, de facturation et de partenaire ne sont pas nécessaires pour la configuration de l'IA. La clé est affichée une fois – révoquez‑la une fois la configuration terminée.
03

Portées

53 étendues d'itinéraire, plus une conditionnelle et une réservée. Une requête ne réussit que si le jeton contient la portée de la route (ou une alternative répertoriée).

53 + 1 conditionnel + 1 réservé
sensibleconditionnelréservé
PortéeSubventions
chats · 2
chats:readLire les chats et leurs métadonnées
chats:writeFermer un chat, demander une note, transférer, réclamer, attacher ou détacher un agent
messages · 2
messages:readLire l'historique des messages d'un chat
messages:writeEnvoyer des messages, taper des indicateurs et lire des accusés de réception en tant qu'agent
contacts · 2
contacts:readLire les contacts
contacts:writeMettre à jour les champs et les attributs du contact
agents · 3
agents:readLire les agents et leur présence
agents:writesensibleInviter, mettre à jour, suspendre, restaurer ou supprimer des agents ; un invité voit chaque discussion du widget
agents:events:readLire le journal des événements d'un agent et les métriques par agent
tags · 2
tags:readLire les balises
tags:writeAttacher des balises à un contact
files · 2
files:readTélécharger un fichier téléchargé
files:writeTéléchargez un nouveau fichier
stats · 1
stats:readLire les statistiques globales de chat, de message et d'évaluation
channels · 3
channels:readLire l'état en ligne d'une chaîne personnalisée
channels:writeEnvoyer un message entrant sur un canal personnalisé
channels:registerEnregistrez une nouvelle chaîne personnalisée (applications installées uniquement)
webhooks · 2
webhooks:readRépertorier les abonnements aux webhooks
webhooks:writeCréer, supprimer ou restituer un abonnement
quick_phrases · 2
quick_phrases:readLire les phrases rapides d'un agent
quick_phrases:writeCréer, modifier ou supprimer des phrases rapides
ratings · 1
ratings:readLisez les évaluations des visiteurs et quel agent chacun obtient.
responder · 2
responder:injectsensibleInjectez une réponse dans un chat en direct en tant qu'opérateur IA externe ou bot
responder:escalateconditionnelPour POST /v1/ai/replies : transfert dirigé par l'appelant via escalate=true
widget · 2
widget:readLire l'apparence, le comportement et les paramètres d'intégration du widget
widget:writeMettre à jour les paramètres du widget et purger le cache du widget
departments · 2
departments:readLire les départements, leurs agents et les horaires
departments:writeCréer, mettre à jour ou supprimer des départements et des horaires
messengers · 2
messengers:readLire quels messagers sont connectés (jamais d'identifiants)
messengers:writesensibleConnecter ou déconnecter un messager ; écrit les informations d'identification du fournisseur
ai · 4
ai:readLire les assistants IA, leur configuration et leurs alertes
ai:writeCréez et mettez à jour les assistants, les paramètres d'IA et les opérateurs d'IA, le personnage et l'invite inclus
ai:credentials:writesensibleStocker les informations d'identification du fournisseur LLM tiers (BYOK)
ai:applyApprouver une amélioration qui réécrit le personnage d'un assistant en direct
kb · 2
kb:readLire les règles de la base de connaissances et les sources ingérées
kb:writeCréer, mettre à jour ou supprimer des règles et des sources de la base de connaissances
transcripts · 1
transcripts:readExporter une transcription de discussion
account · 2
account:readLire le profil du compte et toutes ses entités juridiques
account:writeMettre à jour uniquement le nom, le prénom et le téléphone du compte
billing · 2
billing:readLire les enregistrements de facturation et les entités juridiques du widget
billing:writeCréer, mettre à jour, supprimer des entités juridiques ; n'émet aucune facture, ne déplace aucun argent
partners · 2
partners:readLire les données des partenaires et des références
partners:withdrawréservéRéservé : aucune opération de paiement ne l'utilise aujourd'hui
support · 4
support:readLisez les tickets, les discussions actives, leurs messages et vos propres actions auditées
support:replysensibleRépondre à un client en tant qu'opérateur de support
support:writeRéclamez ou libérez un chat, fermez sans réponse, rouvrez
support:tickets:closeFermez uniquement un ticket - rien d'autre
marketing · 2
marketing:readLire les campagnes marketing : bannières, popups, e‑mails
marketing:writeCréer et modifier des campagnes, modifier le statut, lancer un envoi d'e‑mail
broadcasts · 2
broadcasts:readLire les diffusions de messagerie (WhatsApp, Telegram, Messenger, Viber, VK, MAX)
broadcasts:writeCréer, modifier et démarrer une diffusion
problems · 2
problems:readLire les clusters et les paramètres de problèmes client
problems:writeModifier les paramètres et l'état du cluster : nouveau, en cours, résolu, récurrent
invitations · 2
invitations:readLire les règles d'invitation, les variantes A/B, les modèles et l'entonnoir
invitations:writeCréer, modifier, activer ou supprimer des règles et des modèles
04

Points de terminaison

Tout le public apparaît dans une seule liste. Filtrez par ressource, recherchez par chemin, cliquez sur une ligne pour copier une boucle prête.

Affichage de 245 sur 245
GETPOSTPUTPATCHDELETE

ai Assistants, opérateurs, clés, apprentissage, place de marché54

chats Dialogues, messages, transfert, évaluations18

kb Base de connaissances : règles, robot d'exploration, fichiers, recherche16

agents Agents, invitations, métriques14

messengers Messagers, réseaux sociaux et canaux de marché13

billing Solde, abonnements, factures, entités12

support Agent de support : tickets et chats12

widget Paramètres, langue, traductions, skins, cache12

channels Chaînes personnalisées8

external‑operators Votre bot en tant qu'opérateur8

webhook‑subscriptions Abonnements webhooks8

broadcasts Diffusions Messenger7

departments Départements et horaires7

invitations Invitations intelligentes7

marketing Campagnes marketing7

partner Programme partenaire7

wishes Vœux pour l'IA7

contacts Contacts et tags5

problems Analyse des problèmes clients4

quick‑phrases Phrases rapides4

compat Compatibilité des migrations3

stats Statistiques3

account Compte2

files Fichiers2

ratings Notes1

tags Balises1

v1 1

webhook‑events Catalogue d'événements1

Les chemins sont relatifs à https://smartbtn.me/api. Les écritures nécessitent Content‑Type : application/json et X‑Smartbtn‑Idempotency‑Key. Le groupe compat est une couche de compatibilité pour les équipes migrant depuis une autre plateforme de chat.

05

Webhooks

Un POST JSON signé à votre URL chaque fois qu'un événement souscrit se produit. Gérez les abonnements via /v1/webhook‑subscriptions ou dans le tableau de bord.

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

raison : human_request | facturation | ai_non résolu | action_request | … ; priorité : élevée | normale; source : discuter | application | site. Lisez le ticket et sa boîte de dialogue avec GET /v1/support/tickets/{number}.

En‑têtes de livraison

X‑Smartbtn‑EventType d'événement, par ex. message.created.
X‑Smartbtn‑Signaturesha256=v1 : du corps brut.
X‑Smartbtn‑Idempotency‑KeyUne valeur par événement, stable au fil des tentatives. Déduisez dessus.
X‑Smartbtn‑DeliveryUne valeur par tentative de livraison — pour vos journaux.
X‑Smartbtn‑TimestampHeure d'envoi Unix. Informatif, non signé.

Vérification des signatures

HMAC‑SHA256 du corps brut (octets tels que reçus, avant analyse JSON) avec le secret de votre point de terminaison ; comparer en temps constant. Le secret est affiché une fois, lors de la création de l'abonnement ; faites‑le pivoter avec POST /v1/webhook‑subscriptions/{id}/rotate‑secret.

// Node.js · exemple, le secret est un espace réservé
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; }

Nouvelles tentatives et commande

  • Jusqu'à 4 tentatives (le premier envoi plus 3 tentatives), intervalle de min(60, 2^attempt × 5) s — environ 10, 20, 40 s.
  • Un non‑2xx ou un délai d'attente compte comme une tentative échouée. Les livraisons échouées peuvent être renvoyées avec POST /v1/webhook‑subscriptions/{id}/redeliver — même clé d'idempotence, nouvel identifiant de livraison.
  • La livraison est effectuée au moins une fois et non commandée. Les charges utiles sont minimes : des identifiants, pas des enregistrements complets ; récupérer les détails via l'API REST.
06

JS API

Transmettez ce que vous savez déjà sur le visiteur directement à l'agent. Les appels sont acceptés uniquement à partir du domaine défini dans les paramètres du widget.

smartbtn_widget_api.setContactInfo(info)

Définit les données de contact du visiteur. L'agent voit cela comme si le visiteur avait rempli le formulaire d'introduction. Le nom, le téléphone et l'e‑mail jouent un rôle particulier dans Smartbtn — d'où une méthode distincte.

NomTapezDescriptif
namestringNom du visiteur
emailstringE‑mail du visiteur
phonestringTéléphone visiteur
descriptionstringToute information supplémentaire sur le client
Smartbtn_api.setClientInfo({
  name: "Alex Morgan",
  email: "email@example.com",
  phone: "+17584987855",
  description: "Description text"
});

smartbtn_widget_api.setCustomData(fields)

Toutes les données supplémentaires pour le panneau d'informations à droite de l'application agent. Appelez‑le aussi souvent que vous le souhaitez : dans une boîte de dialogue ouverte, le panneau est mis à jour en temps réel. Les champs sont affichés dans l'ordre du tableau.

NomTapezDescriptif
fieldsarrayListe des champs de données
field.titlestringEn route au‑dessus du terrain
field.contentstringContenu du champ ; les balises sont échappées
field.linkstringURL ouverte au 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()

Changez le thème du widget à la volée sans recharger la page (classic, minimal, capsule, liquid) ou contrôlez la fenêtre de discussion par programme. Pour une personnalisation permanente par projet, transmettez les mêmes champs à PATCH /v1/widget/settings.

// JS API · changer de skin sur la page en temps réel
smartbtn_widget_api.setSkin("minimal");
smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "Réponses dans ~1 s" });

// REST API · PATCH /v1/widget/settings (portée 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": "En ligne 24h/24 et 7j/7"
}
Lorsque widget_api_contact_sync est activé, ces appels déclenchent également le webhook contact.updated.
07

Support‑agent API

Un agent d'assistance automatisé gère la file d'attente des tickets et les discussions avec les clients : prend une conversation, répond en tant qu'opérateur d'assistance humain, ferme le ticket. Désactivé jusqu'à ce que le propriétaire du widget l'active.

  1. Le propriétaire le permetRépertorie les jetons autorisés à agir en tant qu'agents de support et les adresses IP à partir desquelles ils peuvent appeler.
  2. Lire la file d'attenteGET /v1/support/tickets · GET /v1/support/chats
  3. Louer un chatPOST …/chats/{id}/claim · …/release
  4. RépondreTexte brut, liens uniquement vers les hôtes autorisés du widget. 201 uniquement une fois le message stocké.
  5. Fermer ou rouvrirPOST …/tickets/{number}/close · …/reopen
PortéePermet
support:readTickets, chats actifs, messages étiquetés client / ai / support / système, propres actions auditées
support:writeRéclamez/libérez un chat, fermez sans réponse, rouvrez
support:replyRépondre au client en tant qu'opérateur support (sensible)
support:tickets:closeFermez uniquement un ticket — pour un bouton « question résolue » sur votre 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": "Terminé, l'accès a été restauré."}'
Le propriétaire peut attribuer aux jetons d’agent d’assistance leur propre limite par minute – ou aucune. Tout autre itinéraire conserve la limite générale.
08

API IA

Tout ce que fait la section IA du tableau de bord : assistants, vos propres clés de fournisseur, base de connaissances, auto‑apprentissage avec restauration, souhaits, problèmes, signaux de demande et un assistant dans votre application.

Assistants et opérateurs IA

Plusieurs assistants avec leur propre rôle et langue, un test avant la mise en ligne, des opérateurs nommés par langue.

  • GET/v1/ai/assistants
  • POST/v1/ai/assistants/{id}/test
  • PATCH/v1/ai/operators/{id}
  • POST/v1/ai/handoff
Portées: ai:read · ai:write
Apportez votre propre clé

Claude, ChatGPT, DeepSeek, Gemini, Mistral, LLM régionaux ou tout compatible OpenAI. Les modèles sont répertoriés par clé.

  • GET/v1/ai/credentials
  • POST/v1/ai/credentials
  • GET/v1/ai/credentials/{id}/models
Portées: ai:read · ai:credentials:write
Base de connaissances

Un robot d'exploration pour votre site, les téléchargements PDF et DOCX, les règles, l'état de recherche et d'indexation.

  • PUT/v1/kb/crawler
  • POST/v1/kb/uploads
  • POST/v1/kb/rules
  • GET/v1/kb/search
Portées: kb:read · kb:write · files:write
Auto‑apprentissage

Réglage des exécutions, des cycles, de l'historique, des versions de personnages avec restauration et 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
Portées: ai:read · ai:write · ai:apply
Vœux pour l'IA

Un souhait en termes simples → un aperçu sans effets secondaires → approuver, rejeter ou revenir.

  • POST/v1/wishes
  • GET/v1/wishes/{id}/preview
  • POST/v1/wishes/{id}/approve
  • POST/v1/wishes/{id}/revert
Portées: ai:write · ai:apply
Problèmes et signaux de demande

Groupes de problèmes avec statuts et plafond de dépenses mensuel ; ce que les clients ont demandé et que vous ne proposez pas.

  • GET/v1/problems
  • PATCH/v1/problems/settings
  • POST/v1/problems/{id}/status
  • GET/v1/ai/demand‑signals
Portées: problems:read · problems:write · ai:read
Statut du client

Votre backend transmet le statut du client (enregistré, payé, client depuis, état du service) dans une demande signée HMAC – l'IA le pèse lors de la réponse et de la remontée.

  • POST/v1/ai/customer‑status
  • POST/v1/ai/tickets
  • GET/v1/ai/alerts
Portées: ai:write · ai:read
Assistant dans votre application

Tours de dialogue, liaison de compte, synthèse vocale et synthèse vocale, tickets d'application - via une intégration signée.

  • 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
Portées: signature d'intégration (HMAC)
Marché des solutions

Assistants prêts par niche : café, clinique, magasin, service automobile. Postulez en une seule demande.

  • GET/v1/ai/marketplace/templates
  • POST/v1/ai/marketplace/templates/{slug}/apply
Portées: ai:read · ai:write
Opérateur IA externe

Votre propre bot répond aux discussions : réponses asynchrones, transfert, tests et cycle de vie.

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

Limites de taux

Par jeton, deux compteurs : les lectures et les écritures sont comptées séparément, de sorte que l'interrogation ne consomme jamais le budget d'écriture.

600 / minlit : GET, HEAD
120 / minécrit : POST, PATCH, PUT, DELETE
429au‑dessus de la limite - attendez Retry‑After
X‑RateLimit‑LimitTaille du compteur dans lequel cette demande a été comptabilisée (600 ou 120)
X‑RateLimit‑RemainingDemandes laissées dans la fenêtre actuelle
X‑RateLimit‑ResetLorsque la fenêtre se réinitialise
Retry‑AfterSur 429 : secondes à attendre
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 et /v1/ai/assistant/account‑link ont leurs propres compteurs ; l'API de l'agent de support peut avoir un remplacement par widget.

10

Erreurs

Chaque erreur est RFC‑7807 application/problem+json : un statut et une raison lisibles par machine, un détail lisible par l'homme.

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

Le corps nomme les require_scopes et où les accorder. Pas besoin de réémettre la clé.

StatutSignification
400Demande mal formée ou clé d'idempotence requise manquante
401Aucun jeton, jeton invalide ou révoqué
403Le jeton n'a pas de portée ; le corps ajoute required_scopes et où l'accorder
404Introuvable dans ce widget
405Méthode non autorisée : arrêt et rapport ; ne cherchez pas d'écritures alternatives
409Clé d'idempotence réutilisée sous 24 h, ou conflit d'état
422La validation a échoué (par exemple, un champ en lecture seule a été envoyé)
429Limite de taux ; respecter Réessayer‑Après
11

Idempotence

Les réseaux échouent. Une clé sécurise une nouvelle tentative d'écriture : la même opération n'est jamais appliquée deux fois.

  • Envoyez X‑Smartbtn‑Idempotency‑Key à chaque POST / PATCH / PUT / DELETE : un nouvel UUID pour une nouvelle opération, la même clé pour une nouvelle tentative de la même.
  • Opérations marquées x‑idempotency : obligatoire dans OpenAPI : pas de clé → 400, la clé réutilisée dans les 24 heures → 409 (pas de succès en cache).
  • Vous n'êtes pas sûr que cela soit passé ? Lisez d'abord l'état. Ne changez jamais la clé automatiquement ; respectez Retry‑After.
  • Un 502 d'un fournisseur en amont libère la clé – réessayez avec la même clé.
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"}'
# erreur réseau ? répéter avec le même $KEY
12

Changelog

Modifications apportées à l'API publique et aux webhooks en 2026. Tout ce qui suit est additif et reste dans v1.

NouveauTickets : webhook ticket.created, lectures de file d'attente avec support : lecture, indice 403

Nouveau billet d'événement en direct créé. GET /v1/support/tickets répond à n'importe quelle clé avec support:read jusqu'à ce qu'un agent de support soit configuré. Les étendues clés sont modifiables sans réédition. 403 gagne require_scopes.

NouveauNom de l'opérateur IA par langue

POST/PATCH /v1/ai/operators accepte name_i18n ; les noms par défaut sont traduits dans le langage des widgets ; choix de salutation prévisible.

ChangementLimite de débit : lectures et écritures comptées à part

Lectures : 600 par minute, écritures : 120. Les sondages ne consomment plus le budget d'écriture. X‑RateLimit-* décrit le compteur qui a été utilisé.

NouveauGET /v1/chats : filtre update_since

Chats avec activité depuis un instant, quel que soit leur âge. Chaque discussion porte désormais last_message_at.

NouveauAPI de support : le chat a demandé la boîte aux lettres

chat.account.email_requested — le chat attend l'adresse ; les agents ne doivent pas démarrer un autre flux de code.

NouveauPrise en charge de la portée : tickets : fermer

Fermez un ticket et rien d'autre — pour un bouton « question résolue » sur votre backend.

NouveauGET /v1/chats : recherche de texte et messages clients

Filtres has_client_messages=1 et q (2 à 100 caractères).

NouveauLien de compte depuis votre backend

POST /v1/ai/assistant/account‑link et /revoke. Éteint jusqu'à ce que le propriétaire l'autorise.

CorrigerBase de connaissances : écrit avec une clé liée à un assistant

Les règles sont intégrées à la clé du widget ou à une clé d'assistant activée ; un 502 libère la clé d'idempotence.

ChangementAPI de l'agent de support : durée de vie du compte app‑ticket

Le compte est visible tant que le ticket est ouvert et pendant 7 jours après.

NouveauAPI de l'agent de support

Nouveau groupe /v1/support : file d'attente, chats, baux, réponses, fermeture et réouverture des tickets. Éteint jusqu'à ce que le propriétaire l'autorise.

NouveauAPI de l'agent de support : fenêtre de code e‑mail

Champs code_ending, code_expires_at, last_code_result et last_code_at.

13

Plugin WordPress

Le widget sur un site WordPress sans toucher au code du thème.

  1. Téléchargerl'archive du plugin sur votre ordinateur.
  2. InstallerPlacez le dossier décompressé dans wp‑content/plugins/ — ou téléchargez‑le dans l'administrateur WordPress.
  3. ActiverUn élément Smartbtn apparaît dans le menu.
  4. Collez le jetonCopiez le jeton de sécurité à partir des paramètres du widget dans votre tableau de bord.
Bon à savoir

Lorsque vous modifiez votre mot de passe, le jeton de sécurité change également et l'ancien cesse de fonctionner : collez le nouveau dans le plugin.

14

Exemples de codes

Répertoriez toutes les discussions ayant eu une activité depuis votre dernier sondage, en suivant le curseur jusqu'à la fin.

# première page
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 — avec next_cursor de la réponse
curl -G https://smartbtn.me/api/v1/chats \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  --data-urlencode "cursor=eyJpZCI6NDgyMDd9"
Prêt

Émettez un jeton et appuyez sur Entrée.