博客后台 API 说明文档

发布博文

API 请求地址

https://i.cnblogs.com/openapi/v1/posts

curl 请求命令示例

curl -X POST -i https://i.cnblogs.com/openapi/v1/posts \
     -H "Authorization: Bearer xxxxxx" \
     -H "Authorization-Type: pat" \
     -H "Content-Type: application/json" \
     -d '{"title": "测试博文标题", "body": "测试博文内容"}'

用于身份认证的 token (PAT, Personal Access Token),在账号中心的 Access Tokens 中创建

通过 Authorization: Bearer <token> 请求头进行身份认证

通过 Authorization-Type: pat 请求头标识 token 类型是 PAT

http post 请求 json 数据的序列化类型(C#代码)

public class CreatePostDto
{
    // 博文标题(必填项)
    [Required]
    public string Title { get; set; }

    // 博文内容(必填项)
    [Required]
    public string Body { get; set; }

    // 博文类型(非必填项),可填 BlogPost 或 Article,默认是 BlogPost(如果传 int 型,值是 1 )
    public PostType PostType { get; set; } = PostType.BlogPost;

    // 博文摘要(非必填项)
    public string Description { get; set; }   

    // 博客内容格式,可填 Markdowon 或 Html,默认是 Markdowon
    public PostFormat PostFormat { get; set; } = PostFormat.Markdown;

    // 友好地址名(非必填项)
    public string Slug { get; set; }

    // 是否发布博文(非必填项),默认值是发布
    public bool IsPublished { get; set; } = true;

    // 是否允许评论(非必填项),默认允许
    public bool IsAllowComments { get; set; } = true;

    // 是否标识内容由 AI 生成,默认不标识
    public bool IsAigc { get; set; } = false

    // 分类
    public string[] Categories { get; set; }

    // 标签
    public string[] Tags { get; set; }
}

客户端调用示例代码(C#)

using System.Net.Http.Headers;
using System.Net.Http.Json;

var token = "[Personal Access Token]";

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
httpClient.DefaultRequestHeaders.Add("Authorization-Type", "pat");

var blogPost = new
{
    Title = $"测试博文标题 at {DateTime.Now}",
    Body = $"测试博文内容 ----- {DateTime.Now}",
    PostFormat = "Markdown",
    IsAigc = true,
    Categories = new string[] { "cate-test-1", "cate-test2-2" },
    Tags = new string[] { "tag-test-1", "tag-test-2" },
};

var response = await httpClient.PostAsJsonAsync(
    "https://i.cnblogs.com/openapi/v1/posts",
    blogPost);

Console.WriteLine($"Status code: {(int)response.StatusCode}({response.StatusCode})");
Console.WriteLine("Reponse text: " + await response.Content.ReadAsStringAsync());

成功发布博文的 json 响应内容

{
  "value": {
    "postId": 19246558,
    "postUrl": "https://www.cnblogs.com/cmt/p/19246558"
  },
  "success": true,
  "message": ""
}

检查博文的审核状态

API 请求地址(请求方法:POST)

https://i.cnblogs.com/openapi/v1/posts/reviewStatus:check

通过博文 url 检查审核状态的 json 请求数据示例

{
  "Url": "https://www.cnblogs.com/cmt/p/21663595"
}

通过博文 id 检查审核状态的 json 请求数据示例

{
  "PostId": 21663595
}

请求响应 json 数据示例

{
  "value": {
    "postId": 21663595,
    "url": "https://www.cnblogs.com/cmt/p/21663595",
    "reviewStatus": 1,
    "description": "审核通过"
  },
  "success": true,
  "message": ""
}

通过 reviewStatus 获取审核状态:

  • 0 表示待审核
  • 1 表示审核通过
  • 2 表示审核不通过

查询企业博客额度信息

API 请求地址(请求方法:GET)

https://i.cnblogs.com/openapi/v1/corp/info

请求响应内容示例

{
  "value": {
    "blogUrl": "https://www.cnblogs.com/cmt",
    "totalCount": 10, // 总额度
    "restCount": 6, // 剩余额度
    "usedToday": 4 // 当天消耗的额度
  },
  "success": true,
  "message": ""
}
posted @ 2025-11-20 12:22  博客园团队  阅读(756)  评论(0)    收藏  举报