特点人工智能仪表板API定价下载帮助
外观 (Auto: light)
免费试用
首页 / API
API 和开发人员

按 Enter 键。
获取您的数据。

REST API /api/v1、53 个范围、239 个端点、11 个 Webhook 事件和一个用于小部件的 JS API。聊天、联系人、人工智能、知识库、票证和计费 - 无论仪表板做什么,您的代码也可以做什么。

smartbtn.me/api/v1
# 按 Enter 或右侧的标记
$ curl -H "Authorization: Bearer sb_••••" \
    https://smartbtn.me/api/v1/chats?limit=1 
01

快速入门

从零到第一个答案的三个步骤。每个请求都与一个小部件绑定,并使用不记名令牌进行身份验证。

  1. 发行代币仪表板 → API 令牌:名称、可选的到期日和您需要的范围。一个令牌只属于一个小部件。纯文本令牌显示一次; Smartbtn 仅存储单向哈希,因此丢失的令牌无法恢复 - 只能撤销并重新发行。
  2. 打开小部件 API在小部件设置中,打开“允许小部件 API(JS 和 REST)”。发行代币并不会为您打开这个开关。
  3. 发送第一个请求令牌仅进入 Authorization 标头,而不会进入 URL。
# 列出小部件的聊天记录
curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \
     https://smartbtn.me/api/v1/chats
// 200 OK · 光标分页
{
  "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ],
  "next_cursor": "eyJpZCI6NDgyMTB9"   // null — 在最后一页
}
已验证的基本 URL。 https://smartbtn.me/api/v1 是所有项目数据的主要 API 端点。始终通过 HTTPS 发送请求,切勿在重定向时转发令牌。
令牌缺失、无效或范围不足?您会收到带有 RFC‑7807 application/problem+json 正文的 401 或 403 - 请参阅错误。
02

认证

三种路径,取决于谁打电话给谁。默认情况下拒绝访问:无范围 — 无调用。

你 → Smartbtn
REST 调用

每个请求都携带 Authorization: Bearer 。在服务器上,令牌解析为一个小部件及其范围。

Smartbtn → 你
Webhooks、外部 AI 操作员

传出请求使用每个租户的密钥进行签名:X‑Smartbtn‑Signature。如果您的一方需要,可以添加额外的持有者凭证。

您的人工智能运营商 → Smartbtn
异步回复

POST /v1/ai/replies 使用自己的签名框架,固定到您的 AI 操作员和小部件,并由持久的 causation_id 键入。

人们忘记的开关

小部件设置中的“允许小部件 API(JS 和 REST)”会同时打开 REST API 和小部件 JS API。发行令牌并不会启用它。可以在仪表板中编辑现有密钥的范围(API 令牌 → 密钥 → 编辑范围)无需重新颁发 — 集成继续运行。

预设

预设范围当
人工智能设置 9widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:read您的 AI 应用程序配置小部件:助手、知识库、文本。替换整个范围选择。
只读(示例集)chats:read · messages:read · contacts:read · stats:read仪表板、BI、导出。
帮助台桥(示例集)chats:read · messages:read · messages:write · webhooks:write · support:read将对话和票证镜像到您的 CRM 中。
提供商密钥是单独的。仅当所有者授权提供商密钥设置时才授予ai:credentials:write。 AI 设置不需要帐户、计费和合作伙伴权限。该密钥仅显示一次 - 设置完成后将其撤销。
03

范围

53 个路由范围,加上 1 个条件范围和 1 个保留范围。仅当令牌包含路由范围(或列出的替代方案)时,请求才会成功。

