Zeitstempel-API — Schnellstart
Ein HTTP-Aufruf. Kein Schlüssel, kein Konto, kein Anmeldeformular. Deine Datei bleibt, wo sie ist — unterwegs ist nur ihr SHA-256.
# die aktuelle universelle Zeit curl https://beattime.live/api/now/ # eine Datei stempeln: lokal hashen, nur den Hash senden sha256sum contract.pdf curl -X POST https://beattime.live/api/proof/stamp \ -H 'Content-Type: application/json' \ -d '{"digest":"<64 hex characters>"}'
Das ist die ganze Integration. Es gibt nichts zu registrieren, kein Token zu rotieren und kein Kontingent zu verhandeln — der Dienst ist kostenlos und bleibt es.
Was zurückkommt
Ein Stempel antwortet mit dem Eintrag, wie er gerade jetzt aussieht. Später liefert derselbe Hash mehr: eine Signatur, dann externe Verankerungen.
- digest
- Der SHA-256, den du gesendet hast, in Kleinbuchstaben. Es ist das Einzige, was wir je von deiner Datei sehen.
- beat
- Der Zeitpunkt in .beat-Zeit — eine universelle Angabe, ohne Zeitzone.
- utc
- Derselbe Zeitpunkt in UTC, auf die Mikrosekunde genau.
- seq
- Position im Append-only-Protokoll. Nummern wiederholen sich nie und verschieben sich nie.
- week
- Die ISO-Woche, zu deren Merkle-Baum dieser Stempel gehört.
- chain_hash
- Verknüpft diesen Eintrag mit dem vorherigen — ein entfernter Eintrag würde die Kette sichtbar brechen.
- week_root
- Die Merkle-Wurzel der Woche. Bis die Woche schließt, ist sie vorläufig und bewegt sich noch.
- inclusion_proof
- Geschwister-Hashes mit ihrer Seite (L oder R). Damit rechnest du die Wurzel selbst nach — genau das macht den Nachweis von uns unabhängig.
- root_signature
- Ed25519-Signatur über die eingefrorene Wochenwurzel. Erscheint, sobald die Woche versiegelt ist.
- ots_status
- Stand der Bitcoin-Verankerung: pending, solange sie auf Bestätigung wartet, dann bitcoin mit der Blockhöhe.
- anchors
- Bankreferenzen, gegen die die Wochenwurzel festgehalten wurde — eine Verankerung, die von keiner Blockchain abhängt.
„Woche noch offen“ ist die normale Antwort, kein Fehler.
Ein frischer Stempel hat noch keine Signatur und keine Verankerung, weil die Woche, zu der er gehört, noch nicht versiegelt ist. Das geschieht am Ende der ISO-Woche; die Bitcoin-Bestätigung folgt etwa einen Tag später. Frag später mit demselben Hash noch einmal — dann sind die fehlenden Felder da. An der aufgezeichneten Zeit ändert sich dabei nichts.
Dieselbe Datei zweimal stempeln
Der erste Stempel gewinnt, immer. Sende denselben Hash erneut und du bekommst den ursprünglichen Eintrag zurück — gleiche Zeit, gleiche Folgenummer — mit Status 200 statt 201. Wiederholungen sind damit sicher: eine verlorene Antwort oder ein nervöser Client kann deinen Zeitstempel nicht nach vorn schieben.
201 Created → zum ersten Mal gestempelt 200 OK → bereits gestempelt; der ursprüngliche Zeitstempel wird zurückgegeben 400 → der Hash besteht nicht aus 64 Hex-Zeichen 429 → Limit erreicht; warten und erneut versuchen
Limits und CORS
Die Limits gelten pro IP-Adresse und sorgen dafür, dass ein Client die anderen nicht verdrängt. Für alles, was eine normale Integration tut, sind sie bewusst großzügig.
| Endpunkt | Limit |
|---|---|
| POST /api/proof/stamp | 20 / min |
| GET /api/proof/verify | 120 / min |
| GET /api/proof/cert/<digest> | 10 / min |
| der Rest (Zeit, Umrechnung, Sync) | 300 / min |
Jeder Endpunkt antwortet mit Access-Control-Allow-Origin: *, du kannst ihn also direkt aus dem Browser aufrufen. Anfragen über Tor bekommen höhere Limits, weil hinter einem Exit-Knoten viele Menschen stehen.
Fertige Clients
Einzelne Dateien, keine Abhängigkeiten, Apache-2.0: Python, PHP, JavaScript, C# und C++17. Kopiere eine in dein Projekt oder lies die vollständige Referenz.
Was das nicht ist
Gut zu wissen, bevor du darauf aufbaust — und wir sagen es lieber hier, als dass du es im Review entdeckst:
- Kein qualifizierter Vertrauensdienst nach eIDAS: Ein Stempel trägt daher keine Rechtsvermutung nach Artikel 41. Er ist ein Beweismittel, kein Urteil.
- Es beweist Existenz und Unversehrtheit, nicht Urheberschaft. Ein Zeitstempel sagt: Diese Bytefolge existierte bis dahin und hat sich nicht geändert — nicht, wer sie erstellt hat oder ob sie wahr ist.
- Kein RFC 3161. Wir sprechen dieses Protokoll derzeit nicht, deshalb reden Werkzeuge, die es erwarten —
openssl ts,signtool— nicht mit dieser API. - Einträge sind öffentlich und dauerhaft. Ein Hash lässt sich nicht zurückziehen; stemple also nichts, was du nicht aufgelistet sehen willst.
Die Algorithmen stehen in der Spezifikation, und der Desktop-Client, der all das nachrechnet, ist quelloffen.