変更履歴
公開 API の変更点を新しい順に掲載しています。API のバージョンはパスで示されます。互換性のない変更を行う場合は /api/v2 として提供します。v1 のレスポンスにフィールドやコードが追加されることはありますが、既存のものが削除・変更されることはありません。
API キーの導入
未リリースマージ済みですが、まだリリースされていません。これらの変更は、ecdsa.com のアカウント機能とともに API キーの提供が始まるときにリリースされます。キーなしの呼び出しは、現在とまったく同じままです。
- 変更
形式は正しいものの、不明、失効済み、または期限切れのキーは、匿名として処理されるのではなく、401
unauthorizedとWWW-Authenticateチャレンジで拒否されます。コード:unauthorized
ヘッダー:
WWW-Authenticate - 追加
403
forbidden_scope:キーは有効ですが、操作に必要なスコープがありません。不足しているスコープはメッセージに示されます。呼び出しは、レート制限やクォータを消費する前に拒否されます。コード:forbidden_scope
- 追加
429
quota_exceeded:キーのアカウントの日次または月次のクォータを使い切りました。Retry-Afterはクォータがリセットされるまでの時間を示します。SDK がこのエラーを再試行することはありません。コード:quota_exceeded
- 追加
キーを使った呼び出しへのレスポンスには、常に、最も早く上限に達するクォータの情報が含まれます。これらのヘッダーはブラウザーからも読み取れます。
ヘッダー:
X-Quota-LimitX-Quota-RemainingX-Quota-Reset - 変更
キーを使った呼び出しには、IP ごとではなくキーごとの制限が適用されます。無料プランは毎分 120 回、Pro プランは毎分 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 で公開されます。ローテーション中は 2 つの鍵 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 です。
- 追加
ドメインの実際のスキャンは、全クライアントで共有する枠を消費します。1 つのホストにつき 10 分あたり最大 6 回、全スキャンの合計で毎分最大 300 回です。枠を超えたスキャンには、429
rate_limitedとRetry-Afterが返されます。1 時間のキャッシュから返されるレスポンスは枠を消費しません。コード:rate_limited
- 追加
エラーボディに、
requestId(問題を報告するときに添えてください)と、エラーコードへのリンクであるdocsが追加されました。codeとmessageは変わりません。フィールド:
error.requestIderror.docs - 追加
すべてのレスポンスに
X-Request-Idが含まれます。リクエストを照合するために独自の値(英字、数字、ドット、アンダースコア、コロン、ハイフンで 1〜128 文字)を送信すると、その値がそのまま返されます。ヘッダー:
X-Request-Id - 変更
不明なパスには 404
not_found、誤ったメソッドにはAllowヘッダー付きの 405method_not_allowedが返されます。どちらも HTML ページではなく、CORS に対応した JSON エンベロープです。コード:not_foundmethod_not_allowed
ヘッダー:
Allow - 修正
ネストが 64 階層を超える JSON(文字列フィールド内の JSON も含む)には、JSON エンベロープで 400
invalid_jsonが返されます。以前は JSON ではない 500 エラーになっていました。コード:invalid_json
- 追加
ドメインのヘルスチェックのレスポンスに
certificateが追加されました。リーフ証明書の有効期限、残り日数、鍵のアルゴリズムと曲線を示します。フィールド:
certificate - 追加
形式が正しくない
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 自体のスキーマから生成されます。各操作には、ステータスごとのエラーコード、例、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
ヘッダー:
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