53 + 1 个条件 + 1 个保留
敏感的有条件的保留
适用范围补助金
chats · 2
chats:read读取聊天记录及其元数据
chats:write关闭聊天、请求评级、转移、声明、附加或分离代理
messages · 2
messages:read读取聊天消息历史记录
messages:write作为代理发送消息、输入指示符并阅读回执
contacts · 2
contacts:read读取联系人
contacts:write更新联系人字段和属性
agents · 3
agents:read了解代理及其存在
agents:write敏感的邀请、更新、暂停、恢复或删除代理;受邀者可以看到小部件的每条聊天记录
agents:events:read读取代理的事件日志和每个代理的指标
tags · 2
tags:read读取标签
tags:write将标签附加到联系人
files · 2
files:read下载已上传的文件
files:write上传新文件
stats · 1
stats:read阅读聚合聊天、消息和评级统计数据
channels · 3
channels:read读取自定义频道的在线状态
channels:write在自定义渠道上传递入站消息
channels:register注册新的自定义频道(仅限已安装的应用程序)
webhooks · 2
webhooks:read列出 webhook 订阅
webhooks:write创建、删除或重新发送订阅
quick_phrases · 2
quick_phrases:read阅读代理的简短短语
quick_phrases:write创建、编辑或删除快速短语
ratings · 1
ratings:read阅读访客评分以及每个客服人员的得分
responder · 2
responder:inject敏感的作为外部 AI 操作员或机器人将回复注入实时聊天
responder:escalate有条件的对于 POST /v1/ai/replies:通过 escalate=true 进行呼叫者定向切换
widget · 2
widget:read读取小部件的外观、行为和嵌入设置
widget:write更新小部件设置并清除小部件缓存
departments · 2
departments:read阅读部门、他们的代理人和时间表
departments:write创建、更新或删除部门和计划
messengers · 2
messengers:read读取已连接的信使(绝不是凭据)
messengers:write敏感的连接或断开信使;写入提供者凭证
ai · 4
ai:read了解 AI 助手及其配置和警报
ai:write创建和更新助手、AI 设置和 AI 操作员、角色和提示
ai:credentials:write敏感的存储第三方 LLM 提供商凭证 (BYOK)
ai:apply批准重写实时助理角色的改进
kb · 2
kb:read阅读知识库规则和摄取来源
kb:write创建、更新或删除知识库规则和源
transcripts · 1
transcripts:read导出聊天记录
account · 2
account:read阅读帐户资料及其所有法律实体
account:write仅更新帐户的姓名和电话
billing · 2
billing:read读取小部件的账单记录和法律实体
billing:write创建、更新、删除法人实体;不开具发票,不转移资金
partners · 2
partners:read读取合作伙伴和推荐数据
partners:withdraw保留保留:今天没有支付操作使用它
support · 4
support:read阅读票证、活跃聊天、他们的消息和自己审核的操作
support:reply敏感的作为支持操作员回答客户问题
support:write声明或释放聊天,关闭而不回复,重新打开
support:tickets:close只关闭一张票 - 没有其他
marketing · 2
marketing:read阅读营销活动:横幅、弹出窗口、电子邮件
marketing:write创建和编辑营销活动、更改状态、开始发送电子邮件
broadcasts · 2
broadcasts:read阅读即时通讯广播(WhatsApp、Telegram、Messenger、Viber、VK、MAX)
broadcasts:write创建、编辑和开始广播
problems · 2
problems:read读取客户问题集群和设置
problems:write更改设置和集群状态:新的、进行中、已解决、重复
invitations · 2
invitations:read阅读邀请规则、A/B 变体、模板和渠道
invitations:write创建、编辑、启用或删除规则和模板
04

端点

整个公共表面都在一个列表中。按资源过滤,按路径搜索,单击一行复制准备好的卷曲。

显示第 245 个,共 245 个
GETPOSTPUTPATCHDELETE

ai 助理、操作员、钥匙、学习、市场54

chats 对话、消息、传输、评级18

kb 知识库:规则、爬虫、文件、搜索16

agents 代理、邀请、指标14

messengers 通讯工具、社交网络和市场渠道13

billing 余额、订阅、发票、实体12

support 支持代理:票证和聊天12

widget 设置、语言、翻译、皮肤、缓存12

channels 定制频道8

external‑operators 您的机器人作为操作员8

webhook‑subscriptions Webhook 订阅8

broadcasts 信使广播7

departments 部门及日程7

invitations 智能邀请7

marketing 营销活动7

partner 合作伙伴计划7

wishes 对人工智能的愿望7

contacts 联系人和标签5

problems 客户问题分析4

quick‑phrases 快速短语4

compat 迁移兼容性3

stats 统计数据3

account 账户2

files 文件2

ratings 评级1

tags 标签1

