API d’horodatage — démarrage rapide
Un appel HTTP. Sans clé, sans compte, sans formulaire d’inscription. Votre fichier reste où il est — seul son SHA-256 voyage.
# l’heure universelle actuelle curl https://beattime.live/api/now/ # horodater un fichier : calculez le hachage en local, n’envoyez que lui sha256sum contract.pdf curl -X POST https://beattime.live/api/proof/stamp \ -H 'Content-Type: application/json' \ -d '{"digest":"<64 hex characters>"}'
Voilà toute l’intégration. Rien à enregistrer, aucun jeton à faire tourner, aucun quota à négocier — le service est gratuit et le restera.
Ce que vous recevez
Un horodatage renvoie l’enregistrement tel qu’il est à cet instant. Plus tard, le même hachage en renvoie davantage : une signature, puis des ancrages externes.
- digest
- Le SHA-256 que vous avez envoyé, en minuscules. C’est la seule chose que nous voyons de votre fichier.
- beat
- Le moment en temps .beat — une lecture universelle, sans fuseau horaire.
- utc
- Le même instant en UTC, à la microseconde près.
- seq
- Position dans le journal en ajout seul. Les numéros ne se répètent jamais et ne bougent pas.
- week
- La semaine ISO dont l’arbre de Merkle contient cet horodatage.
- chain_hash
- Relie cette entrée à la précédente : supprimer une entrée briserait visiblement la chaîne.
- week_root
- La racine de Merkle de la semaine. Tant que la semaine n’est pas close, elle est provisoire et bouge encore.
- inclusion_proof
- Les hachages frères avec leur côté (L ou R). Ils vous permettent de recalculer la racine vous-même — c’est précisément ce qui rend la preuve indépendante de nous.
- root_signature
- Signature Ed25519 sur la racine hebdomadaire figée. Elle apparaît dès que la semaine est scellée.
- ots_status
- État de l’ancrage Bitcoin : pending tant qu’il attend confirmation, puis bitcoin avec la hauteur de bloc.
- anchors
- Références bancaires auxquelles la racine hebdomadaire a été adossée — un ancrage qui ne dépend d’aucune blockchain.
« Semaine encore ouverte » est la réponse normale, pas une erreur.
Un horodatage récent n’a encore ni signature ni ancrage, car la semaine à laquelle il appartient n’est pas scellée. Cela se produit à la fin de la semaine ISO ; l’attestation Bitcoin suit environ un jour plus tard. Redemandez plus tard avec le même hachage : les champs manquants seront là. L’heure enregistrée, elle, ne change pas.
Horodater deux fois le même fichier
Le premier horodatage l’emporte, toujours. Renvoyez le même hachage et vous récupérez l’enregistrement d’origine — même heure, même numéro de séquence — avec le statut 200 au lieu de 201. Les reprises sont donc sûres : une réponse perdue ou un client nerveux ne peuvent pas décaler votre horodatage.
201 Created → horodaté pour la première fois 200 OK → déjà horodaté ; l’horodatage d’origine est renvoyé 400 → le hachage ne fait pas 64 caractères hexadécimaux 429 → limite atteinte ; patientez puis réessayez
Limites et CORS
Les limites s’appliquent par adresse IP et servent à empêcher qu’un client n’évince les autres. Pour tout ce que fait une intégration normale, elles sont volontairement larges.
| Point de terminaison | Limite |
|---|---|
| POST /api/proof/stamp | 20 / min |
| GET /api/proof/verify | 120 / min |
| GET /api/proof/cert/<digest> | 10 / min |
| le reste (heure, conversion, synchronisation) | 300 / min |
Chaque point de terminaison répond avec Access-Control-Allow-Origin: * : vous pouvez donc l’appeler directement depuis le navigateur. Les requêtes via Tor bénéficient de limites plus élevées, car un nœud de sortie porte le trafic de nombreuses personnes.
Clients prêts à l’emploi
Fichiers uniques, sans dépendances, Apache-2.0 : Python, PHP, JavaScript, C# et C++17. Copiez-en un dans votre projet ou lisez la référence complète.
Obtenir un client Référence OpenAPI
Ce que ce n’est pas
À savoir avant de bâtir dessus — nous préférons le dire ici plutôt que vous le découvriez en revue :
- Ce n’est pas un service de confiance qualifié au sens d’eIDAS : un horodatage ne bénéficie donc pas de la présomption de l’article 41. C’est un élément de preuve, pas un verdict.
- Elle prouve l’existence et l’intégrité, pas la paternité. Un horodatage dit que cette suite d’octets existait à cette date et n’a pas changé — pas qui l’a créée ni si elle dit vrai.
- Ce n’est pas RFC 3161. Nous ne parlons pas ce protocole aujourd’hui : les outils qui l’attendent —
openssl ts,signtool— ne dialogueront pas avec cette API. - Les entrées sont publiques et définitives. Un hachage ne peut pas être retiré : n’horodatez pas ce que vous ne voudriez pas voir listé.
Les algorithmes sont consignés dans la spécification, et le client de bureau qui recalcule tout cela est open source.