diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs
new file mode 100644
index 00000000..55adb9fe
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Extensions/WechatWorkClientExecuteCgibinKfExtensions.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+using Flurl;
+using Flurl.Http;
+
+namespace SKIT.FlurlHttpClient.Wechat.Work
+{
+ public static class WechatWorkClientExecuteCgibinKfExtensions
+ {
+ #region Account
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/account/add 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94662
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94688
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfAccountAddAsync(this WechatWorkClient client, Models.CgibinKfAccountAddRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "account", "add")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/account/list 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94661
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94691
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfAccountListAsync(this WechatWorkClient client, Models.CgibinKfAccountListRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "account", "list")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/account/update 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94664
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94690
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfAccountUpdateAsync(this WechatWorkClient client, Models.CgibinKfAccountUpdateRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "account", "update")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/account/del 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94663
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94689
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfAccountDeleteAsync(this WechatWorkClient client, Models.CgibinKfAccountDeleteRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "account", "del")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+
+ ///
+ /// 异步调用 [POST] /cgi-bin/kf/add_contact_way 接口。
+ /// REF: https://open.work.weixin.qq.com/api/doc/90000/90135/94665
+ /// REF: https://open.work.weixin.qq.com/api/doc/90001/90143/94692
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static async Task ExecuteCgibinKfAddContactWayAsync(this WechatWorkClient client, Models.CgibinKfAddContactWayRequest request, CancellationToken cancellationToken = default)
+ {
+ if (client is null) throw new ArgumentNullException(nameof(client));
+ if (request is null) throw new ArgumentNullException(nameof(request));
+
+ IFlurlRequest flurlReq = client
+ .CreateRequest(request, HttpMethod.Post, "cgi-bin", "kf", "add_contact_way")
+ .SetQueryParam("access_token", request.AccessToken);
+
+ return await client.SendRequestWithJsonAsync(flurlReq, data: request, cancellationToken: cancellationToken);
+ }
+ #endregion
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountAddRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountAddRequest.cs
new file mode 100644
index 00000000..c9f7f62d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountAddRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/add 接口的请求。
+ ///
+ public class CgibinKfAccountAddRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置客服名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置头像的 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("media_id")]
+ public string AvatarMediaId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountAddResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountAddResponse.cs
new file mode 100644
index 00000000..b9b6d091
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountAddResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/add 接口的响应。
+ ///
+ public class CgibinKfAccountAddResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置客服账号 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_kfid")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
+ public string OpenKfId { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountDeleteRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountDeleteRequest.cs
new file mode 100644
index 00000000..faf7e289
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountDeleteRequest.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/del 接口的请求。
+ ///
+ public class CgibinKfAccountDeleteRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置客服账号 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_kfid")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
+ public string OpenKfId { get; set; } = string.Empty;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountDeleteResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountDeleteResponse.cs
new file mode 100644
index 00000000..db184a9d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountDeleteResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/del 接口的响应。
+ ///
+ public class CgibinKfAccountDeleteResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountListRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountListRequest.cs
new file mode 100644
index 00000000..d6210247
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountListRequest.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/list 接口的请求。
+ ///
+ public class CgibinKfAccountListRequest : WechatWorkRequest
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountListResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountListResponse.cs
new file mode 100644
index 00000000..33599f8d
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountListResponse.cs
@@ -0,0 +1,42 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/list 接口的响应。
+ ///
+ public class CgibinKfAccountListResponse : WechatWorkResponse
+ {
+ public static class Types
+ {
+ public class KfAccount
+ {
+ ///
+ /// 获取或设置客服账号 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_kfid")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
+ public string OpenKfId { get; set; } = default!;
+
+ ///
+ /// 获取或设置客服名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string Name { get; set; } = default!;
+
+ ///
+ /// 获取或设置头像 URL。
+ ///
+ [Newtonsoft.Json.JsonProperty("avatar")]
+ [System.Text.Json.Serialization.JsonPropertyName("avatar")]
+ public string AvatarUrl { get; set; } = default!;
+ }
+ }
+
+ ///
+ /// 获取或设置客服账号列表。
+ ///
+ [Newtonsoft.Json.JsonProperty("account_list")]
+ [System.Text.Json.Serialization.JsonPropertyName("account_list")]
+ public Types.KfAccount[] KfAccountList { get; set; } = default!;
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountUpdateRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountUpdateRequest.cs
new file mode 100644
index 00000000..72eaec62
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountUpdateRequest.cs
@@ -0,0 +1,29 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/update 接口的请求。
+ ///
+ public class CgibinKfAccountUpdateRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置客服账号 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_kfid")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
+ public string OpenKfId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置客服名称。
+ ///
+ [Newtonsoft.Json.JsonProperty("name")]
+ [System.Text.Json.Serialization.JsonPropertyName("name")]
+ public string? Name { get; set; }
+
+ ///
+ /// 获取或设置头像的 MediaId。
+ ///
+ [Newtonsoft.Json.JsonProperty("media_id")]
+ [System.Text.Json.Serialization.JsonPropertyName("media_id")]
+ public string? AvatarMediaId { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountUpdateResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountUpdateResponse.cs
new file mode 100644
index 00000000..b4d8d8e7
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAccountUpdateResponse.cs
@@ -0,0 +1,9 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/account/update 接口的响应。
+ ///
+ public class CgibinKfAccountUpdateResponse : WechatWorkResponse
+ {
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAddContactWayRequest.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAddContactWayRequest.cs
new file mode 100644
index 00000000..aa204c28
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAddContactWayRequest.cs
@@ -0,0 +1,22 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/add_contact_way 接口的请求。
+ ///
+ public class CgibinKfAddContactWayRequest : WechatWorkRequest
+ {
+ ///
+ /// 获取或设置客服账号 ID。
+ ///
+ [Newtonsoft.Json.JsonProperty("open_kfid")]
+ [System.Text.Json.Serialization.JsonPropertyName("open_kfid")]
+ public string OpenKfId { get; set; } = string.Empty;
+
+ ///
+ /// 获取或设置场景值。
+ ///
+ [Newtonsoft.Json.JsonProperty("scene")]
+ [System.Text.Json.Serialization.JsonPropertyName("scene")]
+ public string? Scene { get; set; }
+ }
+}
diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAddContactWayResponse.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAddContactWayResponse.cs
new file mode 100644
index 00000000..6bcc69dc
--- /dev/null
+++ b/src/SKIT.FlurlHttpClient.Wechat.Work/Models/CgibinKf/Account/CgibinKfAddContactWayResponse.cs
@@ -0,0 +1,15 @@
+namespace SKIT.FlurlHttpClient.Wechat.Work.Models
+{
+ ///
+ /// 表示 [POST] /cgi-bin/kf/add_contact_way 接口的响应。
+ ///
+ public class CgibinKfAddContactWayResponse : WechatWorkResponse
+ {
+ ///
+ /// 获取或设置客服链接。
+ ///
+ [Newtonsoft.Json.JsonProperty("url")]
+ [System.Text.Json.Serialization.JsonPropertyName("url")]
+ public string OpenKfId { get; set; } = default!;
+ }
+}
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountAddRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountAddRequest.json
new file mode 100644
index 00000000..7542f85b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountAddRequest.json
@@ -0,0 +1,4 @@
+{
+ "name": "新建的客服帐号",
+ "media_id": "294DpAog3YA5b9rTK4PjjfRfYLO0L5qpDHAJIzhhQ2jAEWjb9i661Q4lk8oFnPtmj"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountAddResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountAddResponse.json
new file mode 100644
index 00000000..ee0a11f1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountAddResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "open_kfid": "wkAJ2GCAAAZSfhHCt7IFSvLKtMPxyJTw"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountDeleteRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountDeleteRequest.json
new file mode 100644
index 00000000..70f999da
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountDeleteRequest.json
@@ -0,0 +1,3 @@
+{
+ "open_kfid": "wkAJ2GCAAAZSfhHCt7IFSvLKtMPxyJTw"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountDeleteResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountDeleteResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountDeleteResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountListRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountListRequest.json
new file mode 100644
index 00000000..22fdca1b
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountListRequest.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountListResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountListResponse.json
new file mode 100644
index 00000000..c75db2bc
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountListResponse.json
@@ -0,0 +1,11 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "account_list": [
+ {
+ "open_kfid": "wkAJ2GCAAASSm4_FhToWMFea0xAFfd3Q",
+ "name": "咨询客服",
+ "avatar": "https://wework.qpic.cn/wwhead/duc2TvpEgSSjibPZlNR6chpx9W3dtd9Ogp8XEmSNKGa6uufMWn2239HUPuwIFoYYZ7Ph580FPvo8/0"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountUpdateRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountUpdateRequest.json
new file mode 100644
index 00000000..892197b1
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountUpdateRequest.json
@@ -0,0 +1,5 @@
+{
+ "open_kfid": "wkAJ2GCAAAZSfhHCt7IFSvLKtMPxyJTw",
+ "name": "修改客服名",
+ "media_id": "294DpAog3YA5b9rTK4PjjfRfYLO0L5qpDHAJIzhhQ2jAEWjb9i661Q4lk8oFnPtmj"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountUpdateResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountUpdateResponse.json
new file mode 100644
index 00000000..f752befe
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAccountUpdateResponse.json
@@ -0,0 +1,4 @@
+{
+ "errcode": 0,
+ "errmsg": "ok"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAddContactWayRequest.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAddContactWayRequest.json
new file mode 100644
index 00000000..9fb7b946
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAddContactWayRequest.json
@@ -0,0 +1,4 @@
+{
+ "open_kfid": "OPEN_KFID",
+ "scene": "12345"
+}
\ No newline at end of file
diff --git a/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAddContactWayResponse.json b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAddContactWayResponse.json
new file mode 100644
index 00000000..83b18751
--- /dev/null
+++ b/test/SKIT.FlurlHttpClient.Wechat.Work.UnitTests/ModelSamples/CgibinKf/Account/CgibinKfAddContactWayResponse.json
@@ -0,0 +1,5 @@
+{
+ "errcode": 0,
+ "errmsg": "ok",
+ "url": "https://work.weixin.qq.com/kf/kfcbf8f8d07ac7215f?enc_scene=ENCGFSDF567DF"
+}
\ No newline at end of file