Guide
Quickstart
Five minutes, one terminal. You need curl and a proof to verify.
1. Get a key
- Open
https://verify.tensorcash.boblabs.euand enter your email. Type the six-digit code from the email; that signs you in (no password). - On Keys, name the key and press Create key. A page opens with one button; press it and the key is created.
- Copy the key. It starts with
tvk_and is shown once. Back on Keys, press Refresh keys to see it listed.
Keep it in an environment variable rather than on the command line:
read -rs TVK && export TVK # paste the key, press Enter
A key can call every endpoint on these pages (share verification needs one extra scope, see Verifying shares). An account can hold five keys.
2. Verify a proof
The request body is a ValidationRequest FlatBuffer holding a
BlockValidation: the same bytes a TensorCash node sends to its verifier for
every block it validates (schema shared-utils/fb-schemas/validation.fbs in
the TensorCash repository). If you run a node or a pool you already have
them. Save one as request.bin and submit it for a Quick check:
curl -sS https://api.verify.tensorcash.boblabs.eu/v1/verify/quick/request/submit \
-H "Authorization: Bearer $TVK" \
-H "Content-Type: application/octet-stream" \
-H "X-Verify-Result-Contract: scoped/1" \
--data-binary @request.bin
A new request is accepted with 202 and tells you where to poll:
{
"status": "pending",
"state": "queued",
"final": false,
"hash_id": "6f1c…e2a9",
"verification_type": "quick",
"scope_key": "5b0d…c7e1",
"status_ref": "/v1/verify/result/5b0d…c7e1",
"retry_after_seconds": 5
}
If the service already knows the answer you get 200 with the result at once.
3. Read the answer
Wait retry_after_seconds, then poll status_ref:
curl -sS https://api.verify.tensorcash.boblabs.eu/v1/verify/result/5b0d…c7e1 \
-H "Authorization: Bearer $TVK"
202 means still running; poll again. 200 is the answer:
{"status": "Quick_OK", "verdict": "Quick_OK", "final": true, "hash_id": "6f1c…e2a9", "…": "…"}
Quick_OK means the proof passed the CPU checks; Quick_Fail means it did not.
Polling is free; it does not count against your submit limit.
Next: pools read Verifying shares; nodes and wallets read Verifying blocks. Every endpoint is in the API reference, every status in Statuses.
Updated 2026-10-07