开发者
在此构建,基于 Mateflow API。
一把密钥,对应一个社区。读取帖子、信息流、空间与成员,代表你的成员发布内容,并通过 Webhooks 接收每一个事件——全部来自同一套 JSON API。
能力
集成所需的一切
作用域化的 API 密钥
在社区后台创建密钥,并只授予它需要的那几个 scope。用 X-API-Key 请求头鉴权,没有会话需要维护。
Growth 及以上
JSON API
通过同一层响应信封读写你的社区。所有端点都在 /site_open_api/v1 之下,一律 POST + JSON 请求体,社区由密钥反查得出。
Growth 及以上
Webhooks
注册端点即可实时接收事件。投递体带有稳定的 event_id,可用来对重试去重;同一个 id 也会出现在 Slack、Discord 与 Zapier 那一侧。
Growth 及以上
集成
在集成中心连接 Slack、Discord 与 Zapier,浏览应用目录,并在同一处管理所有已连接的应用。
单点登录
把团队和成员的身份认证收拢到一处,而不是再维护一套独立的凭据。
Business 及以上
投递日志
每一次 Webhook 投递尝试都会连同请求体与响应一起记录。可以查看失败的投递、确认你返回了什么,并在后台重试。
Growth 及以上
24 个端点,一层信封
全部位于 https://api.mateflow.com/site_open_api/v1,一律 POST + JSON 请求体。下面是多数集成会最先用到的几个——完整清单在参考文档里。
- POST/capabilities/get无需 scope查看密钥、scope 与剩余额度
- POST/site/getsite.read读取社区资料与设置
- POST/feed/listcontent.read翻阅社区信息流
- POST/post/searchcontent.read搜索帖子
- POST/post/createcontent.write以成员身份发帖
- POST/space/listspaces.read列出该视角可见的空间
- POST/member/lookupmembers.read用邮箱解析出成员
- POST/media/get_tokenmedia.write获取媒体上传令牌
快速上手
三步开始
打开 API 权限
API 权限是一项由社区所有者开启的套餐功能。没有它,每次调用都返回 22203,也创建不出密钥——所以先从这里开始,而不是先检查代码。
创建一把作用域化的密钥
社区后台 → 集成 → API Keys。只勾选你需要的 scope;密钥创建后 scope 就固定了。完整密钥只展示一次。
先调 /capabilities/get
它会告诉你密钥的 scope、API 权限是否开启、以及还剩多少额度——而且当套餐门禁或额度把其他调用全部挡住时,只有它仍然调得通。它不消耗额度。
用量与限制
各套餐的额度
日配额统计的是所有通过鉴权的请求,UTC 零点重置。配额为 0 是一扇关上的门,不是「没配所以无限」——它会让每次调用都返回 22204。
| 套餐 | 开放 API | 每日请求数 | Webhook 端点数 |
|---|---|---|---|
| Starter | 不包含 | — | — |
| Growth | 包含 | 5,000 | 5 |
| Business | 包含 | 10,000 | 20 |
| Enterprise | 包含 | 无限 | 无限 |
日配额之上还有按密钥生效的突发限流——见参考文档中的速率限制一节。
你的第一次调用,三种写法
同一个请求的三种语言写法:在写任何别的代码之前,先确认密钥可用。把 mfk_xxx 换成后台里的真实密钥。
curl -X POST \
https://api.mateflow.com/site_open_api/v1/capabilities/get \
-H "X-API-Key: mfk_xxx" \
-H "Content-Type: application/json" \
-d '{}'const res = await fetch(
"https://api.mateflow.com/site_open_api/v1/capabilities/get",
{
method: "POST",
headers: {
"X-API-Key": process.env.MATEFLOW_API_KEY,
"Content-Type": "application/json",
},
// Endpoints that take no parameters still want a JSON body.
body: "{}",
},
);
const { code, data } = await res.json();
// Branch on `code`, never on the HTTP status:
// 22203 and 22204 are 403, and only 10202 is throttling.
if (code !== 0) throw new Error(`Mateflow API error ${code}`);
console.log(data.scopes, data.quota_used, data.quota_limit);import os, requests
res = requests.post(
"https://api.mateflow.com/site_open_api/v1/capabilities/get",
headers={"X-API-Key": os.environ["MATEFLOW_API_KEY"]},
json={},
)
body = res.json()
if body["code"] != 0:
raise RuntimeError(f"Mateflow API error {body['code']}")
print(body["data"]["scopes"], body["data"]["api_access"])OpenAPI 契约
这份机器可读契约覆盖全部路径与请求/响应 schema,可以直接喂给任意客户端生成器。官方 SDK 在路线图上;在那之前,先生成一个。
参考文档
完整 API 参考
Scope、分页、幂等、错误码、速率限制、Webhook 去重——以及那几个上线之后才会咬人的例外。