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. JSON and GET lookups accept a per-request threshold; multipart uploads use the default.

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 computes a 64-bit byte-level fingerprint, served under the chromaprint algorithm id, and matches by Hamming distance.

How a lookup happens

Four steps from upload to ranked matches, all in one synchronous request.

  1. 01

    POST a transformed binary

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

  2. 02

    Server computes the pHash

    For images, a 2D-DCT pHash. For audio, a 64-bit byte-level fingerprint served under the chromaprint algorithm id.

  3. 03

    Index lookup over stored manifests

    The pHash is matched against stored manifests. Lookups match by Hamming distance over stored fingerprints.

  4. 04

    Ranked matches returned

    Response is a list of matches with similarity scores, manifest IDs, and the full manifests. Empty list means no match within the threshold.

Minimal request

cURL is enough. The TypeScript SDK wraps the same call with typed responses.

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

# => {
#   "matches": [
#     {
#       "manifestId": "01JS7Z...",
#       "similarity": 0.97,
#       "distance": 2,
#       "manifest": { ... }
#     }
#   ],
#   "query": { "fingerprint": "...", "algorithm": "phash-dct-64" },
#   "searchTimeMs": 12,
#   "c2pa": { ... }
# }

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.