服务端 API 概览

服务端 API 更新于 2026-09-21 阅读 79

阅读指引:本篇是《开放平台服务端 API 指南》的总览。本套文档共 12 篇(本篇为总览),本篇说明平台可用能力与各接口请求限制总表。

文档目录

# 文档 内容 原指南章节
1 创建应用与取得凭据 应用创建流程、标识规范、凭据交付 第 2 章
2 应用级 Token client_credentials 获取与刷新 第 4 章
3 用户授权 OAuth2 权限 Scope、H5 / JSSDK 授权、用户资料 第 3 / 5 / 6 / 7 章
4 素材上传与下载 素材类型限制、上传与原始下载 第 8 章
5 发送应用消息 文本 / 卡片 / 模板卡片、代发、去重重试 第 9 章
6 Webhook 事件回调 验签、消息与组织 / 群事件、媒体下载 第 10 章
7 JSSDK 配置与签名 jsapi_ticket、config、受保护能力 第 11 章
8 发布范围与资源边界 可见范围与数据维度对调用的影响 第 12 章
9 组织目录同步 同步 Token、部门与成员可靠同步 第 13 章
10 群应用与群数据同步 群生命周期、群与成员增量获取 第 14 章
11 Scope 映射与错误处理 接口映射总表、业务码、安全清单 第 15 / 16 章

编号说明:各篇标题编号沿用原《开放平台应用开发者指南》章节编号(如「9.3 文本消息」),正文中「N.N 节」「第 N 章」均指原指南对应位置,跨篇引用时对照上表即可。

文档版本

第三方接入正式稿 · 2026-09-13。面向服务号应用后端与 H5 开发者,完整说明应用凭据、OAuth2、OpenAPI、发布范围、组织与群应用可靠同步、素材、消息、Webhook 与 JSSDK。接口字段、调用流程与错误处理以本文为准;客户端 SDK 安装包及适配版本由平台接入方交付。

按任务查找

首次接入:创建应用 → 确认权限 → 获取应用 Token / 用户授权 → 选择业务接口 → 上线前检查(错误处理与安全清单)。Token 类型取决于目标接口。

  • 接入准备:可用能力(本篇)、创建应用与获取凭据
  • 认证与授权:权限与 Scope、应用 Token、H5 用户授权、JSSDK 用户授权、发布范围
  • 用户与组织:当前授权用户信息与头像、组织目录同步、群应用与群成员同步
  • 消息与素材:发送应用消息、模板卡片、代发消息、消息去重重试、素材上传下载
  • 事件与回调:Webhook 验签、用户消息、卡片操作、组织与群变化、媒体下载、重试幂等
  • 客户端 JSSDK:config 初始化与签名、closeWindow、openChat、JSSDK 错误码
  • 接口参考:请求限制总表(本篇)、Scope 与接口映射、错误处理与安全清单

1. 可用能力

本文说明第三方服务号应用的公开接入契约。HTTP 接口须使用平台交付的服务地址;JSAPI 须运行在平台提供的兼容客户端与 SDK 中。应用取得凭据及 Scope 后,还须满足各接口的授权、发布范围、群绑定或客户端条件。

OAuth2应用 Token、用户授权 code、用户 Token、刷新和撤销。

用户资料读取当前授权用户资料,以及下载短期头像资源。

应用素材上传文件、语音、视频和图片,下载当前应用原始素材。

消息发送应用自身向用户、组织节点、全员或单个已绑定群发送消息,支持文本、素材、普通卡片和可回传菜单点击的模板卡片;也可在用户授权后向用户或群代发。

组织目录读取授权组织、成员与人员详情,并通过同步 Token 判断是否需要全量同步。

群应用群主或管理员添加应用后,应用可以同步该群及成员,并以应用身份向该群发送消息。

Webhook 事件URL 验证、用户消息、模板卡片菜单操作、组织目录与群应用变化通知、请求签名和短期媒体下载。

JSSDKreadyerrorgetAuthCodeconfigcloseWindowchooseChatopenChat

重置 app_secret 时的操作要求重置会撤销该应用已经签发的应用 Token 和用户 Token。为避免仍在执行的旧凭据请求返回不可继续使用的 Token,轮换时应先暂停应用后端的换 Token 和刷新请求,完成重置及新密钥配置后再恢复,并丢弃所有使用旧 app_secret 发起的请求结果。

基础地址{OPENAPI_BASE_URL}/openapi/v1,例如 https://openapi.example.com/openapi/v1

3.1 每个 HTTP 接口的请求限制

两类限制必须同时满足请求速率限制控制调用频率;请求规则限制 Token 类型、Scope、目标语义、参数、大小和资源边界。通过其中一类检查不代表请求一定合法。

