Appearance
同步外部数据(非企业)
增量同步外部联系人(客户)数据;收到回调 contentType=2131(外部联系人变更)后调用拉增量。
说明与注意
- 响应 =
data.{businessId, list[], hasNext?};每项{id, itemFlag, seq, createTime, updateTime, content:{userInfo:{uin,name,iconUrl,…}}},无 op 字段。
请求参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
appid | 是 | string | 实例 appid,标识操作哪个已登录账号。示例:we_xxxxxxxxxxxxxxx |
seq | 翻页时必填 | int64 | 同步游标,首次 0。示例:15873502 |
businessId | 否 | int64 | 0 可用。示例:0 |
请求示例
http
POST {BASE_URL}/wx-api/api/contact/syncExternal
Authorization: Bearer <你的 App Token>
Content-Type: application/json
{
"appid": "we_xxxxxxxxxxxxxxx",
"seq": 15873502,
"businessId": 0
}bash
curl -X POST '{BASE_URL}/wx-api/api/contact/syncExternal' \
-H 'Authorization: Bearer <你的 App Token>' \
-H 'Content-Type: application/json' \
--data-raw '{
"appid": "we_xxxxxxxxxxxxxxx",
"seq": 15873502,
"businessId": 0
}'python
import requests
url = "{BASE_URL}/wx-api/api/contact/syncExternal"
headers = {"Authorization": "Bearer <你的 App Token>", "Content-Type": "application/json"}
body = """{
"appid": "we_xxxxxxxxxxxxxxx",
"seq": 15873502,
"businessId": 0
}"""
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/contact/syncExternal";
String body = "{\n" +
" \"appid\": \"we_xxxxxxxxxxxxxxx\",\n" +
" \"seq\": 15873502,\n" +
" \"businessId\": 0\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/contact/syncExternal';
$body = <<<'JSON'
{
"appid": "we_xxxxxxxxxxxxxxx",
"seq": 15873502,
"businessId": 0
}
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": {
"businessId": 0,
"list": [
{
"id": 1688855655434798,
"itemFlag": 0,
"seq": 9425784,
"createTime": 1697595471,
"updateTime": 1699432125,
"content": {
"userInfo": {
"uin": 1688855655434798,
"name": "蜘蛛侠",
"emailAddr": "",
"birthday": "1970-01-01 00:00:00",
"phone": "",
"number": "",
"gender": 1,
"iconUrl": "https://wx.qlogo.cn/mmhead/bSb5dSzPn0KzE4xrkiadlR6Q7HibrUOeaET22ibE8Q7pqGdmtHs0nWGhg/0",
"corpId": 1970325925998027,
"attr": 137757248,
"dispOrder": 0,
"bizUin": 0,
"alias": "",
"mainPartyId": 1688855655434807,
"gid": 2251802468974430,
"isNameVerified": true,
"createSource": 1,
"internationCode": "86",
"bindEmailStatus": 2,
"englishName": "ZhiZhuXia",
"customInfo": {},
"nameVerifyStatus": 1,
"realName": "张**",
"vCorpUseStatus": 1000,
"inviteVid": 0,
"holidayInfo": {
"holidayStatus": 0,
"holidayDesc": "",
"oldHolidayIconIndex": 0,
"createTime": 0,
"holidayInfoId": 0,
"holidayIconIndex": 0,
"holidayGenerateSrc": 0,
"holidayStatusNew": 0
},
"xcxStyle": 0,
"attr2": 536871168,
"tencentInfo": {},
"isSyncInnerPosition": true,
"unionId": "ozynqshxD5vlYYP1MZQ_ZFmugT3M",
"vCode": "vc14653af37ba5080e",
"schoolUserType": 3,
"personalWorkType": 0,
"attr3": 0
},
"corpInfo": {
"corpId": 1970325925998027,
"vid": 1688855655434798,
"corpName": "奥特曼打葫芦娃",
"createTime": 1685974036,
"staffNum": 0,
"trust": true,
"corpLogo": "https://wework.qpic.cn/wwpic/186583_HKZLN-kIRie5_Ux_1685974037/0",
"corpDesc": "",
"adminVid": 1688855655434798,
"isAccepted": true,
"corpStat": 0,
"corpFullName": "",
"cmSubmitTime": 0,
"createSourceInfo": "",
"verifyMsg": "",
"hasInfoCorp": false,
"virtualCreateDomainName": "",
"language": 1,
"corpCardUrl": "https://work.weixin.qq.com/wework_admin/user/h5/corp?",
"authedDomain": "",
"vSuperadminVid": 1688855655434798,
"bAuthedLicence": false,
"joinNeedVerify": false,
"pstnOfficePhoneState": 0,
"authLicenceStatus": 1,
"sCorpId": "<企业 corpId>",
"corpAppWxaInfo": {
"userName": "gh_303bdfa3334c@app",
"appId": "<小程序 appId>",
"enterPath": "/pages/index/index.html",
"versionType": 0,
"version": 0
},
"isOverseasCorp": false
},
"flag": 2057,
"applyReason": "",
"extraInfo": {
"remarks": "",
"wxTicket": "",
"realRemark": "",
"remarkUrl": "",
"addCustomerTime": 1697595472,
"companyRemark": "",
"labelId": [
{
"labelId": 14073752485732091,
"corpOrVid": 1970325156983916,
"groupId": 14073752485732090,
"businessType": 0,
"serviceGroupId": 0
},
{
"labelId": 14073752485732092,
"corpOrVid": 1970325156983916,
"groupId": 14073752485732090,
"businessType": 0,
"serviceGroupId": 0
}
],
"isFirstChat": true,
"remarkTime": 1697614272
},
"sourceInfo": {
"sourceType": 1,
"applyMode": 2
}
},
"createSeq": 9325776,
"dataType": 0
}
]
},
"detail": "",
"message": "ok",
"time": "2026-09-06 11:26:14"
}响应字段
响应字段(113 项)
| 字段 | 类型 | 说明 |
|---|---|---|
code | int64 | 统一封套状态码:0=成功,负数=失败 |
data | object | 业务数据 |
data.businessId | int64 | 0 可用 |
data.list | array<object> | 消息对象数组 |
data.list[].id | int64 | 记录/文件业务标识 |
data.list[].itemFlag | int64 | 变更标志;实测 0,删除态取值待确认 |
data.list[].seq | int64 | 同步游标(增量翻页位置) |
data.list[].createTime / data.list[].updateTime | int64 | 建立 / 更新时间戳(秒) |
data.list[].content | object | 消息内容;文本为数组、媒体为对象;未解析的消息为 {msgType, hex}(hex=protobuf 原始十六进制) |
data.list[].content.userInfo | object | 客户用户信息(字段见字典) |
data.list[].content.userInfo.uin | int64 | 用户唯一 id(int64,注意精度) |
data.list[].content.userInfo.name | string | 昵称 / 显示名 |
data.list[].content.userInfo.emailAddr | string | 个人邮箱 |
data.list[].content.userInfo.birthday | string | 生日 YYYY-MM-DD HH:MM:SS |
data.list[].content.userInfo.phone | string | 电话(外部对象常为空) |
data.list[].content.userInfo.number | string | 工号 |
data.list[].content.userInfo.gender | int64 | 性别(1 男 / 2 女) |
data.list[].content.userInfo.iconUrl | string | 头像 url |
data.list[].content.userInfo.corpId | int64 | 所属企业唯一 id |
data.list[].content.userInfo.attr | int64 | 属性位掩码(bitmask),各 bit 含义待确认 |
data.list[].content.userInfo.dispOrder | int64 | 通讯录 / 部门内显示排序 |
data.list[].content.userInfo.bizUin | int64 | 企业 uin,含义待确认 |
data.list[].content.userInfo.alias | string | 别名 / 花名 |
data.list[].content.userInfo.mainPartyId | int64 | 主部门 id |
data.list[].content.userInfo.gid | int64 | 全局 id(跨企业标识),含义待确认 |
data.list[].content.userInfo.isNameVerified | boolean | 是否已实名认证 |
data.list[].content.userInfo.createSource | int64 | 创建来源(外部客户常见) |
data.list[].content.userInfo.internationCode | string | 国际区号,如 86 |
data.list[].content.userInfo.bindEmailStatus | int64 | 邮箱绑定状态(观测到 2=已绑定 / 1),枚举待确认 |
data.list[].content.userInfo.englishName | string | 英文名 |
data.list[].content.userInfo.customInfo | object | 自定义字段集合(常为空对象) |
data.list[].content.userInfo.nameVerifyStatus | int64 | 实名认证状态(观测 1) |
data.list[].content.userInfo.realName | string | 实名(示例已脱敏) |
data.list[].content.userInfo.vCorpUseStatus | int64 | 企业使用状态(观测 1000),含义待确认 |
data.list[].content.userInfo.inviteVid | int64 | 邀请人 vid |
data.list[].content.userInfo.holidayInfo | object | 休假信息(holidayStatus/holidayDesc/... ) |
data.list[].content.userInfo.holidayInfo.holidayStatus | int64 | 假期状态 / 新版假期状态 |
data.list[].content.userInfo.holidayInfo.holidayDesc | string | 假期描述文案 |
data.list[].content.userInfo.holidayInfo.oldHolidayIconIndex | int64 | 假期头像挂件索引 / 旧索引 |
data.list[].content.userInfo.holidayInfo.createTime | int64 | 建立 / 更新时间戳(秒) |
data.list[].content.userInfo.holidayInfo.holidayInfoId | int64 | 假期信息 id |
data.list[].content.userInfo.holidayInfo.holidayIconIndex | int64 | 假期头像挂件索引 / 旧索引 |
data.list[].content.userInfo.holidayInfo.holidayGenerateSrc | int64 | 假期来源(含义待确认) |
data.list[].content.userInfo.holidayInfo.holidayStatusNew | int64 | 假期状态 / 新版假期状态 |
data.list[].content.userInfo.xcxStyle | int64 | 小程序名片样式,含义待确认 |
data.list[].content.userInfo.attr2 | int64 | 属性位掩码(bitmask),各 bit 含义待确认 |
data.list[].content.userInfo.tencentInfo | object | 腾讯生态相关(常为空对象) |
data.list[].content.userInfo.isSyncInnerPosition | boolean | 是否同步内部职位 |
data.list[].content.userInfo.unionId | string | 微信 unionId(跨应用用户标识) |
data.list[].content.userInfo.vCode | string | 名片/验证码(形如 vc31f1...) |
data.list[].content.userInfo.schoolUserType | int64 | 学校 / 高校身份类型,含义待确认 |
data.list[].content.userInfo.personalWorkType | int64 | 个人工作类型,含义待确认 |
data.list[].content.userInfo.attr3 | int64 | 属性位掩码(bitmask),各 bit 含义待确认 |
data.list[].content.corpInfo | object | 企业信息(未搜到企业时 corpId=0) |
data.list[].content.corpInfo.corpId | int64 | 所属企业唯一 id |
data.list[].content.corpInfo.vid | int64 | 联系人 id |
data.list[].content.corpInfo.corpName | string | 所属企业名称 |
data.list[].content.corpInfo.createTime | int64 | 建立 / 更新时间戳(秒) |
data.list[].content.corpInfo.staffNum | int64 | |
data.list[].content.corpInfo.trust | boolean | |
data.list[].content.corpInfo.corpLogo | string | |
data.list[].content.corpInfo.corpDesc | string | 企业描述(仅 getUserProfileDetail 的部分 info 出现)。 |
data.list[].content.corpInfo.adminVid | int64 | |
data.list[].content.corpInfo.isAccepted | boolean | |
data.list[].content.corpInfo.corpStat | int64 | |
data.list[].content.corpInfo.corpFullName | string | |
data.list[].content.corpInfo.cmSubmitTime | int64 | |
data.list[].content.corpInfo.createSourceInfo | string | |
data.list[].content.corpInfo.verifyMsg | string | |
data.list[].content.corpInfo.hasInfoCorp | boolean | |
data.list[].content.corpInfo.virtualCreateDomainName | string | |
data.list[].content.corpInfo.language | int64 | |
data.list[].content.corpInfo.corpCardUrl | string | |
data.list[].content.corpInfo.authedDomain | string | |
data.list[].content.corpInfo.vSuperadminVid | int64 | |
data.list[].content.corpInfo.bAuthedLicence | boolean | |
data.list[].content.corpInfo.joinNeedVerify | boolean | |
data.list[].content.corpInfo.pstnOfficePhoneState | int64 | |
data.list[].content.corpInfo.authLicenceStatus | int64 | |
data.list[].content.corpInfo.sCorpId | string | |
data.list[].content.corpInfo.corpAppWxaInfo | object | |
data.list[].content.corpInfo.corpAppWxaInfo.userName | string | |
data.list[].content.corpInfo.corpAppWxaInfo.appId | string | 小程序 appId |
data.list[].content.corpInfo.corpAppWxaInfo.enterPath | string | |
data.list[].content.corpInfo.corpAppWxaInfo.versionType | int64 | |
data.list[].content.corpInfo.corpAppWxaInfo.version | int64 | 版本号,无特殊需求传 0 |
data.list[].content.corpInfo.isOverseasCorp | boolean | |
data.list[].content.flag | int64 | 消息标志位 / 设备信息 / 摘要;观测到 flag 取 0 或 16777216,summary 常为空。精确含义待确认 |
data.list[].content.applyReason | string | 添加时的申请语 |
data.list[].content.extraInfo | object | 统计明细:senderNums(已发)/senderTotalNums(应发)/serviceMember |
data.list[].content.extraInfo.remarks | string | 备注描述 |
data.list[].content.extraInfo.wxTicket | string | 加好友票据;传给 add 接口的 ticket(实测长约 160 字符) |
data.list[].content.extraInfo.realRemark | string | 真实用户备注(改对方在你处的显示名) |
data.list[].content.extraInfo.remarkUrl | string | 描述内的备注 URL |
data.list[].content.extraInfo.addCustomerTime | int64 | 添加为客户的时间戳 |
data.list[].content.extraInfo.companyRemark | string | 企业/公司备注 |
data.list[].content.extraInfo.labelId | array<object> | 打在该客户上的标签,每项 {labelId, groupId, corpOrVid, businessType, serviceGroupId} |
data.list[].content.extraInfo.labelId[].labelId | int64 | 打在该客户上的标签,每项 {labelId, groupId, corpOrVid, businessType, serviceGroupId} |
data.list[].content.extraInfo.labelId[].corpOrVid | int64 | |
data.list[].content.extraInfo.labelId[].groupId | int64 | 分组 id(0=无) |
data.list[].content.extraInfo.labelId[].businessType / data.list[].content.extraInfo.labelId[].serviceGroupId | int64 | 业务类型 / 排序 / 服务组 id(原样回传) |
data.list[].content.extraInfo.isFirstChat | boolean | 是否首次会话 |
data.list[].content.extraInfo.remarkTime | int64 | 备注时间戳 |
data.list[].content.sourceInfo | object | |
data.list[].content.sourceInfo.sourceType | int64 | 来源类型 |
data.list[].content.sourceInfo.applyMode | int64 | 申请方式 |
data.list[].createSeq | int64 | 创建游标 |
data.list[].dataType | int64 | 数据类型,含义待确认(实测 0) |
detail | string | 附加明细,通常为空 |
message | string | 文案:成功为 ok;失败形如 -码|描述 |
time | string | 服务端处理时间 YYYY-MM-DD HH:MM:SS |