v1 1

webhook‑events 活动目录1

路径相对于 https://smartbtn.me/api。写入需要 Content‑Type: application/json 和 X‑Smartbtn‑Idempotency‑Key。 compat 组是一个兼容层,供从其他聊天平台迁移的团队使用。

05

网络钩子

每当订阅事件发生时,都会将签名的 JSON POST 发送到您的 URL。通过 /v1/webhook‑subscriptions 或在仪表板中管理订阅。

POST 你的网址 · 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"
  }
}

原因: human_request |计费 | ai_未解决 |行动请求| ……;优先级:高 |普通的;来源:聊天 |应用程序 |地点。使用 GET /v1/support/tickets/{number} 阅读票证及其对话框。

交付标头

X‑Smartbtn‑Event事件类型,例如message.created。
X‑Smartbtn‑Signature原始正文的 sha256=v1:。
X‑Smartbtn‑Idempotency‑Key每个事件一个值,重试后保持稳定。对其进行重复数据删除。
X‑Smartbtn‑Delivery每次传输尝试都有一个值 - 对于您的日志。
X‑Smartbtn‑Timestamp发送的 Unix 时间。信息性的,未签名。

签名验证

原始正文(JSON 解析之前收到的字节)的 HMAC‑SHA256 以及您的端点密钥;在恒定时间内进行比较。创建订阅时,秘密会显示一次;使用 POST /v1/webhook‑subscriptions/{id}/rotate‑secret 旋转它。

// Node.js · 例如,秘密是一个占位符
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; }

重试并订购

  • 最多 4 次尝试(第一次发送加上 3 次重试),回退 min(60, 2^attempt × 5) 秒 — 大约 10、20、40 秒。
  • 非 2xx 或超时算作失败的尝试。失败的交付可以使用 POST /v1/webhook‑subscriptions/{id}/redeliver 重新发送 - 相同的幂等密钥、新的交付 ID。
  • 交付至少一次并且未订购。有效负载是最小的——ID,而不是完整的记录;通过 REST API 获取详细信息。
06

JS API

将您对访客的已知信息直接传递给代理。仅接受来自小部件设置中设置的域的呼叫。

smartbtn_widget_api.setContactInfo(info)

设置访客的联系数据。代理将其视为访客填写了介绍表格。姓名、电话和电子邮件在 Smartbtn 中发挥着特殊作用 - 因此是一个单独的方法。

名称类型描述
namestring访客姓名
emailstring访客电子邮件
phonestring访客电话
descriptionstring有关客户的任何额外信息
Smartbtn_api.setClientInfo({
  name: “亚历克斯·摩根”,
  email: "email@example.com",
  phone: "+17584987855",
  description: "Description text"
});

smartbtn_widget_api.setCustomData(fields)

代理应用程序右侧信息面板的任何额外数据。您可以随意调用它——在打开的对话框中,面板会实时更新。字段按数组顺序显示。

名称类型描述
fieldsarray数据字段列表
field.titlestring前往球场上方
field.contentstring字段内容;标签被转义
field.linkstring点击打开的网址
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()

动态切换小部件主题,无需重新加载页面(classic、minimal、capsule、liquid)或以编程方式控制聊天窗口。对于永久的每个项目自定义,请将相同的字段传递给 PATCH /v1/widget/settings。

// JS API · 实时切换页面皮肤
smartbtn_widget_api.setSkin("minimal");
smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: “约 1 秒内回复” });

// REST API · PATCH /v1/widget/settings (范围 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": “24/7 在线”
}
启用 widget_api_contact_sync 后,这些调用还会触发 contact.updated Webhook。
07

Support‑agent API

自动化支持代理负责工单队列和客户聊天:进行聊天,作为人工支持操作员进行回答,关闭工单。关闭直到小部件所有者将其打开。

  1. 楼主启用了列出允许充当支持代理的令牌以及它们可以调用的 IP。
  2. 读取队列GET /v1/support/tickets · GET /v1/support/chats
  3. 租个聊天室POST …/chats/{id}/claim · …/release
  4. 回复纯文本,仅链接到小部件允许的主机。 201 仅在消息被存储后。
  5. 关闭或重新打开POST …/tickets/{number}/close · …/reopen