所有 /openapi/v1/* 请求首先共享来源 IP 每分钟 300 次的全局固定窗口限制。下表“专用请求速率”在全局限制之外叠加;“无”仅表示没有额外接口级额度。同一出口 IP 的多个应用共享全局额度;不要通过切换连接或访问地址规避限制。各专用接口分别计数,同一发送接口的四种目标共享发送额度。命中全局限流时返回 HTTP 200、业务码 170108;消息、JSSDK 等专用限流同样返回 HTTP 200、170108;只有素材接口自身的专用限流返回 HTTP 429、170507

接口 所需能力(Scope) 专用请求速率 请求规则
GET /oauth2/authorize 无固定能力;scope 参数须为应用已获授且允许用户授权的能力 受支持的已登录客户端入口;client_id/redirect_uri/response_type/scope/state 必填,response_type=code,回调 URI 精确匹配,state 非空且最多 256 UTF-8 字节,Scope 非空且不重复,用户须在发布范围内。
POST /oauth2/token 无额外业务能力 请求体最大 1 MiB;支持 JSON、表单与 HTTP Basic;grant 只允许 client_credentials/authorization_code/refresh_token。多处凭据必须一致;code 5 分钟内一次性使用;refresh 成功后整组 Token 轮换。
POST /oauth2/user_authorization/revoke 无额外业务能力 请求体最大 1 MiB,仅用户 Token;scope 非空撤销单个,省略或空字符串撤销全部;两者都会撤销相关用户 Token。
GET /user/profile user:profile:read<br>获取当前用户基础信息(用户授权) 仅具备该能力的用户 Token;只能读取 Token 对应用户且复核当前发布范围,不接收目标用户参数。
GET /media/avatar/{variant} 无额外能力 仅使用 profile 返回的短期签名 resource;不需要 Bearer Token,不得修改或自行拼装;失败统一为 404 空 body。
POST /materials material:manage<br>管理应用素材 每应用 + 来源 IP 每分钟 10 次 仅应用 Token;整个 multipart 最大约 20 MiB + 64 KiB;query 只能有一个 type,表单只能有一个名为 media 的文件 part。
GET /materials/content material:manage<br>管理应用素材 每应用 + 来源 IP 每分钟 60 次 仅应用 Token;只能有一个 media_id,素材须属于当前应用且可用;不支持 Range。
POST /messages/send<br>recipient.type=user message:send:user<br>发送用户消息 每应用 + 来源 IP 每分钟 60 次 严格 JSON,最大 64 KiB,仅应用 Token;用户须存在,并满足发布范围及该能力的目标策略。
POST /messages/send<br>recipient.type=org_node message:send:org_node<br>发送组织节点消息 每应用 + 来源 IP 每分钟 60 次 类型必须写 org_node,不能写 department;节点须 active 且在有效组织范围内,固定覆盖自身及当前全部后代。
POST /messages/send<br>recipient.type=all message:send:all<br>发送全员消息 每应用 + 来源 IP 每分钟 60 次 必须省略 ids;all 只表示租户全部有效用户,且仅在发布范围显式含 user:0 时允许。
POST /messages/send<br>recipient.type=group group:app<br>群应用能力 每应用 + 来源 IP 每分钟 60 次 严格 JSON,最大 64 KiB,仅应用 Token;ids 必须且只能包含一个已 active 绑定的群 ID;部门群暂停、群不可用或关系已移除时拒绝。
POST /messages/delegate_send message:delegate:send<br>代表用户发送消息(用户授权) 每应用 + 用户每秒 5 次;另叠加每应用 + 来源 IP 每分钟 60 次 严格 JSON、最大 64 KiB,仅具备该能力的用户 Token;目标仅 user/group,禁止 org_node/all;不能向发送者本人代发,群目标要求发送者为有效成员。
GET /messages/media/download 无额外能力 每应用 + 来源 IP 每分钟 60 次 应用 Token;只能提交 Webhook 返回的单个 resource_id,票据绑定应用与原消息且短期有效;禁止其他 query 和 Range。
POST /jssdk/ticket 无额外能力 每应用 + 来源 IP 每分钟 60 次 请求体最大 1 MiB但不接收业务参数;仅应用 Token;按 expires_in 缓存复用,不得为每个页面重复申请。
GET /groups/changes group:app<br>群应用能力 仅应用 Token;query 只允许 cursor/limit,limit 默认 50、最大 200;首次省略 cursor,后续原样使用响应游标。
GET /groups/info group:app<br>群应用能力 仅应用 Token;query 必须且只能包含一个正整数 group_id;应用必须仍与该群 active 绑定。
GET /groups/members group:app<br>群应用能力 仅应用 Token;query 只允许 group_id/cursor/limit;首次省略 cursor 获取全量,后续使用不透明游标获取增量。
GET /organization/sync-state contact:organization:read<br>读取组织架构 仅具备该能力的应用 Token;可用 If-None-Match 传上次 Token;304 无 body。
POST /organization/sync-complete contact:organization:read<br>读取组织架构 请求体最大 8 KiB;sync_token 必填且非空,须与本轮目录读取使用的 Token 相同;版本变化返回 409。
GET /organization/departments contact:organization:read<br>读取组织架构 query 只能省略或只含一个正整数 id;省略返回范围内全量 active 组织,提供时返回该节点与 active 后代。
GET /organization/department-detail contact:organization:read<br>读取组织架构 query 只能有一个正整数 id;目标须 active 且处于组织发布范围内。
GET /organization/department-users contact:organization:read<br>读取组织架构 query 只允许 id/page/page_size;id 必填;page 省略时为 1,显式提供时必须为正整数(page=0 无效);page_size 小于 100 归一为 100、大于 500 归一为 500;只含直接任职用户。
GET /organization/user-detail contact:organization:read<br>读取组织架构 query 只能有一个正整数 user_id;用户须在有效用户范围内,返回任职仍受可见组织范围约束。