POST /api/v1/verifyots
Verify an OpenTimestamps proof file (.ots) against a SHA-256 hash. Works with any .ots — our own or a third party's. Proof bytes are parsed in-memory and checked against the Bitcoin blockchain; nothing is stored.
Headers
| Header | Required | Description |
|---|---|---|
X-API-Key | Yes | Your API key |
Content-Type | Yes | multipart/form-data |
Form Fields
| Field | Type | Description |
|---|---|---|
ots | file | The raw .ots proof file |
hash | string | SHA-256 hex of the original file (64 chars) |
Response
{
"verified": "VERIFIED",
"hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"blockTime": 1754500000,
"blockHeight": 874123
}
verified values| Value | Meaning |
|---|---|
VERIFIED | OTS proof is valid and confirmed on Bitcoin. blockTime/blockHeight populated. |
PARTIAL | OTS parsed successfully but Bitcoin has not yet confirmed the anchor. Try again in ~1–6 hours. |
Error Codes
| Status | Condition |
|---|---|
| 400 | Missing/invalid hash, missing ots file, or the file is not a valid OTS proof |
| 401 | Missing or invalid API key |
| 429 | Rate limit exceeded |
cURL Example
curl -X POST https://proofintegrity.net/api/v1/verifyots \
-H "X-API-Key: your-api-key-here" \
-F "[email protected]" \
-F "hash=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"