Two endpoints. Plain JSON.
The public API is small on purpose. Seal a manifest, look up a root. Both are protected by Cloudflare Turnstile and documented below. All responses are JSON, all hashes are lowercase hex.
Base URL
https://bitseal.orygn.tech/api/sealAccepts a precomputed manifest (root hash, leaves, metadata, Turnstile token) and returns the signed seal plus a PDF certificate. The server re-derives the root from the supplied leaves before signing, so a client cannot pin a signature to a root that does not match its own leaves.
curl -X POST https://bitseal.orygn.tech/api/seal \
-H "Content-Type: application/json" \
-d '{
"root_hash": "6d56f7...",
"merkle_tree": ["a1b2c3...", "d4e5f6..."],
"seal_mode": "merkle-blake3-64k-v1",
"chunk_size_bytes": 65536,
"blake3_hash": "...",
"sha3_512_hash": "...",
"entropy": 7.91,
"filename": "contract.pdf",
"size_bytes": 130000,
"mime_type": "application/pdf",
"token": "<turnstile-token>"
}'/api/verifyLooks up a root on the Neon Postgres ledger. Returns the three-axis verdict: ledger presence, Ed25519 signature validity, and Merkle tree consistency. Each axis is reported on its own field.
curl "https://bitseal.orygn.tech/api/verify?root=6d56f7...&token=<turnstile>"Programmatic access (SDK, scripts)
The Turnstile human-check exists to shield the endpoints from drive-by web abuse. It is not a good fit for scripts. Any caller that sends a non-empty X-API-Client header may omit the token field. Rate limits (below) apply identically to web and SDK traffic, so the header is not a privilege upgrade, only an ergonomic bypass.
The reference Python SDK sends X-API-Client: BitSeal-SDK/<version> python/<ver> on every request. Third-party integrations should set their own identifier, e.g. X-API-Client: acme-sealer/1.2.
Rate limits
Limits are enforced per client IP over a sliding window. The server returns 429 with a Retry-After header and a retry_after_seconds field in the JSON body.
Need higher throughput for an integration, a research audit, or a production batch? Email [email protected] and describe the use case.
Offline verification
The cryptography here is standard and published. Given the manifest, the public key at /.well-known/bitseal-authority.json, and a BLAKE3 plus Ed25519 library, anyone can verify a seal with no network call to BitSeal. The Python SDK does this, and its source is the normative reference.