API

L'API Certified Date

Scellez vos livrables, contrats et versions depuis vos propres outils. Vous n'envoyez que l'empreinte SHA-256 : vos documents ne quittent jamais votre infrastructure. Une route pour créer un dépôt, une pour le vérifier — intégration typique : une matinée.

Bac à sable — testez tout de suite, sans compte

Utilisez la clé publique de test ci-dessous : les dépôts créés sont réels techniquement (empreinte ancrée) mais marqués TEST, non facturés, hors quota et hors registre public. Leur certificat porte un filigrane « SPÉCIMEN ».

X-Api-Key: sk_test_demo

Authentification

Chaque requête de création porte l'en-tête « X-Api-Key ». La clé de production est délivrée avec l'offre Entreprise (accès et tarification selon vos volumes) ; la clé bac à sable est publique.

Demander une clé de production

Référence des routes

POST /api/deposits

Crée un dépôt à partir d’une empreinte SHA-256 (jamais du fichier).

sha256string, requisEmpreinte SHA-256 hexadécimale (64 caractères) du fichier ou du manifeste.
fileNamestring, requisNom affiché sur le certificat.
fileSizenumberTaille en octets.
titlestring ≤ 80Titre de l’œuvre, reporté sur le certificat.
descriptionstring ≤ 500Contexte de l’œuvre, reporté sur le certificat.
coauthors[{name, role?, email?, share?}]Co-auteurs déclarés par le déposant (déclaratif).
parentCodestringNuméro d’un dépôt existant pour rattacher cette version (propriétaire uniquement).
manifestJsonstringDépôt multi-fichiers : JSON {"v":1,"files":[{path,size,sha256}…]} dont sha256 est l’empreinte.
GET /api/deposits/{code}

Statut public d’un dépôt : ancrage, bloc, dates, empreinte.

GET /api/certificates/{code}

Certificat PDF (provisoire puis définitif, régénéré à chaque appel).

GET /api/ots/{code}

Preuve OpenTimestamps (.ots) — vérifiable avec les outils libres opentimestamps.org.

GET /api/tsr/{code}

Jeton d’horodatage RFC 3161 (.tsr) — vérifiable avec openssl ts.

Limites de débit

Par adresse IP : 20 créations de dépôt par heure, 240 lectures par heure. Besoin de plus ? C'est précisément ce que l'offre Entreprise ajuste.

Exemples complets

curl (bac à sable)

# 1. Empreinte du fichier (le fichier reste chez vous) HASH=$(sha256sum mon-oeuvre.png | cut -d' ' -f1) # 2. Création du dépôt curl -X POST https://www.certifieddate.com/api/deposits \ -H "Content-Type: application/json" \ -H "X-Api-Key: sk_test_demo" \ -d '{"sha256":"'$HASH'","fileName":"mon-oeuvre.png","title":"Ma création"}' # → {"ok":true,"code":"SEC-2026-XXXXXX","status":"anchoring"} # 3. Statut + dossier de preuve curl https://www.certifieddate.com/api/deposits/SEC-2026-XXXXXX curl -O https://www.certifieddate.com/api/certificates/SEC-2026-XXXXXX curl -O https://www.certifieddate.com/api/ots/SEC-2026-XXXXXX curl -O https://www.certifieddate.com/api/tsr/SEC-2026-XXXXXX

JavaScript (Node ou navigateur)

// L'empreinte est calculée localement — le fichier ne part jamais. const bytes = await file.arrayBuffer() const digest = await crypto.subtle.digest('SHA-256', bytes) const sha256 = [...new Uint8Array(digest)] .map(b => b.toString(16).padStart(2, '0')).join('') const res = await fetch('https://www.certifieddate.com/api/deposits', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Api-Key': 'sk_test_demo', }, body: JSON.stringify({ sha256, fileName: file.name, fileSize: file.size }), }) const { code, status } = await res.json() // → code: "SEC-2026-XXXXXX", status: "anchoring" (ancré sous quelques heures)

Vérification indépendante : le .ots se vérifie sur opentimestamps.org (ou « ots verify » en CLI), le .tsr avec « openssl ts -verify ». Aucune des deux vérifications ne dépend de nos serveurs.