跳转到主要内容
调用本接口创建新用户。

接口调用说明

调用本接口可以实现创建普通用户或创建企业账号用户。由于在调用时参数使用有较多区别,为便于开发者查看,按照新用户的账号类型进行拆分优化:

请求

基本信息
HTTP URLhttps://oapi.dingtalk.io/topapi/v2/user/create
HTTP MethodPOST
支持的应用类型appType-企业内部应用
权限要求permission-qyapi_manage_addresslist-通讯录数据管理权限

查询参数

名称类型是否必填示例值描述
access_tokenStringBE3xxxx调用该接口的应用凭证,通过获取企业内部应用的access_token接口获取。

请求体

名称类型是否必填示例值描述
useridStringzhangsan员工唯一标识ID(不可修改),企业内必须唯一。 长度为1~64个字符,如果不传,将自动生成一个userid。
nameString张三员工名称,长度最大80个字符。
mobileString185xxxx手机号码,企业内必须唯一,不可重复。 - 如果是国际号码、中国香港、中国澳门和中国台湾地区号码,请使用+xx-xxxxxx的格式。 - 如果公司注册地址是非中国大陆地区,则在添加用户时,手机号要使用+86-xxxxxx格式。 说明 登录钉钉管理后台,查看企业注册地址。iShot2022-05-31 15
hide_mobileBooleanfalse是否号码隐藏: - true:隐藏 隐藏手机号后,手机号在个人资料页隐藏,但仍可对其发DING、发起钉钉免费商务电话。 - false:不隐藏
telephoneString010-86123456-2345分机号,长度最大50个字符。 说明 分机号是唯一的,企业内不能重复。
job_numberString4员工工号,长度最大为50个字符。
titleString技术总监职位,长度最大为200个字符。
emailStringtest@xxx.com员工个人邮箱,长度最大50个字符。 说明 员工邮箱是唯一的,企业内不能重复。
org_emailStringtest@xxx.com员工的企业邮箱,长度最大100个字符。 说明 需满足以下条件,此字段才生效:员工的企业邮箱已开通。
org_email_typeStringprofession员工的企业邮箱类型。 - profession: 标准版 - **base:**基础版
work_placeString未来park办公地点,长度最大100个字符。
remarkString备注备注备注,长度最大2000个字符。
dept_id_listString”2,3,4”所属部门id列表,每次调用最多传100个部门ID。
dept_order_listObject[]员工在对应的部门中的排序。
dept_idNumber2部门ID。
orderNumber1员工在部门中的排序。
dept_title_listObject[]员工在对应的部门中的职位。
dept_idNumber2部门ID。
titleString资深产品经理员工在部门中的职位。
extensionObject{"爱好":"旅游","年龄":"24"}扩展属性,可以设置多种属性,最大长度 2000 个字符。 说明 - 手机上最多只能显示 10 个扩展属性。 - 在使用该参数前,需要先在钉钉管理后台> 内部通讯录设置 > 成员字段管理中增加该属性,然后再调用接口进行赋值。详情请参见下文关于 extension 参数的使用。 - 该字段的值支持链接类型填写,同时链接支持变量通配符自动替换,目前支持通配符有:userid,corpid。例如:{"爱好":"[爱好](http://www.dingtalk.io?userid=#userid#&corpid=#corpid#)"} - **重要提示:**直接添加新属性会覆盖原有属性值,需要先获取现有属性,然后将新属性追加到已有属性上,再进行整体更新。
senior_modeBooleanfalse是否开启高管模式,默认值false。 - true:开启。 说明 - 开启后,手机号码对所有员工隐藏。 - 普通员工无法对其发DING、发起钉钉商务电话。 - 高管之间可以发DING、发起钉钉商务电话。 - false:不开启。
hired_dateNumber1597573616828入职时间,Unix时间戳,单位毫秒。
manager_useridString001直属主管的userId。
login_emailStringtest@xxx.com登录邮箱。 说明 仅适用于邮箱账号,非邮箱账号设置该字段不生效。
dept_position_listDeptPosition[]部门内任职信息。
extension_i18nJson{"爱好": {"zh_CN": "旅游", "en_US": "travel", "aJP": "旅行"}}扩展属性的国际化值。

请求示例

