Журнал изменений
Изменения публичного API, сначала новые. Версия API указана в пути; несовместимые изменения, если они понадобятся, выйдут как /api/v2 — в ответах v1 могут появляться новые поля и коды, но существующие не исчезнут и не изменятся.
С API-ключами
Ещё не выпущеноВлито, но не выпущено: эти изменения выйдут, когда вместе с аккаунтами ecdsa.com появятся API-ключи. Вызовы без ключа останутся в точности такими, как сейчас.
- Изменено
Ключ в правильном формате, но неизвестный, отозванный или с истёкшим сроком действия отклоняется с ответом 401
unauthorizedи challenge в заголовке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 в минуту на бесплатном тарифе, 600 — на тарифе Pro. Тестовые ключи всегда работают на бесплатном тарифе.
Коды:rate_limited
- Изменено
Поле
authв индексе API сообщает, что ключи необязательны, что даёт ключ и каким операциям он нужен, а не «no API keys», как раньше.Операции:GET /v1
- Добавлено
Вебхуки:
/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содержит метку времени, идентификатор ключа и подпись, а открытые ключи опубликованы в виде JWKS по адресу/.well-known/ecdsa-webhook-keys.json; во время ротации ключей одновременно действуют два идентификатора ключа. Каждый SDK проверяет доставку функциейverifyWebhook(). - Добавлено
Новые коды для вебхуков:
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
Дата выпуска: 22 октября 2026 г.Ядро API перестроено на декларативных операциях, а сканирования домена теперь расходуют общий лимит на каждый проверяемый хост. Для существующих клиентов изменения только добавляют новое: любой запрос v1.0 получает тот же статус и то же тело плюс новые поля. Большинство этих изменений работает с 20 октября 2026 года; начиная с этого релиза индекс API сообщает версию 1.1.0.
- Добавлено
Настоящие сканирования домена расходуют лимиты, общие для всех клиентов: один хост — не чаще 6 раз за 10 минут, все сканирования вместе — не чаще 300 раз в минуту. На сканирование сверх лимита приходит ответ 429
rate_limitedс заголовкомRetry-After; ответы из часового кеша лимиты не расходуют.Коды:rate_limited
Операции:GET /v1/health/{domain}
- Добавлено
В теле ошибки появились поля
requestId(укажите его, когда сообщаете о проблеме) иdocs— ссылка на описание кодов ошибок. Поляcodeиmessageне изменились.Поля:
error.requestIderror.docs - Добавлено
Каждый ответ содержит заголовок
X-Request-Id. Чтобы сопоставлять запросы, передайте собственное значение (от 1 до 128 символов: буквы, цифры, точки, подчёркивания, двоеточия или дефисы) — API вернёт его обратно.Заголовки:
X-Request-Id - Изменено
На неизвестные пути API отвечает 404
not_found, а на неверные методы — 405method_not_allowedс заголовкомAllow; это JSON-объекты ошибок с CORS, а не HTML-страницы.Коды:not_foundmethod_not_allowed
Заголовки:
Allow - Исправлено
На JSON с глубиной вложенности больше 64 (с учётом JSON внутри строковых полей) API отвечает 400
invalid_jsonс JSON-объектом ошибки. Раньше такой запрос завершался ошибкой 500 не в формате JSON.Коды:invalid_json
- Добавлено
В ответах проверки состояния домена появилось поле
certificate: дата окончания срока действия конечного сертификата, сколько дней осталось, алгоритм и кривая ключа.Поля:
certificateОперации:GET /v1/health/{domain}
- Добавлено
Заголовок
AuthorizationилиX-API-Keyв неверном формате больше не игнорируется: запрос отклоняется с ответом 401unauthorized, и клиент, который собирался пройти аутентификацию, узнаёт об опечатке. Запросы с ключами в правильном формате до запуска API-ключей по-прежнему обслуживаются анонимно.Коды:unauthorized
- Добавлено
Операция, которая не укладывается в лимит времени в 10 секунд, возвращает 504
timeout.Коды:timeout
- Изменено
Браузеры могут отправлять заголовки
Authorization,X-API-Key,X-Request-IdиIdempotency-Keyв запросах с другого источника (cross-origin) и читать заголовокX-Request-Id. - Изменено
Документ OpenAPI генерируется из собственных схем API: для каждой операции указаны коды ошибок по статусам, примеры и области доступа, которые нужны API-ключу.
Операции:GET /v1/openapi.json
v1.0.0
Дата выпуска: 20 августа 2026 г.Бесплатный API для подписей становится общедоступным.
- Добавлено
Первый публичный релиз: перечисленные ниже операции и документ OpenAPI 3.1 — бесплатно, анонимно, CORS открыт, 60 запросов в минуту с одного IP.
Коды: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