BitcoBoost Proof API
Register the SHA-256 fingerprint of any file on the BitcoBoost (BCBO) blockchain and check it later. Your program sends only the fingerprint: the file itself is never sent. Free, no account and no key needed. Web page: bitcoboost.com/proof.
In short
| Call | What it does |
|---|---|
POST https://bitcoboost.com/api/proof | Registers a fingerprint (or returns the existing registration). |
GET https://bitcoboost.com/api/proof/<fingerprint> | Tells whether a fingerprint is registered, and in which block. |
GET https://bitcoboost.com/proof/statistiche.json | Public counters (updated every 5 minutes). |
The fingerprint is the SHA-256 of the file: 64 hexadecimal characters (upper or lower case; it is stored in lower case).
Answers are JSON. Field names are in Italian: impronta = fingerprint, stato = status,
altezza = block height, ora_blocco = block time, registrata = time of the request.
1. Compute the fingerprint
# Linux
sha256sum myfile.pdf
# macOS
shasum -a 256 myfile.pdf
# Windows (PowerShell)
(Get-FileHash myfile.pdf -Algorithm SHA256).Hash.ToLower()
2. Register it
curl -s -X POST https://bitcoboost.com/api/proof \
-H "Content-Type: application/json" \
-d '{"hash":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"}'
201 Created — sent to the chain
{"impronta": "e3b0…b855", "stato": "in_attesa", "txid": "9b7f…2ae5",
"explorer": "https://explorer.bitcoboost.com/tx/9b7f…2ae5"}
in_attesa means "waiting for the next block". A block arrives about every 10 minutes on average; after that the
status becomes confermata (confirmed).
200 OK — it was already registered
Same fields as the check below, plus "gia_registrata": true. A fingerprint is registered only once: the first date counts.
3. Check it
curl -s https://bitcoboost.com/api/proof/480fea7b2dd43da41b5e57ca5b9f35c233e63d57fe243b70f5a41625d0788317
200 OK
{"impronta": "480fea7b…8317", "stato": "confermata",
"txid": "9b7f570c…2ae5", "registrata": 1791896225,
"altezza": 24530, "ora_blocco": 1791896608,
"explorer": "https://explorer.bitcoboost.com/tx/9b7f570c…2ae5",
"dati_sulla_catena": "OP_RETURN 4242504601480fea7b…8317"}
Times are Unix timestamps (seconds, UTC). altezza and ora_blocco are null while the status is
in_attesa.
404 Not Found — never registered
{"impronta": "…", "stato": "non_registrata"}
A shareable certificate page for any fingerprint: https://bitcoboost.com/proof/#<fingerprint>
Errors and limits
| Code | errore | Meaning |
|---|---|---|
| 400 | impronta_non_valida | The fingerprint is not 64 hexadecimal characters. |
| 400 | richiesta_non_valida | The body is not valid JSON. |
| 413 | troppo_grande | The body is larger than 1,000 bytes (send only the fingerprint). |
| 429 | limite_giornaliero | More than 10 new registrations in 24 hours from the same internet address. Checks are not limited this way. |
| 503 | limite_totale_giornaliero | The free daily total of the service has been reached. Try again later. |
| 503 | registro_non_disponibile / catena_non_disponibile | Temporary problem on our side. Try again in a few minutes. |
Please keep your calls reasonable: requests are also rate-limited per second.
What is written on the chain
One transaction with an OP_RETURN output of 37 bytes: 42425046 ("BBPF") + 01 (version) + the
32 bytes of the SHA-256. The explorer labels these outputs "BITCOBOOST PROOF".
Independent check, without trusting us: compute the SHA-256 of the file, open the transaction on the explorer and find
4242504601 followed by the same fingerprint. The date is the date of the block that contains it.
Example: register every software release (GitHub Actions)
A step you can add to a release workflow. It registers the fingerprint of each file you publish; the 10-per-day limit applies.
- name: Register release files on BitcoBoost Proof
run: |
for f in dist/*; do
h=$(sha256sum "$f" | cut -d' ' -f1)
echo "$f $h"
curl -s -X POST https://bitcoboost.com/api/proof \
-H "Content-Type: application/json" -d "{\"hash\":\"$h\"}"
echo
done
