更新日志
公开 API 的变更,按时间倒序排列。API 的版本号体现在路径中;如有不兼容的变更,将以 /api/v2 发布——v1 的响应可能会新增字段和错误码,但不会删除或修改已有的字段和错误码。
随 API 密钥推出
尚未发布已合并,尚未发布:这些变更将在 API 密钥随 ecdsa.com 账号一同推出时上线。不带密钥的调用将完全保持现状。
- 变更
格式正确但未知、已吊销或已过期的密钥会被拒绝,返回 401
unauthorized和WWW-Authenticate质询,而不再按匿名调用处理。错误码:unauthorized
HTTP 头:
WWW-Authenticate - 新增
403
forbidden_scope:密钥有效,但缺少操作所需的范围;错误消息会指出缺少的范围。调用会在消耗任何速率限制额度或配额之前被拒绝。错误码:forbidden_scope
- 新增
429
quota_exceeded:密钥所属账号的每日或每月配额已用完。Retry-After给出的等待时间持续到配额重置为止;SDK 从不重试这个错误。错误码:quota_exceeded
- 新增
对携带密钥的调用,每个响应都会在响应头中给出最先耗尽的那项配额;浏览器也可以读取这些响应头。
HTTP 头:
X-Quota-LimitX-Quota-RemainingX-Quota-Reset - 变更
携带密钥的调用改为按密钥而不是按 IP 限制:免费版每分钟 120 次,专业版每分钟 600 次。测试密钥始终使用免费版的限额。
错误码:rate_limited
- 变更
API 索引中的
auth字段不再写“no API keys”,而是说明密钥是可选的、使用密钥会带来哪些变化,以及哪些操作需要密钥。操作:GET /v1
- 新增
Webhook:
/api/v1/webhooks用于列出(GET)和创建(POST)密钥所属账号的端点,/api/v1/webhooks/delete用于删除端点,/api/v1/webhooks/test用于发送测试事件。这些操作需要具有webhooks范围的密钥,并且只通过 REST 提供——不作为 MCP 工具提供,SDK 中也没有。操作:GET /v1/webhooksPOST /v1/webhooksPOST /v1/webhooks/deletePOST /v1/webhooks/test
- 新增
每次投递都使用 ECDSA P-256 签名:
ECDSA-Signature携带时间戳、密钥 ID 和签名,公钥是/.well-known/ecdsa-webhook-keys.json上的 JWKS——轮换期间两个密钥 ID 会同时有效。每个 SDK 都用verifyWebhook()验证投递。 - 新增
Webhook 新增的错误码:
webhook_url_refused(400)、webhook_limit_reached(403)、webhook_not_found(404)和webhooks_unavailable(503)。错误码:webhook_url_refusedwebhook_limit_reachedwebhook_not_foundwebhooks_unavailable
v1.1.0
发布于2026年10月22日API 核心改为基于声明式操作重建,对域名的扫描现在按被检测的主机共享额度。对现有客户端而言只有新增:每个 v1.0 请求都会得到相同的状态码和相同的响应体,外加新字段。这些变更大多自 2026-10-20 起已经上线;从这个版本开始,API 索引报告的版本号为 1.1.0。
- 新增
对域名的实际扫描会消耗所有客户端共享的额度:同一主机每 10 分钟最多 6 次,所有扫描合计每分钟最多 300 次。超出额度的扫描会收到 429
rate_limited和Retry-After;来自一小时缓存的响应不消耗额度。错误码:rate_limited
- 新增
错误响应体新增
requestId——报告问题时请附上它——以及指向错误码说明的链接docs。code和message保持不变。字段:
error.requestIderror.docs - 新增
每个响应都带有
X-Request-Id。你也可以自己发送这个请求头(1~128 个字母、数字、点、下划线、冒号或连字符)来关联请求:服务器会原样返回。HTTP 头:
X-Request-Id - 变更
未知路径返回 404
not_found,错误的方法返回 405method_not_allowed并附带Allow响应头——返回的是带 CORS 的 JSON 信封,而不是 HTML 页面。错误码:not_foundmethod_not_allowed
HTTP 头:
Allow - 修复
嵌套超过 64 层的 JSON(包括字符串字段中的 JSON)会收到 JSON 信封格式的 400
invalid_json。以前这种情况会返回非 JSON 格式的 500 错误。错误码:invalid_json
- 新增
- 新增
格式错误的
Authorization或X-API-Key请求头会被拒绝并返回 401unauthorized,而不是被忽略,这样本想进行身份验证的客户端就能发现拼写错误。在 API 密钥推出之前,格式正确的密钥仍按匿名调用处理。错误码:unauthorized
- 新增
未能在 10 秒时限内完成的操作会返回 504
timeout。错误码:timeout
- 变更
浏览器可以跨源发送
Authorization、X-API-Key、X-Request-Id和Idempotency-Key,并读取X-Request-Id。 - 变更
OpenAPI 文档由 API 自身的 schema 生成:每个操作都按状态码列出其错误码,并列出示例和 API 密钥所需的范围。
v1.0.0
发布于2026年8月20日免费签名 API 正式公开。
- 新增
首次公开发布:下列操作和 OpenAPI 3.1 文档——免费、匿名、开放 CORS,每个 IP 每分钟 60 次请求。
错误码:invalid_jsonmissing_fieldinvalid_inputprivate_key_rejectedunsupported_algorithminvalid_domainscan_dns_errorscan_private_addresspayload_too_largerate_limitedinternal_errorscan_unreachablescan_tls_errorscan_timeout
HTTP 头:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-ResetRetry-After操作:GET /v1POST /v1/verifyPOST /v1/convertPOST /v1/jwt/decodePOST /v1/jwt/verifyPOST /v1/cert/decodeGET /v1/health/{domain}GET /v1/openapi.json