Skip to content
POST{BASE_URL}/wx-api/api/message/sync
只读实测 2026-09-06消息JSON · Bearer App Token · body appid

同步消息

主动拉取消息。正常情况下新消息通过 Webhook 推送给你;本接口用于补拉(掉线补偿、历史回溯、首次全量)。

说明与注意

  • 响应 data 包含 countisEndlist 列表;消息对象里的 idsyncKey 是 int64。
  • 本接口拉取历史时,content 基本是 protobuf,文本拿不到明文;Webhook 推送的文本是明文数组,媒体是带下载凭证的明文对象。推送和同步消息要分开解析,发送响应则回显你发送的内容。见回调字典

请求参数

参数必填类型说明
appidstring实例 appid,标识操作哪个已登录账号。示例:we_xxxxxxxxxxxxxxx
limitint64拉取条数。示例:100
syncKey增量时必填int64上次同步游标;首次可传 0。示例:15875106

请求示例

http
POST {BASE_URL}/wx-api/api/message/sync
Authorization: Bearer <你的 App Token>
Content-Type: application/json

{
  "appid": "we_xxxxxxxxxxxxxxx",
  "limit": 100,
  "syncKey": 15875106
}
bash
curl -X POST '{BASE_URL}/wx-api/api/message/sync' \
  -H 'Authorization: Bearer <你的 App Token>' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "appid": "we_xxxxxxxxxxxxxxx",
  "limit": 100,
  "syncKey": 15875106
}'
python
import requests

url = "{BASE_URL}/wx-api/api/message/sync"
headers = {"Authorization": "Bearer <你的 App Token>", "Content-Type": "application/json"}
body = """{
  "appid": "we_xxxxxxxxxxxxxxx",
  "limit": 100,
  "syncKey": 15875106
}"""

resp = requests.post(url, headers=headers, data=body.encode("utf-8"))
print(resp.text)
java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

String url = "{BASE_URL}/wx-api/api/message/sync";
String body = "{\n" +
    "  \"appid\": \"we_xxxxxxxxxxxxxxx\",\n" +
    "  \"limit\": 100,\n" +
    "  \"syncKey\": 15875106\n" +
    "}";

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create(url))
    .header("Authorization", "Bearer <你的 App Token>")
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(body))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
php
<?php

$url = '{BASE_URL}/wx-api/api/message/sync';
$body = <<<'JSON'
{
  "appid": "we_xxxxxxxxxxxxxxx",
  "limit": 100,
  "syncKey": 15875106
}
JSON;

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer <你的 App Token>',
    'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

响应示例

json
{
  "code": 0,
  "data": {
    "count": 935,
    "isEnd": false,
    "list": [
      {
        "id": 1136157,
        "syncKey": 12269915,
        "messageType": 3,
        "fromUserId": 10120,
        "toUserId": 0,
        "roomId": 10120,
        "contentType": 31,
        "sendTime": 1780878274,
        "appInfo": "wwdailyindustrynews_appinfo_1780848000",
        "senderName": "",
        "content": {
          "msgType": 31,
          "hex": "0ae9020a4be5908ce4ba8be4bbace59ca8e79c8b..."
        },
        "extraData": "<base64>",
        "flag": 0,
        "devInfo": 0,
        "summary": ""
      }
    ],
    "syncKey": 12370562
  },
  "detail": "",
  "message": "ok",
  "time": "2026-09-06 11:12:58"
}

响应字段

响应字段(26 项)
字段类型说明
codeint64统一封套状态码:0=成功,负数=失败
dataobject业务数据
data.countint64本批返回条数
data.isEndboolean是否已到末页
data.listarray<object>消息对象数组
data.list[].idint64记录/文件业务标识
data.list[].syncKeyint64同步游标;增量拉取的断点
data.list[].messageTypeint64会话类型:0 好友(单聊)、1 群聊、3 系统通知,与 Webhook 报文外层的 messageType 同一取值,见会话类型
data.list[].fromUserIdint64发送方 id(uin);群消息里是真实发送成员
data.list[].toUserIdint64接收方 id(uin),通常是本账号
data.list[].roomIdint64群会话 id;非群消息为 0
data.list[].contentTypeint64消息类型码(0 文本/14 图片/23 视频…)
data.list[].sendTimeint64发送时间(Unix 秒)
data.list[].appInfostring企微内部透传串(base64);群发/待发送场景需回填,业务方不必解析
data.list[].senderNamestring发送者昵称(可能为空)
data.list[].contentobject消息内容;文本为数组、媒体为对象;未解析的消息为 {msgType, hex}(hex=protobuf 原始十六进制)
data.list[].content.msgTypeint64消息类型码,决定 content 形状(见类型速查表
data.list[].content.hexstring
data.list[].extraDatastring企微内部透传(新协议为 base64 字符串;老协议曾为字符串数组);业务方不解析
data.list[].flag / data.list[].devInfo / data.list[].summaryint64 / string消息标志位 / 设备信息 / 摘要;观测到 flag 取 0 或 16777216,summary 常为空。精确含义待确认
data.syncKeyint64同步游标;增量拉取的断点
detailstring附加明细,通常为空
messagestring文案:成功为 ok;失败形如 -码|描述
timestring服务端处理时间 YYYY-MM-DD HH:MM:SS

下一步