Skip to content

SOFT-BINDING LOOKUP

Find the manifest after re-encodes and crops.

Perceptual-hash resolution keeps provenance reachable through platform transformations. Send a binary that has been re-encoded, cropped, or watermarked; receive the matching manifest. Endpoint: POST /v1/resolve.

What the resolver does

Four properties of every resolve call. None of them require additional configuration; all of them are tunable when you need them to be.

2D-DCT perceptual hashing

Resolution is keyed on a 64-bit pHash computed from the 2D discrete cosine transform of the input. The hash survives JPEG re-encoding, color shifts, mild crops, watermarks, and platform-side compression.

Configurable Hamming threshold

Default match window is 10 bits of Hamming distance on the 64-bit hash. Adjust per request when the source is noisier (screenshots of screenshots, heavy re-encodes), or tighten it for high-precision matching.

Ranked candidate response

The API returns up to N candidates, ordered by similarity, each with a confidence score and the underlying manifest. Your client picks the threshold for what counts as a match.

Audio fingerprinting

For audio assets, Hashproof falls back to Chromaprint fingerprints on three-second windows. Works on podcasts, broadcasts, and licensed music tracks even after format conversion.

How a lookup happens

The full path from upload to ranked candidates runs in well under 200 ms for typical inputs against tenants with millions of signed manifests.

  1. 01

    POST a transformed binary

    Send the asset (image, audio, or video frame) to /v1/resolve. No assertions or signatures required; the resolver only needs the bytes.

  2. 02

    Server computes the pHash

    For images and video frames, a 2D-DCT pHash. For audio, a sliding Chromaprint window. Both are computed in under 50 ms for typical inputs.

  3. 03

    Index lookup over your tenant

    The pHash is matched against every signed manifest in your tenant scope. Bit-Hamming index keeps lookup latency under 100 ms even at corpus sizes in the millions.

  4. 04

    Ranked candidates returned

    Response is a list of candidates with similarity scores, manifest IDs, and signed asset URLs. Empty list means no match within your threshold.

Minimal request

cURL is enough. The TypeScript SDK wraps this with retries and streaming uploads.

curl -X POST https://api.hashproof.ai/v1/resolve \
  -H "x-api-key: $HASHPROOF_API_KEY" \
  -F "file=@/path/to/transformed.jpg" \
  -F "threshold=10"

# => {
#   "candidates": [
#     {
#       "manifestId": "01JS7Z...",
#       "similarity": 0.97,
#       "hammingDistance": 2,
#       "signedAssetUrl": "https://..."
#     },
#     ...
#   ],
#   "totalCandidates": 3
# }

Related capabilities

Resolution is the bridge between signing and verification. The full triple is what makes provenance load-bearing.

Resolve your first manifest in 60 seconds.

Free tier includes 10,000 verifications per month, with resolution metered against the same quota.