适用范围允许
support:read票证、活跃聊天、标记为客户端/人工智能/支持/系统的消息、自己审核的操作
support:write声明/释放聊天,关闭而不回复,重新打开
support:reply作为支持操作员回答客户问题(敏感)
support:tickets:close仅关闭票证 - 对于后端的“问题已解决”按钮
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":"完成,访问已恢复。"}'
所有者可以为支持代理令牌提供自己的每分钟限制,或者根本没有限制。所有其他路线均保持一般限制。
08

人工智能应用程序接口

仪表板的人工智能部分所做的一切:助手、您自己的提供商密钥、知识库、带回滚的自学、愿望、问题、需求信号和应用程序内的助手。

助理和人工智能操作员

几个助手有自己的角色和语言,上线前进行测试,按语言指定操作员。

  • GET/v1/ai/assistants
  • POST/v1/ai/assistants/{id}/test
  • PATCH/v1/ai/operators/{id}
  • POST/v1/ai/handoff
范围: ai:read · ai:write
带上你自己的钥匙

Claude、ChatGPT、DeepSeek、Gemini、Mistral、地区法学硕士或任何 OpenAI 兼容的。型号按键列出。

  • GET/v1/ai/credentials
  • POST/v1/ai/credentials
  • GET/v1/ai/credentials/{id}/models
范围: ai:read · ai:credentials:write
知识库

用于您的网站、PDF 和 DOCX 上传、规则、搜索和索引状态的爬虫。

  • PUT/v1/kb/crawler
  • POST/v1/kb/uploads
  • POST/v1/kb/rules
  • GET/v1/kb/search
范围: kb:read · kb:write · files:write
自学

通过回滚和终止开关调整运行、周期、历史、角色版本。

  • POST/v1/ai/learning/tune
  • GET/v1/ai/learning/cycles
  • POST/v1/ai/learning/persona‑versions/{version}/revert
  • GET/v1/ai/learning/kill‑switch
范围: ai:read · ai:write · ai:apply
对人工智能的愿望

简单的愿望 → 无副作用的预览 → 批准、拒绝或恢复。

  • POST/v1/wishes
  • GET/v1/wishes/{id}/preview
  • POST/v1/wishes/{id}/approve
  • POST/v1/wishes/{id}/revert
范围: ai:write · ai:apply
问题和需求信号

具有状态和每月支出上限的问题集群;客户要求但您没有提供的内容。

  • GET/v1/problems
  • PATCH/v1/problems/settings
  • POST/v1/problems/{id}/status
  • GET/v1/ai/demand‑signals
范围: problems:read · problems:write · ai:read
客户状态

您的后端会在 HMAC 签名的请求中推送客户状态(已注册、已付费、自客户以来、服务状态)——AI 在应答和升级时会对其进行权衡。

  • POST/v1/ai/customer‑status
  • POST/v1/ai/tickets
  • GET/v1/ai/alerts
范围: ai:write · ai:read
您应用程序中的助手

对话轮流、帐户链接、语音转文本和文本转语音、应用程序票证 - 通过签名集成。

  • 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
范围: 集成签名(HMAC)
解决方案市场

按细分市场准备的助手:咖啡馆、诊所、商店、汽车服务。一次申请。

  • GET/v1/ai/marketplace/templates
  • POST/v1/ai/marketplace/templates/{slug}/apply
范围: ai:read · ai:write
外部AI操作员

您自己的机器人回答聊天:异步回复、切换、测试和生命周期。

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

速率限制

每个令牌有两个计数器:读取和写入是分开计算的,因此轮询永远不会消耗写入预算。

600 / 分钟读作:获取、头部
120 / 分钟写入:POST、PATCH、PUT、DELETE
429超出限制 — 等待 Retry‑After
X‑RateLimit‑Limit此请求计入的计数器大小(600 或 120)
X‑RateLimit‑Remaining当前窗口中剩余的请求
X‑RateLimit‑Reset当窗口重置时
Retry‑AfterOn 429:等待秒数
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 和 /v1/ai/assistant/account‑link 有自己的计数器;支持代理 API 可以覆盖每个小部件。

10

错误