curl -X POST "https://oapi.dingtalk.io/topapi/v2/user/create" \
-H 'Content-Type:application/x-www-form-urlencoded;charset=utf-8' \
-d 'access_token=1c016742-9383-4276-beb1-ebb375acc454' \
-d 'name=%E5%BC%A0%E4%B8%89' \
-d 'mobile=13800138000' \
-d 'dept_id_list=%5C%222%2C3%2C4%5C%22'
Java
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.io/topapi/v2/user/create");
OapiV2UserCreateRequest req = new OapiV2UserCreateRequest();
req.setUserid("002");
req.setName("测试");
req.setSeniorMode(false);
req.setMobile("184806*****");
req.setTitle("教职人员");
req.setEmail("test@xx.com");
req.setOrgEmail("test@xxx.com");
req.setOrgEmailType("profession");
req.setDeptIdList("1");
ArrayList<OapiV2UserCreateRequest.DeptTitle> deptTitles = new ArrayList<>();
OapiV2UserCreateRequest.DeptTitle deptTitle = new OapiV2UserCreateRequest.DeptTitle();
deptTitle.setDeptId(1L);
deptTitle.setTitle("测试");
OapiV2UserCreateRequest.DeptTitle deptTitle1 = new OapiV2UserCreateRequest.DeptTitle();
deptTitle1.setDeptId(1L);
deptTitle1.setTitle("专员");
deptTitles.add(deptTitle);
deptTitles.add(deptTitle1);
req.setDeptTitleList(deptTitles);
req.setHideMobile(false);
req.setTelephone("010-8xxxxx6-2345");
req.setJobNumber("100828");
req.setHiredDate(1615219200000L);
req.setWorkPlace("未来park");
req.setRemark("备注备注");
List<OapiV2UserCreateRequest.DeptOrder> deptOrderList = new ArrayList<OapiV2UserCreateRequest.DeptOrder>();
OapiV2UserCreateRequest.DeptOrder deptOrder = new OapiV2UserCreateRequest.DeptOrder();
deptOrder.setDeptId(1L);
deptOrder.setOrder(1L);
OapiV2UserCreateRequest.DeptOrder deptOrder1 = new OapiV2UserCreateRequest.DeptOrder();
deptOrder1.setDeptId(1L);
deptOrder1.setOrder(1L);
deptOrderList.add(deptOrder);
deptOrderList.add(deptOrder1);
req.setDeptOrderList(deptOrderList);
req.setExtension("{\"爱好\":\"[爱好](http://test.com?userid=#userid#&corpid=#corpid#)\"}");
req.setManagerUserid("001");
req.setLoginEmail("test@xxx.com");
OapiV2UserCreateResponse rsp = client.execute(req, "");
System.out.println(rsp.getBody());
Python
import dingtalk.api

req=dingtalk.api.OapiV2UserCreateRequest("https://oapi.dingtalk.io/topapi/v2/user/create")

req.userid="zhangsan"
req.name="张三"
req.mobile="13800138000"
req.job_number="4"
req.title="技术总监"
req.email="test@xxx.com"
req.org_email="test@xxx.com"
req.work_place="未来park"
req.remark="备注备注"
req.dept_id_list="2,3,4"
req.check_user_protect=true
try:
  resp= req.getResponse(access_token)
  print(resp)
except Exception,e:
  print(e)
PHP
include "TopSdk.php";
date_default_timezone_set('Asia/Shanghai');

$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);
$req = new OapiV2UserCreateRequest;
$req->setUserid("zhangsan");
$req->setName("张三");
$req->setMobile("13800138000");
$req->setTelephone("010-86123456-2345");
$req->setTitle("技术总监");
$req->setEmail("test@xxx.com");
$req->setWorkPlace("未来park");
$req->setRemark("备注备注");
$req->setDeptIdList("\"2,3,4\"");
$resp = $c->execute($req, $access_token, "https://oapi.dingtalk.io/topapi/v2/user/create");
C#
IDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.io/topapi/v2/user/create");
OapiV2UserCreateRequest req = new OapiV2UserCreateRequest();
req.Userid = "zhangsan";
req.Name = "张三";
req.Mobile = "13800138000";
req.Title = "技术总监";
req.Email = "test@xxx.com";
req.OrgEmail = "test@xxx.com";
req.WorkPlace = "未来park";
req.Remark = "备注备注";
req.DeptIdList = "\"2,3,4\"";
OapiV2UserCreateResponse rsp = client.Execute(req, access_token);
Console.WriteLine(rsp.Body);

响应

响应体

名称类型示例值描述
errcodeNumber0错误码。0代表成功。
errmsgStringok错误信息。
resultObject返回结果。
useridStringzhangsan员工id。
unionIdStringxxxx员工唯一id。

响应体示例

{
  "errcode":"0",
  "result":{
    "unionId":"xxxx",
    "userid":"zhangsan"
  },
  "errmsg":"ok"
}

错误码

若调用该接口报错,可根据错误信息在全局错误码文档中查找解决方案。

extension参数说明

如果想要展示扩展字段extension中设置的用户属性,您还需要完成以下操作。
  1. 登录钉钉管理后台
  2. 单击内部通讯录设置,然后单击成员字段管理 > 添加自定义字段 image.png