Zum Inhalt springen
ecdsa.com

Changelog

Änderungen an der öffentlichen API, die neuesten zuerst. Die API ist im Pfad versioniert; inkompatible Änderungen kämen als /api/v2 – Antworten von v1 können neue Felder und Codes erhalten, verlieren oder ändern aber keine bestehenden.

  1. Mit API-Schlüsseln

    Noch nicht veröffentlicht

    Zusammengeführt, nicht veröffentlicht: Diese Änderungen erscheinen, wenn API-Schlüssel zusammen mit den Konten auf ecdsa.com starten. Aufrufe ohne Schlüssel bleiben genau so, wie sie sind.

    • Geändert

      Ein korrekt formatierter Schlüssel, der unbekannt, widerrufen oder abgelaufen ist, wird mit 401 unauthorized und einer Challenge im Header WWW-Authenticate abgewiesen, statt anonym beantwortet zu werden.

      Codes:unauthorized

      Header:WWW-Authenticate

    • Hinzugefügt

      403 forbidden_scope: Der Schlüssel ist gültig, aber ihm fehlt ein Scope, den die Operation braucht; die Meldung nennt ihn. Der Aufruf wird abgewiesen, bevor etwas von Rate Limit oder Kontingent verbraucht wird.

      Codes:forbidden_scope

    • Hinzugefügt

      429 quota_exceeded: Ein Tages- oder Monatskontingent des Kontos, zu dem der Schlüssel gehört, ist aufgebraucht. Retry-After reicht bis zum Neubeginn des Kontingents; die SDKs wiederholen solche Aufrufe nie.

      Codes:quota_exceeded

    • Hinzugefügt

      Jede Antwort auf einen Aufruf mit Schlüssel enthält das Kontingent, das zuerst zur Neige geht; auch Browser dürfen diese Header lesen.

      Header:X-Quota-LimitX-Quota-RemainingX-Quota-Reset

    • Hinzugefügt

      503 service_unavailable: Schlüssel lassen sich gerade nicht prüfen. Ein Aufruf mit Schlüssel wird nie anonym beantwortet – versuche es gleich noch einmal.

      Codes:service_unavailable

    • Geändert

      Aufrufe mit Schlüssel werden pro Schlüssel statt pro IP begrenzt: 120 pro Minute im Free-Tarif, 600 im Pro-Tarif. Testschlüssel bekommen immer den Free-Tarif.

      Codes:rate_limited

    • Geändert

      Das Feld auth im API-Index sagt, dass Schlüssel optional sind, was ein Schlüssel ändert und welche Operationen einen brauchen – statt „no API keys“.

      Operationen:GET /v1

    • Hinzugefügt

      Webhooks: /api/v1/webhooks listet (GET) und erstellt (POST) die Endpunkte des Kontos, zu dem der Schlüssel gehört, /api/v1/webhooks/delete löscht einen und /api/v1/webhooks/test sendet ein Testereignis. Diese Operationen brauchen einen Schlüssel mit dem Scope webhooks und sind nur über REST verfügbar – nicht als MCP-Tools und nicht in den SDKs.

      Operationen:GET /v1/webhooksPOST /v1/webhooksPOST /v1/webhooks/deletePOST /v1/webhooks/test

    • Hinzugefügt

      Zustellungen werden mit ECDSA P-256 signiert: ECDSA-Signature enthält den Zeitstempel, die Schlüssel-ID und die Signatur; die öffentlichen Schlüssel sind das JWKS unter /.well-known/ecdsa-webhook-keys.json – während einer Rotation überlappen sich zwei Schlüssel-IDs. Jedes SDK prüft eine Zustellung mit verifyWebhook().

    • Hinzugefügt

      Neue Codes für Webhooks: webhook_url_refused (400), webhook_limit_reached (403), webhook_not_found (404) und webhooks_unavailable (503).

      Codes:webhook_url_refusedwebhook_limit_reachedwebhook_not_foundwebhooks_unavailable

  2. v1.1.0

    Veröffentlicht am 22. Oktober 2026

    Der Kern der API wurde auf deklarative Operationen umgebaut, und Scans einer Domain teilen sich jetzt ein Budget pro geprüftem Host. Für bestehende Clients rein additiv: Jede v1.0-Anfrage bekommt denselben Status und denselben Body, dazu die neuen Felder. Die meisten dieser Änderungen sind seit dem 20. Oktober 2026 live; der Index meldet ab diesem Release die Version 1.1.0.

    • Hinzugefügt

      Echte Scans einer Domain zehren von Budgets, die alle Clients gemeinsam nutzen: ein Host höchstens 6-mal in 10 Minuten, alle Scans zusammen höchstens 300-mal pro Minute. Ein Scan über ein Budget hinaus wird mit 429 rate_limited und Retry-After beantwortet; Antworten aus dem einstündigen Cache verbrauchen nichts.

      Codes:rate_limited

      Operationen:GET /v1/health/{domain}

    • Hinzugefügt

      Fehler-Bodys erhalten requestId – gib den Wert an, wenn du ein Problem meldest – und docs, einen Link zu den Fehlercodes. code und message bleiben unverändert.

      Felder:error.requestIderror.docs

    • Hinzugefügt

      Jede Antwort enthält X-Request-Id. Sende eine eigene Request-ID (1–128 Buchstaben, Ziffern, Punkte, Unterstriche, Doppelpunkte oder Bindestriche), um Anfragen zuzuordnen: Die API gibt sie unverändert zurück.

      Header:X-Request-Id

    • Geändert

      Unbekannte Pfade antworten mit 404 not_found, falsche Methoden mit 405 method_not_allowed und einem Header Allow – als JSON-Fehlerobjekte mit CORS statt als HTML-Seiten.

      Codes:not_foundmethod_not_allowed

      Header:Allow

    • Behoben

      JSON, das mehr als 64 Ebenen tief verschachtelt ist – JSON in String-Feldern eingeschlossen –, wird mit 400 invalid_json im JSON-Fehlerobjekt beantwortet. Früher endete das mit einer 500-Antwort, die kein JSON war.

      Codes:invalid_json

    • Hinzugefügt

      Antworten des Domain-Checks erhalten certificate: Ablaufdatum, verbleibende Tage, Schlüsselalgorithmus und Kurve des Leaf-Zertifikats.

      Felder:certificate

      Operationen:GET /v1/health/{domain}

    • Hinzugefügt

      Ein fehlerhaft formatierter Header Authorization oder X-API-Key wird mit 401 unauthorized abgewiesen statt ignoriert – so erfährt ein Client, der sich authentifizieren wollte, von dem Tippfehler. Aufrufe mit korrekt formatierten Schlüsseln werden bis zum Start der API-Schlüssel weiterhin anonym beantwortet.

      Codes:unauthorized

    • Hinzugefügt

      Eine Operation, die nicht innerhalb ihres Zeitbudgets von 10 Sekunden fertig wird, antwortet mit 504 timeout.

      Codes:timeout

    • Geändert

      Browser dürfen Authorization, X-API-Key, X-Request-Id und Idempotency-Key in Cross-Origin-Anfragen senden und X-Request-Id lesen.

    • Geändert

      Das OpenAPI-Dokument wird aus den Schemas der API selbst erzeugt: Jede Operation listet ihre Fehlercodes nach Status, ihre Beispiele und die Scopes auf, die ein API-Schlüssel braucht.

      Operationen:GET /v1/openapi.json

  3. v1.0.0

    Veröffentlicht am 20. August 2026

    Die kostenlose Signatur-API startet öffentlich.