每个错误都是 RFC‑7807 application/problem+json:机器可读的状态和原因,人类可读的细节。

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

主体名称 required_scopes 以及授予它们的位置。无需重新颁发密钥。

状态含义
400格式错误的请求或缺少所需的幂等性密钥
401无令牌、令牌无效或已撤销
403令牌缺乏范围;正文添加 required_scopes 以及授予它的位置
404在此小部件中找不到
405不允许的方法——停止并报告;不寻找替代写入
409幂等密钥在24小时内重复使用,或者状态冲突
422验证失败(例如发送了只读字段)
429速率限制;尊重重试后
11

幂等性

网络失败。密钥使重试写入变得安全:相同的操作永远不会应用两次。

  • 每次 POST / PATCH / PUT / DELETE 时发送 X‑Smartbtn‑Idempotency‑Key:新操作的新 UUID,重试相同操作的相同密钥。
  • OpenAPI 中标记为 x‑idempotency: required 的操作:无密钥 → 400,密钥在 24 小时内重复使用 → 409(不是缓存的成功)。
  • 不确定它通过了吗?首先阅读状态。切勿自动更改密钥;尊重重试后。
  • 来自上游提供商的 502 释放密钥 - 使用相同的密钥重试。
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"}'
# 网络错误?使用相同的 $KEY 重复
12

Changelog

2026 年公共 API 和 Webhook 的更改。以下所有内容都是附加的,并保留在 v1 中。

新票证:ticket.created webhook,队列读取支持:read,403提示

新的现场活动门票已创建。 GET /v1/support/tickets 使用 support:read 回答任何键,直到配置支持代理。关键范围可编辑,无需重新发布。 403 获得 required_scopes。

新每种语言的 AI 操作员名称

POST/PATCH /v1/ai/operators 接受 name_i18n;默认名称被翻译成小部件语言;可预测的问候语选择。

改变速率限制:读取和写入分开计算

读取 — 每分钟 600 次,写入 — 120 次。轮询不再占用写入预算。 X‑RateLimit-* 描述所使用的计数器。

新GET /v1/chats:updated_since 过滤器

无论年龄多大,从一瞬间开始就开始活跃聊天。现在每个聊天都带有last_message_at。

新支持API:聊天时索要邮箱

chat.account.email_requested — 聊天等待地址;代理不得启动另一个代码流。

新支持范围:门票:关闭

关闭票证,仅此而已 - 只需在后端点击“问题已解决”按钮即可。

新GET /v1/chats:文本搜索和客户端消息

过滤 has_client_messages=1 和 q(2–100 个字符)。

新来自您后端的帐户链接

POST /v1/ai/assistant/account‑link 和 /revoke。关闭直到所有者启用它。

修复知识库:使用助手绑定键进行写入

规则嵌入到小部件键或启用的辅助键中; a 502释放幂等性密钥。

改变支持代理 API:应用程序票证帐户生命周期

该帐户在票证打开期间及其后 7 天内可见。

新支持代理 API

新的/v1/支持组:队列、聊天、租赁、回复、关闭和重新打开票证。关闭直到所有者启用它。

新支持代理 API:电子邮件代码窗口

字段 code_pending、code_expires_at、last_code_result 和 last_code_at。

13

WordPress 插件

WordPress 网站上的小部件无需触及主题代码。

  1. 下载将插件存档保存到您的计算机上。
  2. 安装将解压后的文件夹放入 wp‑content/plugins/ — 或在 WordPress 后台上传。
  3. 激活菜单中会出现 Smartbtn 项。
  4. 粘贴令牌从仪表板的小部件设置中复制安全令牌。
很高兴知道

当您更改密码时,安全令牌也会更改,旧的令牌将停止工作 - 将新的令牌粘贴到插件中。

14

代码示例

列出自上次投票以来的所有聊天活动 - 跟随光标一直到末尾。

# 第一页
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 — 响应中的 next_cursor
curl -G https://smartbtn.me/api/v1/chats \
  -H "Authorization: Bearer $SMARTBTN_TOKEN" \
  --data-urlencode "cursor=eyJpZCI6NDgyMDd9"
准备好了

发出令牌 — 然后按 Enter 键。