htpbe — Python client
Python client for the HTPBE API — structural PDF tamper & forgery detection. It analyses a PDF's byte-level structure (xref tables, incremental updates, signatures, object streams) to detect whether a document was modified after creation. No original copy needed.
Not a KYC/identity platform — it's the structural PDF-forensics layer. Full API reference: https://htpbe.tech/api
Install
pip install htpbe
Quickstart
from htpbe import Client
client = Client(api_key="htpbe_live_...") # get a key at https://htpbe.tech/api
result = client.analyze_and_wait("https://example.com/invoice.pdf")
print(result["status"]) # "intact" | "modified" | "inconclusive"
print(result["modification_markers"]) # e.g. ["HTPBE_POST_SIGNATURE_EDIT"]
The API works on any publicly accessible PDF URL (≤ 10 MB), downloadable without authentication.
Two-step flow
analyze_and_wait is shorthand for the underlying two calls:
check_id = client.analyze("https://example.com/contract.pdf")
result = client.get_result(check_id)
List your checks
page = client.list_checks(limit=50)
for check in page["data"]:
print(check["id"], check["status"])
print(page["total"]) # total number of checks
Error handling
from htpbe import HtpbeAPIError
try:
result = client.analyze_and_wait(url)
except HtpbeAPIError as exc:
print(exc.status, exc.code, exc.message) # e.g. 402 payment_required ...
Testing without spending credits
Test keys (htpbe_test_...) return deterministic synthetic results and only accept the documented test URLs — see the API docs. Live keys (htpbe_live_...) accept any public PDF URL and draw from your credit balance.
What you can detect
The verdict is intact, modified, or inconclusive, with named modification_markers. Common use cases:
Links
- API reference & keys: https://htpbe.tech/api
- Free web checker: https://htpbe.tech
- How it works: https://htpbe.tech/how
License
MIT
Metadata
Release files for htpbe 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| htpbe-0.1.0.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| htpbe-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.8 kB
Release files / htpbe-0.1.0.tar.gz
| Download URL | htpbe-0.1.0.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
72771ac58cb6e051261fd612697bcf5047187e919b3eec79e0acbb041dda939f
|
|
BLAKE2b-256 checksum How to use checksums |
bf1418d21c19f752a36064e1a42c5999c5e7a25bae9ad566aa52f656dc701e7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency logRelease files / htpbe-0.1.0-py3-none-any.whl
| Download URL | htpbe-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40975cd8a59bb48bfda4c70d5622dae14e27ae867e551cf4ef95d4ce997c10c2
|
|
BLAKE2b-256 checksum How to use checksums |
1581913da4be897d6d6cea6f371adfa962c3b44c9de2065063de43c6f06ed06c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 27, 2026.
Transparency log