A signed tree head only stops us rewriting history if you already hold an older one. So the same root is timestamped outside the platform, in two ways that fail differently. POST /transparency/anchors returns them all, each with its kind, status and raw proof.
Timestamping authorities (kind: rfc3161) sign "this digest existed at this time". Complete the moment they are issued, and under eIDAS a qualified one carries a legal presumption of accuracy. Save the proof bytes as a .tsr file:
openssl ts -reply -in token.tsr -text | head # what the authority asserted
openssl ts -verify -digest <root_hash-hex> \
-in token.tsr -CAfile authority-chain.pem
Several authorities in different jurisdictions are timestamped in parallel, because any single one could in principle be compromised or coerced. A forged time needs all of them to collude.
Bitcoin (kind: opentimestamps) needs no trusted party at all: the root is committed into the chain itself. Save the bytes as anchor.ots:
pip install opentimestamps-client
ots verify anchor.ots -d <root_hash-hex>
status: confirmed means the proof already carries its Bitcoin block attestation. status: pending means the block has not confirmed yet. Run ots upgrade anchor.ots to collect it yourself.