API 开发文档
从第一次请求,到稳定上线。与当前 v1 接口保持一致的接入说明。
快速开始
使用网站账号开通 API 服务并创建密钥。API 采用异步任务协议:提交图片 → 查询状态 → 下载 SVG。收到 202 仅表示已接收,不代表转换完成。
https://svgo-api.com/openapi/v1Bearer · v1准备环境变量
export API_BASE_URL='https://svgo-api.com/openapi/v1'
export API_KEY='YOUR_API_KEY'
# 一个业务任务固定一个键;断线重试仍用原键。下一张新图片换新键。
export IDEMPOTENCY_KEY='your-business-request-0001' 示例中的密钥是占位符。每个新业务任务生成唯一幂等键,原任务重试保留原键及原图片。先用 GET /capabilities 检查 acceptsTasks,未开放时不要提交图片。
提交并保存任务
curl --fail-with-body -sS "$API_BASE_URL/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-F 'image=@image.png' \
-o task.json
# 需要 jq;请保存 task.json 中的 taskId。
TASK_ID=$(jq -r '.taskId // empty' task.json)
cat task.json{
"taskId": "6dd39862-bec8-44e4-b72e-50a40618ba6e",
"status": "queued",
"errorCode": null,
"createdAt": "2026-10-28T02:00:00.000Z",
"finishedAt": null,
"expiresAt": null,
"billing": {
"source": "package",
"state": "reserved",
"reservedCents": 0,
"chargedCents": null,
"successOrdinal": null
}
}查询并领取结果
curl --fail-with-body -sS "$API_BASE_URL/tasks/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"
# 仅在 status=succeeded 后下载,以下响应是文件,不是 JSON。
curl --fail -sS "$API_BASE_URL/tasks/$TASK_ID/result" \
-H "Authorization: Bearer $API_KEY" \
-o result.svg 建议间隔 2–3 秒查询。只有 succeeded 可以下载;failed、cancelled、expired 为不成功的终态。
鉴权与安全
全部 /openapi/v1 接口都需要 Authorization: Bearer YOUR_API_KEY。网站 Cookie、会员状态和 URL 查询参数不能替代 API Key。生产请求使用 HTTPS。
| Scope | 允许操作 |
|---|---|
tasks:write | 提交、申请取消任务 |
tasks:read | 查询任务、下载结果 |
account:read | 查看本账户额度 |
usage:read | 查看本账户成功结算记录 |
查询能力只要求有效 Key。控制台创建的密钥当前包含上述四种权限;细分权限可由管理端配置。完整 Key 只在创建时展示一次,最多保留 20 把有效 Key。
- 密钥仅保存在自己的服务器或密钥管理系统,不嵌入网页、插件、Git 仓库或日志。
- 泄露后立即撤销旧 Key,创建替代 Key 并更新服务端配置;撤销不会撤销已提交任务。
- 同账户多把 Key 共用额度、历史次数、队列和双并发,可查询同账户任务。
- 访问其他账户的任务统一返回 404。不要尝试用账户 ID 参数切换任务归属。
输入与输出
| 上传方式 | multipart/form-data,仅一个名为 image 的二进制文件字段 |
|---|---|
| URL 输入 | application/json 请求体:{"imageUrl":"https://图片地址"}。支持 HTTPS 直链、COS/OSS 临时签名链接;仅 443 端口,不跟随重定向,不支持登录 Cookie 或自定义认证头。 |
| 格式 | PNG、JPEG/JPG、WebP;以实际解码结果校验,不只看扩展名;不支持多帧图片 |
| 输入上限 | 单文件 10 MiB(10,485,760 字节);最多 20,000,000 输入像素 |
| 处理尺寸 | 等比例缩放至最长边不超过 1,200 像素,不放大小图 |
| 输出 | SVG 文件,Content-Type: image/svg+xml;当前无其他输出格式参数 |
| 领取期 | 默认成功后 24 小时,以 expiresAt 和能力接口配置为准 |
交给客户端库生成 multipart boundary;不要手动写死 Content-Type: multipart/form-data。文件上传和 JSON URL 输入二选一。额外字段、Base64 输入、自定义颜色、背景和输出参数当前不受支持。
URL 下载最多 10 MiB,DNS 最多等待 5 秒、连接与下载最多 25 秒。URL 下载不占转换并发,失败不预留或扣除额度。签名链接需覆盖本次下载时间。同一幂等键保留原 URL(包括签名参数),已保存的图片副本在 1 小时内复用;任务建立后始终返回原任务,不重新下载。
curl --fail-with-body -sS 'https://svgo-api.com/openapi/v1/tasks' -H 'Authorization: Bearer YOUR_API_KEY' -H 'Idempotency-Key: your-url-task-0001' -H 'Content-Type: application/json' --data '{"imageUrl":"https://your-image-host.com/image.png"}'完整代码示例
下面的 Node.js 和 Python 示例包含能力检查、上传、轮询、结果保存及有限退避。网络中断重试始终保留原幂等键和相同图片,不将等待超时当作转换失败。
export API_BASE_URL='https://svgo-api.com/openapi/v1'
export API_KEY='YOUR_API_KEY'
# 一个业务任务固定一个键;断线重试仍用原键。下一张新图片换新键。
export IDEMPOTENCY_KEY='your-business-request-0001'
# 先确认 acceptsTasks=true,查询能力不收费。
curl --fail-with-body -sS "$API_BASE_URL/capabilities" \
-H "Authorization: Bearer $API_KEY"
curl --fail-with-body -sS "$API_BASE_URL/tasks" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-F 'image=@image.png' \
-o task.json
# 需要 jq;请保存 task.json 中的 taskId。
TASK_ID=$(jq -r '.taskId // empty' task.json)
cat task.json
# 查询时若还未成功,间隔 2–3 秒再次查询;不要直接下载或重新创建。
curl --fail-with-body -sS "$API_BASE_URL/tasks/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"
# 仅在 status=succeeded 后下载,以下响应是文件,不是 JSON。
curl --fail -sS "$API_BASE_URL/tasks/$TASK_ID/result" \
-H "Authorization: Bearer $API_KEY" \
-o result.svg示例使用 curl 和 jq。查询仍未成功时继续等待,不要把最后一条下载命令当成自动轮询。
这些是 HTTP 接入示例,不是已发布的官方 SDK。首次接入建议先调用免费的账户和能力查询。当前没有免费转换测试模式。
接口参考
下列路径相对于 https://svgo-api.com/openapi/v1。所有接口均按 Key 所属账户进行权限校验。只有下载结果返回文件,其余成功响应均为 JSON。
POST/tasks提交转换任务
上传一张图片,或使用 JSON 提交 imageUrl,创建异步转换任务并预留额度。同账户不同 Key 使用同一幂等键,仍对应同一任务。
tasks:write| 参数 / 位置 | 说明 |
|---|---|
Authorizationheader · 必填 | Bearer YOUR_API_KEY |
Idempotency-Keyheader · 必填 | 1–80 个 ASCII 字符:[A-Za-z0-9:_-]。每个逻辑任务唯一,原任务重试保留原键。 |
imagemultipart · binary · 可选 | 仅一个 PNG/JPEG/WebP 文件,最大 10 MiB、2,000 万像素,不支持动画多帧或额外表单字段。 |
imageUrlJSON · string · 可选 | 与 image 二选一;最大 8192 字符的 HTTPS 图片直链或 COS/OSS 临时签名链接,不支持重定向或自定义认证头。 |
成功响应:202 接受新任务;200 返回幂等键对应的原任务。两者均返回 Task JSON。
文件上传与 JSON imageUrl 二选一。URL 仅 HTTPS 443,无登录凭证,不跟随跳转;支持 COS/OSS 临时签名链接。同一幂等键必须保持原链接(含签名参数),已保存的图片副本会复用。不手动设置 multipart 的 Content-Type 或 boundary,由 HTTP 客户端生成。只返回 taskId 等状态信息,不直接返回 SVG。
{
"taskId": "6dd39862-bec8-44e4-b72e-50a40618ba6e",
"status": "queued",
"errorCode": null,
"createdAt": "2026-10-28T02:00:00.000Z",
"finishedAt": null,
"expiresAt": null,
"billing": {
"source": "package",
"state": "reserved",
"reservedCents": 0,
"chargedCents": null,
"successOrdinal": null
}
}GET/tasks/{taskId}查询任务
获取原任务的最新状态、结果领取截止时间及预留/结算信息。
tasks:read| 参数 / 位置 | 说明 |
|---|---|
taskIdpath · UUID · 必填 | 提交接口返回的 taskId。 |
成功响应:200 · Task JSON
建议每 2–3 秒轮询一次,达到终态即停止。reconciling 时继续查原任务,不能据此新建替代任务。
{
"taskId": "6dd39862-bec8-44e4-b72e-50a40618ba6e",
"status": "succeeded",
"errorCode": null,
"createdAt": "2026-10-28T02:00:00.000Z",
"finishedAt": "2026-10-28T02:01:00.000Z",
"expiresAt": "2026-10-29T02:01:00.000Z",
"billing": {
"source": "package",
"state": "consumed",
"reservedCents": 0,
"chargedCents": 0,
"successOrdinal": "1"
}
}GET/tasks/{taskId}/result下载结果
任务 succeeded 后鉴权领取 SVG。重复下载不增加成功次数或重复扣费。
tasks:read| 参数 / 位置 | 说明 |
|---|---|
taskIdpath · UUID · 必填 | 属于当前账户且已成功的任务编号。 |
成功响应:200 · image/svg+xml 二进制内容,Content-Disposition: attachment
此响应不是 JSON。结果默认成功后保留 24 小时,以 Task.expiresAt 为准;410 表示已过期。
POST/tasks/{taskId}/cancel申请取消任务
取消尚在排队的任务,或申请停止已经派发的任务。不需要 JSON 请求体。
tasks:write| 参数 / 位置 | 说明 |
|---|---|
taskIdpath · UUID · 必填 | 当前账户任务编号。 |
成功响应:200 · 最新 Task JSON
排队任务可直接变为 cancelled;已派发任务可能先变为 cancel_requested。成功与取消存在竞态,返回 succeeded 时仍按已完成结算。
GET/account查看账户额度
查看余额、冻结额、可用次数包、历史成功次数与账户并发限制。
account:read除鉴权外,无请求参数或请求体。
成功响应:200 · Account JSON
余额及较大计数字段以十进制字符串返回。显示人民币金额时再除以 100,不使用浮点数做账。
{
"accountId": "6fb13245-5c30-48e4-a5c7-0bfffc34a32f",
"currency": "CNY",
"balanceCents": "10000",
"reservedCents": "20",
"availableCents": "9980",
"packageAvailableCalls": "0",
"packageReservedCalls": "0",
"lifetimeSuccessCount": "999",
"nextUnitPriceCents": 20,
"maxConcurrency": 2,
"activeTasks": 1,
"maxPendingTasks": 20,
"walletFallback": true
}GET/usage查询成功结算记录
查询当前账户的成功调用记录,按历史成功序号升序返回,每页最多 100 条。
usage:read| 参数 / 位置 | 说明 |
|---|---|
afterquery · decimal string · 可选 | 可选,默认 0。不含起点,下一页传入上页 nextCursor;不支持任意日期筛选或 limit 参数。 |
成功响应:200 · { items, nextCursor };nextCursor 为 null 时本次已到末页。
只包含成功结算记录。排队、失败、恢复中的任务应通过 taskId 查询。chargedCents 单位为分,consumedPackageCalls 为包内次数。
{
"items": [
{
"taskId": "6dd39862-bec8-44e4-b72e-50a40618ba6e",
"successOrdinal": "1001",
"source": "wallet",
"chargedCents": 15,
"consumedPackageCalls": 0,
"createdAt": "2026-10-28T02:01:00.000Z"
}
],
"nextCursor": null
}GET/capabilities查询服务能力
接入前检查任务接收、支付能力、输入限制和结果保留时间。不产生转换费用。
有效 Key 即可除鉴权外,无请求参数或请求体。
成功响应:200 · Capabilities JSON
acceptsTasks=false 时不要新建任务。paymentAvailable=false 表示在线充值/购包尚未接通,不代表账户中的现有有效额度丢失。
{
"version": "v1",
"acceptsTasks": false,
"paymentAvailable": false,
"formats": [
"png",
"jpeg",
"webp"
],
"inputMethods": [
"multipart",
"https-url"
],
"maxFileBytes": 10485760,
"maxInputPixels": 20000000,
"processingMaxEdge": 1200,
"maxConcurrency": 2,
"resultRetentionSeconds": 86400
}响应字段
Task · 任务及计费状态
| 字段 / 类型 | 含义 |
|---|---|
taskIdstring · UUID | 账户内任务标识。请持久保存,以便中断后继续查询。 |
statusstring | 任务状态。只有 succeeded 表示成功转换;HTTP 200/202 不等于转换已成功。 |
errorCodestring | null | 任务失败或恢复阶段的稳定原因码;排查时同时保留 taskId。 |
createdAtstring · date-time | 任务创建时间,ISO 8601,UTC。 |
finishedAtstring | null | 任务到达终态的时间,尚未完成时为 null。 |
expiresAtstring | null | 成功结果领取截止时间。以该时间为准,默认成功后 24 小时。 |
billing.sourcepackage | wallet | 接收时确定的扣减来源:次数包或余额;同一任务不会双扣。 |
billing.statereserved | consumed | released | 额度已预留、已消耗或已释放。预留不是最终扣款。 |
billing.reservedCentsinteger · 分 | 余额预留金额;次数包来源为 0。可能高于最终扣费。 |
billing.chargedCentsinteger | null · 分 | 成功结算的现金扣费,次数包为 0;尚无成功结算时为 null。 |
billing.successOrdinalstring | null | 历史成功结算序号,以十进制字符串返回,避免大整数精度丢失。 |
Account · 额度与限制
| 字段 / 类型 | 含义 |
|---|---|
accountIdstring | 当前 Key 所属的 API 计费账户。 |
currencyCNY | 人民币;所有 Cents 金额的单位都是分。 |
balanceCentsstring | 余额总额,包含仍在预留的部分。 |
reservedCentsstring | 已被待处理任务预留的余额。 |
availableCentsstring | 当前可用余额,等于 balanceCents − reservedCents。 |
packageAvailableCallsstring | 有效包中尚未消耗或预留的次数。 |
packageReservedCallsstring | 已预留的包次数,包含仍在处理中的过期包预留。 |
lifetimeSuccessCountstring | 历史成功调用总数,包内和余额调用共同累计,不按月重置。 |
nextUnitPriceCentsinteger | 以当前历史次数计算的下一次余额调用单价,20 或 15 分。 |
maxConcurrencyinteger | 账户执行并发上限,当前为 2,所有 Key 共享。 |
activeTasksinteger | 已经占用执行名额的任务数,包含恢复及取消确认中的任务。 |
maxPendingTasksinteger | 账户未结束任务上限,当前为 20。 |
walletFallbackboolean | 次数包耗尽后是否允许使用余额。 |
错误与响应头
{
"error": {
"code": "API_CREDIT_INSUFFICIENT"
},
"requestId": "f7d692da-01bf-48c8-bb45-28d063b3d9d0"
} 应用错误通常包含 requestId,便于排查;网关故障可能只返回 error.code,客户端应容忍非 JSON 的错误响应。
X-Request-Id | 应用生成的单次请求编号,不同于 taskId。排查接口错误时保留。 |
|---|---|
Retry-After | 429 时建议等待的秒数,当前通常为 60。 |
Cache-Control | 带身份的数据响应为 no-store,不要用公共 CDN 缓存。 |
Content-Disposition | 下载成功时为 attachment,文件名对应任务编号。 |
任务状态与取消
| 状态 | 说明 |
|---|---|
queued排队中 · 继续查询 | 已接受并预留额度,等待执行。排队不占执行并发;输入排队窗口默认 1 小时。 |
dispatching准备执行 · 继续查询 | 已分配执行名额,准备处理图片。 |
running转换中 · 继续查询 | 任务正在执行,继续使用原 taskId 查询。 |
reconciling状态确认中 · 继续查询 | 正在恢复确认执行状态,保留名额和预留额度。不要换幂等键重复提交。 |
cancel_requested取消确认中 · 继续查询 | 已申请取消,尚未确认停止;继续查询,不能据此认定已退回额度。 |
succeeded已完成 · 终态 | 结果已归档并结算一次,可以下载。 |
failed未完成 · 终态 | 确定失败,释放预留,不计成功调用次数。查看 errorCode 排查。 |
cancelled已取消 · 终态 | 已确认取消,释放预留;不会生成新的成功结算。 |
expired排队已过期 · 终态 | 未能在输入保留窗口内执行,释放预留。 |
申请取消不是确认取消
POST /tasks/{taskId}/cancel 不需要请求体。返回 cancel_requested 时继续查询,额度仍可能保持预留;只有确认取消后才释放。转换已先完成时会返回 succeeded,按照成功结果结算。
幂等键覆盖整个逻辑任务
同一账户的同一幂等键和图片会返回原 taskId,包括任务已经成功、失败或过期的情况;它不会“重新运行”原任务。原图不同返回 409。HTTP 超时或状态确认中,先恢复查询;确认原任务终态且有新的业务意图时,才创建新键。
当前任务记录和幂等信息不会随结果文件删除而清除。不要在任务结束后循环复用历史幂等键。
计费与额度预留
历史成功次数按 API 账户永久累计,所有 Key 共用。分段计价不追溯改价。通过余额付费的 1,500 次累计为 275 元。充值只增加余额,不增加成功调用次数。
- 接收任务时预留当前余额单价。若账号已有管理发放的有效调用额度,会先抵扣该额度;当前不销售调用次数包。
- 结果成功归档后结算一次。失败、确认取消或排队过期释放预留,不增加成功次数。
- 同一任务只扣包次数或余额一种。状态未知时保留预留并恢复确认,不立即重新收费或退款。
- 在第 999 次后并发两个余额任务,可都先预留 20 分;成功序号分别为 1000 和 1001,实际扣 20 分、15 分,多预留的 5 分释放。
- 查询状态、能力、额度、用量以及重复下载不收费;HTTP 请求数量不等于计费调用次数。
API 控制台提供 ¥10、¥50、¥100、¥500 四档余额充值,支付金额 1:1 入账,不销售调用次数包。微信支付是否开放以实际环境为准;本地预览关闭真实收款。自动退款尚未实现,测试额度不代表真实充值。
限流、超时与重试
| 执行并发 | 每账户 2 项,所有 Key 共用;任务并发不是 HTTP 请求并发。 |
|---|---|
| 待处理任务 | 每账户最多 20 项,包含排队、执行、恢复和取消确认中的任务。 |
| 请求速率 | 当前账户预算为每 60 秒最多 180 个请求,任务提交另限 30 次;同一请求受多层保护,可能更早返回 429。 |
| 轮询建议 | 每项任务间隔 2–3 秒查询,终态后停止;不要高频刷新或用更多 Key 绕过限制。 |
| 客户端超时 | 单次 HTTP 建议 30 秒左右;任务等待单独计时,不能沿用同步转换的长连接模型。 |
429 优先遵守 Retry-After;网络错误、500/502/503/504 使用有上限的退避,可在生产中加入抖动。不要自动重试 400、401、402、403、404、409、410、413,先修正原因。
提交响应丢失可能发生在服务端已经接收之后。重传必须保留原键、原文件;下载失败只重试原下载路径。本地停止轮询不会停止服务器任务,只有取消接口才能申请取消。
错误码与排查
先判断 HTTP 状态,再判断 error.code。查询任务返回 HTTP 200,但 status=failed 时,业务转换仍然失败,应查看任务的 errorCode。
INVALID_IMAGE_URL / IMAGE_URL_FORBIDDENURL 不合法或解析到了禁止访问的地址。
仅使用公网 HTTPS 443 图片直链;不包含用户名、密码、片段或空白。IMAGE_DOWNLOAD_FAILED / IMAGE_DOWNLOAD_TIMEOUT图片下载失败、跳转、链接过期或超时;未创建任务,不扣费。
检查链接可访问性与签名有效期;未创建任务时可用原幂等键重试。更新链接需更换幂等键。IMAGE_FETCH_IN_PROGRESS同一幂等键的图片正在下载,或下载中断待核查。
保留原链接与幂等键,稍后重试;持续出现请提供 requestId 联系管理员,勿盲目重复创建。IMAGE_INPUT_EXPIRED图片副本已过期且尚未创建任务。
确认原请求未建立任务后,用新幂等键提交。INPUT_CONCURRENCY_LIMIT当前实例中该账号已有 2 个输入请求在处理。
等待输入请求结束后重试;与账户转换执行并发分别限制。IDEMPOTENCY_KEY_REQUIRED缺少合法幂等键。
补充 1–80 字符的 Idempotency-Key,仅允许字母、数字、冒号、下划线和连字符。IMAGE_REQUIRED / INVALID_IMAGE / INVALID_UPLOAD未提交图片、图片无法读取或上传格式不支持。
使用 multipart/form-data 的 image 单文件字段,移除额外字段。INVALID_CURSOR用量分页游标无效。
使用上页返回的 nextCursor 或从 after=0 开始。UNAUTHORIZEDKey 缺失、格式无效、已撤销或已过期。
核对 Authorization: Bearer,必要时在控制台重新创建 Key。API_CREDIT_INSUFFICIENT没有可预留的次数或余额。
检查可用额度及余额兜底设置,补足额度后再提交;当前在线购买尚未开放。SCOPE_REQUIRED / ACCOUNT_DISABLEDKey 权限不足或 API 账户已停用。
核对所需 scope;账户停用时联系服务方处理。NOT_FOUND记录不存在,或不属于当前账户。
核对 taskId 与 Key 所属账户;无法查询其他账户的数据。IDEMPOTENCY_CONFLICT同一幂等键对应了不同图片内容。
原任务重传应使用原图;新的业务任务才使用新键。RESULT_NOT_READY任务尚未成功,不能下载结果。
查询任务状态;失败/取消不能通过重复下载变成成功。RESULT_EXPIRED结果已超过领取期或已清理。
检查已保存的文件;下载过期不会自动触发重新转换。IMAGE_TOO_LARGE / IMAGE_PIXEL_LIMIT超过 10 MiB 或 2,000 万输入像素。
先在客户端缩小图片,再作为新的业务任务提交。RATE_LIMITED请求速率超限。
遵守 Retry-After,降低整个账户的请求频率,多把 Key 不增加账户额度。ACCOUNT_QUEUE_LIMIT账户已有 20 项未结束任务。
等待原任务结束或取消尚未执行的任务;查询并发 2 与请求速率是不同限制。SERVICE_UNAVAILABLE / UPLOAD_BUSY服务未开放、暂不可用或上传繁忙。
退避重试;提交响应不确定时,只用原幂等键和相同图片重传。RESULT_TEMPORARILY_UNAVAILABLE已完成的结果暂时无法读取。
仅重试原下载接口,不要重新创建转换任务。 任务侧原因码包括输入异常、转换失败、排队过期及状态恢复等;遇到 STATE_RECONCILING 时先保留 taskId 继续查询,不以换键重传处理。联系服务方时提供 taskId、requestId 和错误码,不提供完整 Key 或私有图片。
OpenAPI 与调试工具
提供 OpenAPI 3.0.3 JSON,可用于 Postman、Apifox 或支持 OpenAPI 的客户端生成工具。规范只包含对外 7 个 v1 接口,不包含控制台会话、管理接口或内部信息。
下载 OpenAPI 规范JSON · v0.1.0- 导入下载的 JSON,并把服务地址配置为
https://svgo-api.com/openapi/v1。 - 在本地私有环境变量中设置 Bearer Key,不把真实 Key 同步到公共工作区或分享集合。
- 提交接口可选 form-data 的 image 文件字段,或 raw JSON 的 imageUrl;补充独立的 Idempotency-Key 请求头。
- 先查看 capabilities,再提交;保存 taskId,成功后以文件响应方式下载。
接口变更通过版本管理。当前没有已发布的官方 npm/PyPI SDK;文档中的下载示例可以直接使用,生成客户端后仍需保留异步轮询与幂等恢复逻辑。
当前能力边界
| 已实现的 v1 能力 | 尚未提供 |
|---|---|
| 单图文件上传、异步任务与 SVG 下载 | 同步一次请求直接返回 SVG、Base64 上传、批量打包入口 |
| 账户双并发、幂等、查询及取消确认 | Webhook、SSE 推送、客户端指定节点 |
| 钱包/次数包预留、历史阶梯结算、用量查询 | 在线充值、包商品购买、自动退款、免费转换测试模式 |
| 固定处理参数和 SVG 输出 | 自定义颜色/背景/曲线参数、PDF/EPS/DXF/PNG 等输出格式 |
| 可下载 Node.js / Python 接入示例、OpenAPI JSON | 已发布的官方 SDK 包、独立 CLI 安装包 |
接口参数与服务开放状态以本平台为准,不能直接套用其他服务的鉴权方式、同步流程或处理参数。生产接入前先完成小规模验证。