Chaindoc logoChaindoc

Chaindoc REST API 接口文档

这里提供 Chaindoc REST API 的完整接口参考。涵盖认证、文档管理、电子签名、媒体上传、嵌入式会话,还有区块链验证等核心功能。

接口概览

这套 API 让你能用代码操作 Chaindoc 的所有功能:文档管理电子签名、区块链验证,还有团队管理。设计上主打服务端调用,同时支持 public 和 secret 两种 API key。

  • 文档 — 创建、更新文档,并在区块链上完成验证
  • 签名 — 发起签名请求,追踪签署进度
  • 媒体 — 上传 PDF、图片、视频(单次最多 10 个文件)
  • 嵌入式会话 — 为前端创建签署会话(需要配合 Embed SDK 使用)
  • KYC — 通过 Sumsub 集成共享和验证身份信息

认证方式

每个请求都要在 Authorization header 里带上 API key。key 分两种类型:

密钥类型

  • Public key (`pk_`) — 只读权限,可以放在前端代码里
  • Secret key (`sk_`) — 完整读写权限,仅限后端使用。千万别暴露在客户端代码中。

获取密钥

1订阅 Business 套餐只有 Business 套餐用户才能创建 API 密钥

2进入 API Access 页面在控制台中前往 Settings → API Access

3创建 API key点击 Create API Key 按钮

4安全保存妥善保管 secret key(只显示一次)

使用 API key

在 Authorization header 中用 Bearer 方式带上你的 API key:

terminal
curl -X GET https://api.chaindoc.io/api/v1/me \
  -H "Authorization: Bearer sk_live_xxxxxxxxxxxxx"

速率限制

接口都有限流机制来防止滥用。不同类型的接口,限制也不一样。

  • 通用接口: 每 10 秒 3 次请求
  • 媒体上传: 每 10 秒 3 次请求
  • OTP 验证: 每 60 秒 5 次请求
  • 读取操作: 每 60 秒 10 次请求
  • 创建签名: 每 3 秒 20 次请求

触限后会返回 429 Too Many Requests。响应头里能看到限流详情:

terminal
X-RateLimit-Limit: 3
X-RateLimit-Remaining: 2
X-RateLimit-Reset: 1640000000

错误处理

HTTP 状态码

  • 200 - 请求成功
  • 201 - 资源创建成功
  • 400 - 请求参数错误(验证失败)
  • 401 - 未授权(API key 无效或缺失)
  • 403 - 禁止访问(权限不足)
  • 404 - 资源不存在
  • 429 - 请求过于频繁(超出限流)
  • 500 - 服务器内部错误

错误响应格式

terminal
{
  "statusCode": 400,
  "message": "Validation failed",
  "error": "Bad Request",
  "details": [
    {
      "field": "name",
      "message": "name must be a string"
    }
  ]
}

通用接口

获取 API key 信息

查询当前 API key 的基本信息。

GET /me

Authorization: Bearer sk_live_xxxxx

健康检查

验证 API 连通性和 key 的有效性。

GET /health

Authorization: Bearer sk_live_xxxxx

文档接口

创建文档

创建新文档并自动进行区块链验证。status 设为 'published' 时会自动上链存证。

POST /documents

Headers:
Authorization: Bearer sk_live_xxxxx
Content-Type: application/json

更新文档

通过创建新版本来更新文档。历史版本会被保留,方便审计追溯。

PUT /documents/:documentId

Authorization: Bearer sk_live_xxxxx
Content-Type: application/json

更新文档权限

修改文档的访问控制设置。

PUT /documents/:documentId/rights

Authorization: Bearer sk_live_xxxxx
Content-Type: application/json

验证文档

通过区块链验证文档真伪。返回验证状态和交易哈希、链 ID 等信息。

POST /documents/verify

{
  "versionHash": "0x123abc...",
  "certificateHash": "0x456def..."
}

获取验证状态

查询指定文档版本的区块链验证状态。

GET /documents/versions/:versionId/verification

Authorization: Bearer sk_live_xxxxx

签名接口

创建签名请求

为一个或多个收件人创建签名请求。开启 embedded flow 可以直接集成到你的前端界面。

curl -X POST https://api.chaindoc.io/api/v1/signatures/requests \
  -H "Authorization: Bearer sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "versionId": "f0b7721f-0399-4035-9b69-7b95d3a367f0",
    "recipients": [{"email": "signer@example.com"}],
    "deadline": "2024-12-31T23:59:59Z",
    "embeddedFlow": true
  }'

获取签名请求状态

查看签名请求的状态,了解哪些人已经完成签署。

GET /signatures/requests/:requestId/status

Authorization: Bearer sk_live_xxxxx

签署文档

签署文档(前提是 API key 所有者是该文档的签署人之一)。

POST /signatures/sign

Authorization: Bearer sk_live_xxxxx
Content-Type: application/json

获取用户签名

获取当前认证用户的所有签名。

GET /signatures

Authorization: Bearer sk_live_xxxxx

获取签名请求列表

获取当前用户的所有签名请求,支持分页。

GET /signatures/requests?pageNumber=1&pageSize=10

Authorization: Bearer sk_live_xxxxx

媒体上传接口

上传文件用于创建文档。支持 PDF、图片和视频,单次最多传 10 个文件。

curl -X POST https://api.chaindoc.io/api/v1/media/upload \
  -H "Authorization: Bearer sk_live_xxxxx" \
  -F "media=@contract.pdf"

KYC 接口

共享 KYC 数据

向指定收件人共享 KYC (Know Your Customer) 数据,用于身份验证场景。

POST /kyc/share

Authorization: Bearer sk_live_xxxxx
Content-Type: application/json

嵌入式会话接口

为你的前端应用创建嵌入式签署会话。会话有效期 10 分钟。

POST /embedded/sessions

Authorization: Bearer sk_live_xxxxx
Content-Type: application/json

下一步

  • API 集成指南 — 常用开发模式、最佳实践和完整流程示例
  • SDK 文档 — Server SDK 和 Embed SDK,带各框架的具体集成指南
  • Webhooks — 设置实时事件通知
  • 安装指南 — npm 安装方式,支持所有主流框架
  • 安全指南 — API 密钥管理和合规要求