更新于 2026-07-24钉钉官方提供了统一的SDK,使用SDK可以便捷地调用服务端API。
重要
在使用钉钉接口前,请先确认接口版本(新版或旧版),然后下载对应版本的 SDK 或引入对应的 Maven 依赖进行调用:注意:新旧两个版本的 SDK 不可混用。
为提升接口使用体验并提供更规范的开发标准,钉钉开放平台对服务端API进行了规范升级。目前平台同时支持旧版服务端API(基于旧版规范)和新版服务端API(基于新版RESTful风格规范)。建议新应用优先接入新版API以获得持续的能力更新和技术支持。
说明
旧版服务端API与新版服务端API所开放的产品能力不完全一致。请根据业务需求选择合适的API版本。已有应用可继续使用旧版API,但新增功能推荐使用新版API。
| API版本 | 旧版服务端API | 新版服务端API |
|---|---|---|
| SDK | 使用旧版服务端SDK,旧版支持版本:Java、PHP、Python、.NET、.NET Core。 | 使用新版服务端SDK,新版支持版本:Java(支持通过Maven安装)、Node.js、PHP、Go、C#、Python。 |
| 开放的产品能力 | - 现状:旧版服务端API和新版服务端API开放的产品能力不同,即新版服务端API未包含全部的服务端API的产品能力,请根据实际需求,选择需要的API接入。 |
计划:后续将逐步把旧版API迁移至新版规范,最终实现功能全覆盖。 | - 现状:旧版服务端API和新版服务端API开放的产品能力不同,即新版服务端API未包含全部的服务端API的产品能力,请根据实际需求,选择需要的API接入。
计划:后续将逐步把旧版API迁移至新版规范,最终实现功能全覆盖。 | | 是否开放新能力 | 不再开放新能力。 | 持续开放新能力。 | | 是否推荐 | 已接入的应用可继续使用,接口不会下线。 | 若新版本存在对应接口,推荐接入新版服务端API。 |
新版SDK基于阿里云OpenAPI规范构建,推荐新项目优先使用。支持多语言接入,可通过包管理工具快速集成。
新版SDK与旧版SDK有所差别,以下是关于新版接口的使用示例,以创建日程为例:
/**
* 使用 Token 初始化账号Client
* @return Client
* @throws Exception
*/
public static com.aliyun.dingtalkcalendar_1_0.Client createClient() throws Exception {
com.aliyun.teaopenapi.models.Config config \= new com.aliyun.teaopenapi.models.Config();
config.protocol \= "https";
config.regionId \= "central";
return new com.aliyun.dingtalkcalendar_1_0.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List args \= java.util.Arrays.asList(args_);
com.aliyun.dingtalkcalendar_1_0.Client client \= Sample.createClient();
com.aliyun.dingtalkcalendar_1_0.models.CreateEventHeaders createEventHeaders \= new com.aliyun.dingtalkcalendar_1_0.models.CreateEventHeaders();
createEventHeaders.xAcsDingtalkAccessToken \= "";
com.aliyun.dingtalkcalendar_1_0.models.CreateEventRequest.CreateEventRequestRichTextDescription richTextDescription \= new com.aliyun.dingtalkcalendar_1_0.models.CreateEventRequest.CreateEventRequestRichTextDescription()
.setText("测试测试热热热单独的啊啊啊事实上");
com.aliyun.dingtalkcalendar_1_0.models.CreateEventRequest.CreateEventRequestUiConfigs uiConfigs0 \= new com.aliyun.dingtalkcalendar_1_0.models.CreateEventRequest.CreateEventRequestUiConfigs()
.setUiName("updateEventButton")
其他语言示例代码,可参考具体接口文档中的示例模块,我们提供了HTTP、Java、Python、PHP、Go、Node.js、C#等多种方式调用。
Java
方式一:通过Maven安装DingTalk OpenAPI Java SDK
添加依赖项到pom.xml的文件中,建议始终使用最新版本以获得功能更新与安全修复。
说明
并请替换下方代码中的{version},并填写最新Maven版本2.2.59,最新版本可前往Maven库查看。
com.aliyun
dingtalk
{version}
方式二:通过下载SDK安装包进行安装。
Go
在命令行中,执行以下命令安装DingTalk OpenAPI Go SDK。
go get -u github.com/alibabacloud-go/dingtalk/
C#
方式一:使用dotnet来安装C# SDK,最新的SDK版本可以在这里查看。
dotnet add package AlibabaCloud.SDK.Dingtalk
方式二:通过下载SDK安装包进行安装。
PHP
方式一:使用composer工具进行安装。
composer require alibabacloud/dingtalk
方式二:通过下载SDK安装包进行安装。
Node.js
方式一:执行以下命令,使用npm安装依赖。
npm install @alicloud/dingtalk --save
方式二:通过下载SDK安装包进行安装。
Python
方式一:执行以下命令,使用pip安装包依赖。
pip install alibabacloud_dingtalk
方式二:通过下载SDK安装包进行安装,Python SDK适用于Python 3.0及以上版本。
旧版SDK基于早期架构设计,仅用于兼容历史接口(URL包含 /topapi/)。新项目建议使用新版SDK。
下面是使用SDK调用API的请求示例:
Java
DingTalkClient client \= new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get");
OapiUserGetRequest req \= new OapiUserGetRequest();
req.setUserid("userid1");
req.setHttpMethod("GET");
OapiUserGetResponse rsp \= client.execute(req, accessToken);
PHP
include "TopSdk.php";
// DingTalkConstant::$METHOD_GET 要与下面调用接口url要求的保持一致
$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_GET , DingTalkConstant::$FORMAT_JSON);
$req = new OapiUserGetRequest();
$req->setUserid("userid1");
$resp=$c->execute($req, $accessToken,"https://oapi.dingtalk.com/user/get");
var_dump($resp)
Python
import dingtalk.api
request = dingtalk.api.OapiGettokenRequest("https://oapi.dingtalk.com/user/get")
request.userid="userid1"
response = request.getResponse()
print(response)
Node
let { Config, OapiProcessinstanceGetParams, OapiProcessinstanceGetRequest } \= require('./client.js');
let Client \= require('./client.js').default
// import Client,{ Config, GetOapiProcessinstanceParams, GetOapiProcessinstanceRequest } from "./client.js";
async function test() {
const config \= new Config()
config.serverUrl \= 'https://oapi.dingtalk.com/topapi/processinstance/get'
config.session \= 'access_token'
const params \= new OapiProcessinstanceGetParams();
params.processInstanceId \= '23aa6xxxxc1b56c'
const request \= new OapiProcessinstanceGetRequest()
request.params \= params
const client \= new Client(config)
try {
const res \= await client.oapiProcessinstanceGet(request)
console.log(res.body)
} catch (err) {
console.log(err)
}
}
test()
.NET
IDingTalkClient client \= new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get");
OapiUserGetRequest req \= new OapiUserGetRequest();
req.Userid \= "userid1";
req.SetHttpMethod("GET");
// accessToken 参数是需要通过https://open.dingtalk.com/document/development/obtain-orgapp-token接口获取
OapiUserGetResponse rsp \= client.Execute(req, access_token)
请求示例说明:
初始化Client对象:设置目标接口的完整URI。通常无需手动拼接 access_token 等参数;但部分POST接口可能需在URL中附加非token类参数。
构造Request对象:命名规则一般为 Oapi + 接口路径驼峰形式 + Request。例如 /user/get 对应 OapiUserGetRequest。
设置请求参数:调用对应setter方法赋值。注意默认HTTP方法为POST,若接口为GET,需显式调用 setHttpMethod("GET")。
执行请求:调用 client.execute(req, access_token) 发起调用。对于获取token类接口(如 /gettoken、/sns/gettoken、/service/get_suite_token),调用时无需传入token。
处理响应:返回结果为与Request对应的Response对象,可从中提取业务数据或错误信息。
Java SDK 需要依赖 Java SE/EE 1.5及以上
.NET SDK 需要依赖 .NET Framework 2.0及以上 (不支持Windows Phone平台)