Chaindoc REST API 参考文档
完整指南,助您将Chaindoc的REST API集成至应用程序。管理文档、签名、区块链验证及嵌入式签名工作流。
API版本与基础URL
版本:1.0.0 基础网址:https://api.chaindoc.io/api/v1 认证:API密钥(Bearer令牌)
概述
Chaindoc REST API 提供对文档管理、区块链验证及数字签名功能的程序化访问。该 API 专为服务器间集成设计,同时支持公钥与私钥两种 API 密钥类型。
主要功能
- 文档管理 - 通过区块链验证创建、更新和管理文档
- 数字签名 - 向多个方请求并收集数字签名
- 区块链验证 - 在区块链网络上验证文档真实性
- 嵌入式会话 - 为前端签名工作流创建安全会话
- 媒体上传 - 上传文件(PDF、图片、视频)用于文档创建
- KYC集成 - 通过Sumsub共享并验证身份数据
认证
Chaindoc API 使用 API 密钥进行身份验证。密钥分为两种类型,具有不同的访问权限级别。
API密钥类型
- 公钥 (pk_) - 前端应用的只读访问权限及验证
- 密钥 (sk_) - 后端服务器完整读写权限
安全最佳实践
客户端代码中严禁暴露密钥 浏览器中仅使用公钥进行只读操作 为保障安全,请定期更换密钥 将密钥存储在环境变量中
获取 API 密钥
1订阅商业计划仅商业版用户可创建API密钥
2导航至 API 访问前往控制台的“设置”→“API访问”
3创建 API 密钥点击创建API密钥按钮
4安全存储安全存储密钥(仅显示一次)
使用 API 密钥
在授权标头中包含您的API密钥,并使用Bearer身份验证:
terminal
curl -X GET https://api.chaindoc.io/api/v1/me \
-H "Authorization: Bearer sk_live_xxxxxxxxxxxxx"速率限制
为防止滥用,API 端点均设置了速率限制。不同类型的端点速率限制各不相同。
- 通用接口:每10秒限3次请求
- 媒体上传:每10秒3次请求
- OTP验证:每60秒限5次请求
- 读取操作:每60秒10次请求
- 签名创建:每3秒限20次请求
当超过速率限制时,您将收到429请求过多的响应。响应中包含速率限制标头:
terminal
X-RateLimit-Limit: 3
X-RateLimit-Remaining: 2
X-RateLimit-Reset: 1640000000错误处理
HTTP状态码
- 200 - 成功
- 201 - 资源创建成功
- 400 - 请求错误(验证失败)
- 401 - 未授权(API密钥无效或缺失)
- 403 - 禁止访问(权限不足)
- 404 - 资源未找到
- 429 - 请求过多(超出速率限制)
- 500 - 服务器内部错误
错误响应格式
terminal
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"details": [
{
"field": "name",
"message": "name must be a string"
}
]
}通用API
获取API密钥信息
获取当前API密钥的相关信息。
GET /me
Authorization: Bearer sk_live_xxxxx健康检查
验证API连接性和密钥有效性。
GET /health
Authorization: Bearer sk_live_xxxxx文档 API
创建文档
创建具有区块链验证的新文档。当状态设置为"已发布"时,文档将自动在区块链上完成验证。
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签名 API
创建签名请求
为一个或多个收件人创建签名请求。启用嵌入式流程以实现前端集成。
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密钥持有者为签署方)。
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媒体上传API
上传文件用于文档创建。支持PDF、图片和视频格式。每次请求最多可上传10个文件。
支持的文件类型
文件格式:PDF、DOC、DOCX、XLS、XLSX、PPT、PPTX、TXT 图片格式:JPG、JPEG、PNG、GIF、WEBP、SVG 视频格式:MP4、AVI、MOV、WMV
curl -X POST https://api.chaindoc.io/api/v1/media/upload \
-H "Authorization: Bearer sk_live_xxxxx" \
-F "media=@contract.pdf"KYC API
共享KYC数据
向接收方共享KYC(了解你的客户)数据以进行身份验证。
POST /kyc/share
Authorization: Bearer sk_live_xxxxx
Content-Type: application/json嵌入式会话 API
在前端应用中创建用于文档签名的嵌入式会话。会话有效期为10分钟。
POST /embedded/sessions
Authorization: Bearer sk_live_xxxxx
Content-Type: application/json嵌入式会话流程
1. 创建嵌入式会话(一次性密码已发送至邮箱) 2. 用户在前端验证一次性密码 3. 前端接收 JWT 令牌 4. 使用令牌调用嵌入式端点