REST API 参考

了解认证、资源列表、内容创建、错误处理和 BlendDuck OpenAPI 3.1 规范。

文档负责人:
BlendDuck Documentation
最近复核:

BlendDuck v1 API 使用 HTTPS 和 JSON,并由 Bearer API Key 选择唯一组织。OpenAPI 3.1 规范包含全部 25 个操作、请求和响应 Schema,也是生成 SDK 与兼容性检查的事实来源。

Base URL 与认证

https://blendduck.com/api/v1

控制台 → 开发者 → API Key创建和管理组织 Key。完整 Key 只在创建时显示一次,请保存到密钥管理器,并仅从受信任的服务端代码发送:

Authorization: Bearer $BLENDDUCK_API_KEY
Content-Type: application/json

Key 只选择一个组织。标准 v1 请求不接受 workspace_id,也不会使用浏览器当前工作区 Cookie 作为认证回退。

第一个请求

curl --fail-with-body https://blendduck.com/api/v1/tenant \
  -H "Authorization: Bearer $BLENDDUCK_API_KEY"

成功响应使用 data 包装,并在 meta.requestIdX-Request-ID Header 中返回相同请求 ID。

Endpoint 列表

资源操作
TenantGET /tenant
ChannelsGET /channelsGET /channels/{channelId}DELETE /channels/{channelId}
PostsGET /postsPOST /postsGET/PATCH/DELETE /posts/{postId}
AnalyticsGET /analytics
MediaGET /mediaPOST /mediaGET /media/{mediaId}
ProvidersGET /providersGET /providers/{providerId}
WebhooksGET/POST /webhooksGET/PATCH/DELETE /webhooks/{webhookEndpointId}
Webhook 操作Secret 轮换、测试事件、Delivery 列表/详情和失败重放

所有 Parameter、Enum、字段、响应和 Scope 请以 OpenAPI 文件为准。各语言客户端参见 SDK

创建多渠道内容

集成初期建议先创建草稿。把示例 UUID 替换为 GET /channels 返回的真实渠道 ID:

curl --fail-with-body https://blendduck.com/api/v1/posts \
  -X POST \
  -H "Authorization: Bearer $BLENDDUCK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: launch-post-2026-08-09" \
  --data '{
    "content": "Hello from BlendDuck",
    "mode": "draft",
    "targets": [
      { "channelId": "00000000-0000-4000-8000-000000000000" }
    ]
  }'

post.id 标识一条逻辑内容,targets[] 是各渠道独立发布目标。目标可覆盖 contentpublishAtmediasettingsthread。发布方式包括 draftschedulenext_availableprioritizepublish_now

所有写操作应发送 Idempotency-Key。使用相同 Key 和相同 Payload 重复请求会返回原结果;同一 Key 搭配不同 Payload 会返回冲突。

分页与日期

列表接口接受 1–100 的 limit 和不透明 cursor。读取 meta.pagination.nextCursor 并原样传回;当其为 null 时停止。不要解析或自行生成 Cursor。

各接口的筛选和排序参数以 /openapi.json 为准。日期时间使用 RFC 3339,并包含 Z 或明确时区偏移。

错误格式

{
  "error": {
    "code": "validation_error",
    "message": "The request could not be accepted",
    "details": []
  },
  "meta": { "requestId": "request-id" }
}
状态码含义客户端处理
400请求语法或传输错误修改请求后再发送。
401Key 缺失、无效或已撤销更换或轮换凭据。
403有效 Key 缺少访问权限授予所需 Scope 或角色。
404当前组织看不到该资源检查 ID 与 Tenant。
409资源状态或幂等冲突先读取当前资源。
422字段或平台验证失败根据 error.details 修改输入。
429达到配额或限流遵守 Retry-After
5xxBlendDuck 或依赖故障仅对安全/幂等操作进行退避重试。

响应会包含 RateLimit-LimitRateLimit-RemainingRateLimit-ResetRateLimit-Policy;限流响应还会包含 Retry-After

安全与追踪

可发送 X-Request-ID 关联跨系统流程,也可以记录服务端生成的值。日志必须排除 Authorization Header、Webhook Secret、社交 Token 和不必要的客户内容。

每个环境和集成使用独立 Key,只授予最小 Scope。怀疑泄露时立即轮换,绝不能把组织 Key 打包进浏览器或移动端应用。

版本兼容

响应通过 X-BlendDuck-API-Version 标识版本。v1 可以增加兼容字段,客户端应忽略未知响应字段;删除或不兼容变更需要新版本。旧的 workspace-addressed 路径只为现有集成保留,不出现在 OpenAPI、SDK 和新示例中。