POST/v1/drafts
创建草稿
create_draft
创建新卡片的草稿(collection,需要 COLLECTION_CREATE_CARDS)或现有卡片的编辑草稿(card_id,需要 CARD_EDIT;未提供时,标题、标签和正文取自最新版本)。作者是第一位共同作者。每个用户对每张卡片只能有一个活跃草稿:重复请求返回 409 drafts.exists,details 中带有 draft_id(请使用 PATCH 继续编辑该草稿)。scheduled_publish_at 用于安排发布时间。API 密钥在 author_id 中指定草稿的作者(从 1.62.0 起)。
身份验证
在 Authorization 请求头中传入 API 密钥:Authorization: Bearer <密钥>。
请求头参数
Idempotency-Keystring写操作安全重试所用的键:1 到 255 个可打印 ASCII 字符;建议每个逻辑操作使用一个 UUID v4。24 小时内使用同一个键重试不会再次执行操作,而是返回已保存的响应(状态、响应头和正文),并附带
Idempotency-Replayed: true头。同一个键配合不同的方法、路径、Content-Type或正文时返回409 api.idempotency_mismatch;第一个请求仍在执行时返回409 api.idempotency_in_progress,并附带Retry-After: 1。收到 5xx 或 429 响应后,该键被释放,重试会再次执行操作。键的作用范围是组织和调用方(API 密钥、用户或自定义数据源密钥)。length ≥ 1, length ≤ 255
请求体
application/json
card_idstring | nullcollectionstring | null新卡片所属合集的名称(不传
card_id时必填)。titlestring | nulllength ≤ 200
body_markdownstring | nulllength ≤ 500000
tagsarray of string | nullitems ≤ 30
revision_notestring | nulllength ≤ 1000
verify_on_publishboolean默认值:false
notify_followersboolean默认值:false
scheduled_publish_atstring (date-time) | nullauthor_idintegerAPI 密钥调用时草稿的作者(自 1.62.0 起):密钥所属组织的活跃用户;该用户成为
created_by和第一位共同作者。使用密钥时必填(否则返回422 validation.failed);其他组织的用户或未启用的用户返回404 users.not_found。对合集和卡片的权限按密钥检查,而不是按作者检查。在会话中,作者是已登录的用户:传入不同的author_id返回422 validation.failed。≥ 1
响应
201已创建
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
Idempotency-Replayed为
true时表示该响应是按此Idempotency-Key从已保存的响应重放的:操作没有再次执行。
application/json
idinteger必填org_idinteger必填card_idstring | null必填草稿所编辑的卡片;
null——新卡片的草稿。collection_idinteger必填collectionstring必填titlestring必填body_markdownstring必填tagsarray of string必填base_versioninteger | null草稿开始时所基于的卡片版本。
scheduled_publish_atstring (date-time) | nullrevision_notestring | nullverify_on_publishboolean必填notify_followersboolean必填created_byinteger必填updated_byinteger | nullcreated_atstring (date-time)必填updated_atstring (date-time)必填publish_requested_byinteger | nullpublish_requested_atstring (date-time) | nullapproved_byinteger | nullapproved_atstring (date-time) | nullconflictstring | nullcard_published——草稿开始后卡片被发布或更改;card_deleted——卡片已删除;可扩展。
400请求无效:参数值或对象状态不允许执行该操作(`detail` 为消息)。
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
401未发送凭据(既没有会话 Cookie,也没有 API 密钥),或未找到该密钥。
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
403不允许执行该操作:角色权限不足、无权访问合集或卡片、请求在“View as”模式下执行,或组织已被暂停或删除(`detail` 为对象,包含 `code: org_suspended | org_deleted`)。
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
404对象不存在或您无权访问。对于访问受限的对象,API 不会确认其是否存在。
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
409对象状态不允许执行该操作,例如存在重复、正在索引,或作业已处理过。
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
422校验错误:请求体或参数不符合定义的结构(`detail` 为校验错误列表),或参数值超出范围(`detail` 为消息)。
响应头
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
429请求过多(`api.rate_limited`)、组织每分钟、每天或每月的配额已用完(`api.quota_exceeded`;`error.details` 中包含 `quota`、`limit` 和 `reset_at`)、已达到组织的限额,或回答服务繁忙(`answers.engine_busy`)。请等待 `Retry-After` 头中给出的时间。
响应头
Retry-After重试请求前需要等待的秒数。
RateLimit-Policy当前生效的限制,格式遵循 IETF 草案
draft-ietf-httpapi-ratelimit-headers:以逗号分隔的项"<name>";q=<quota>;w=<window in seconds>。key是 API 密钥的请求速率(配额即突发量,时间窗口是配额完全恢复所需的时间;会话为user,无凭据时为ip);minute、day和month是组织按 UTC 计算的自然分钟、自然日和自然月的配额。RateLimitRateLimit-Policy中每项限制的剩余量:"<name>";r=<remaining>;t=<seconds until reset>。X-RateLimit-LimitRateLimit-Policy中最严格一项(剩余请求数最少的一项)的限额。X-RateLimit-Remaining最严格限制下的剩余请求数。
X-RateLimit-Reset距最严格限制重置的秒数。
application/json
错误码
除所有请求通用的错误码外,此接口还可能在 error.code 中返回以下错误码。
安全重试
每个 POST 和 PATCH 请求都传入 Idempotency-Key 头(例如一个 UUID)。24 小时内用同一个键重试时,返回已保存的响应,不会再次执行请求。
速率限制
响应带有 RateLimit 和 RateLimit-Policy 头,以及旧版的 X-RateLimit-Limit、X-RateLimit-Remaining 和 X-RateLimit-Reset 头。429 响应带有以秒为单位的 Retry-After:等待后重试。