Proofs

Create permanent proof from a local file fingerprint

POSThttps://backend.immut.io/api/v1/proofs

Required scope: documents:write

The file never leaves the caller's environment. Send field hash (64-char hex fingerprint of file bytes). Idempotent per hash and workspace: re-posting returns 200 with alreadyProven true. Paid organisations get permanent proofs. Default salted scheme returns proofNonce once: store it for verification. Scope documents:write.

Request body

Content type: application/json (required)

FieldTypeRequiredDescription
hashstringyes64-char hex fingerprint of the file (SHA-256 of file bytes)
workspacestringyesWorkspace id (GET /workspaces)
fileNamestringno
fileSizenumbernoBytes
mimeTypestringno
metadataobjectno

Responses

StatusMeaning
200Already proven. These exact bytes were proven before, so the original proof is returned unchanged.
201Created. Keep proofId, txHash and proofNonce: without the nonce a salted proof cannot be verified later.
400BadRequest
401Unauthorized
403Forbidden
429RateLimited
502Proof network error (code XRPL_ERROR). Safe to retry: the attempt is rolled back.

Response fields (200)

Returned inside data.

FieldDescription
proofIdid for status polling and certificates
txHashpermanent transaction reference used for public verification
verifyUrlpublic explorer link for the transaction (returned by API)
certPath/api/v1/certificates/{proofId}
ledgeropaque network label (mainnet | testnet)
ledgerIndexopaque index when available
timestampISO 8601
hashSchemesha256-plain-v1 | hmac-sha256-nonce-v3
proofCommitmentcommitment value in the public proof when the scheme is salted
proofNonceKEEP THIS for hash-only salted proofs: required to verify later. Also embedded in the certificate PDF.

Example

curl -X POST "https://backend.immut.io/api/v1/proofs" \
  -H "Authorization: Bearer $IMMUT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hash":"<hash>","workspace":"<workspace>","fileName":"<fileName>","fileSize":"<fileSize>","mimeType":"<mimeType>","metadata":"<metadata>"}'

Generated from the immut API contract, version 1.9.0. Machine-readable: this page as markdown · everything in one file · OpenAPI