This JPEG has zero metadata.
The image on the left (resaved-1080.jpg) had all of its C2PA Content Credentials stripped when it was resized for web delivery.
The embedded badge.js script computes a short visual fingerprint and keypoints in your browser, queries relay.reconize.me/registry/v1/lookup, and displays the confirmed signer badge. Click the badge in the bottom-right corner of the photo to inspect the match.
1. Embeddable CMS Badge (badge.js)
Drop a single script tag into WordPress, Webflow, Ghost, Squarespace, Sanity, or any custom site. When a visitor views or clicks a badged image, video, or audio player, the widget computes the fingerprint locally in the browser and looks up the registered creator.
Option A: Badge specific images, audio, or video
Add data-reconize-badge to any <img>, <video>, <audio>, or <figure>. Add data-reconize-auto="true" to verify automatically as the element scrolls into view:
<script src="https://reconize.me/embed/badge.js" defer></script>
<img src="/uploads/portfolio-hero.webp"
alt="Editorial portrait"
data-reconize-badge
data-reconize-auto="true">
Option B: Auto-badge every image inside CMS articles (WordPress / Ghost / Webflow)
Pass a CSS selector in data-selector on the script tag so you never have to edit individual blog posts or CMS templates:
<script src="https://reconize.me/embed/badge.js"
data-selector="article img, .entry-content img, .gh-content img"
data-auto="true"
defer></script>
Option C: Instant ISCC lookup for headless CMS & DAM pipelines
If your DAM or CMS stores the file's ISCC Instance-Code at ingest time, pass it in data-reconize-iscc (base64). The badge resolves via the C2PA Soft Binding API in a single lightweight request without decoding image pixels:
<img src="https://cdn.example.com/photo.avif"
data-reconize-badge
data-reconize-auto="true"
data-reconize-iscc="AA...">
2. Public Verification & C2PA Soft-Binding HTTP API
Platforms, DAMs, and automated pipelines can query the Reconize relay directly over HTTPS. CORS (Access-Control-Allow-Origin: *) is enabled on all read endpoints. Media files are never uploaded; callers send only a compact fingerprint, keypoint set, watermark payload, or signature hash.
| Endpoint | Method | Purpose |
|---|---|---|
/registry/v1/lookup |
POST |
Look up a stripped photo (fp + kp), audio clip (afp), or video (vfp / vkp). Returns { ok: true, state: "content", kind, leaf: { displayName, signedAt, mediaType } }. |
/softbinding/v1/services/supportedAlgorithms |
GET |
C2PA Soft Binding API discovery. Lists me.reconize.videoseal.1, io.iscc.v0, and me.reconize.kp.1. |
/softbinding/v1/matches/byBinding |
GET, POST |
C2PA Soft Binding Resolution API (Spec 2.2). Accepts { alg, value, kp?, vkp?, maxResults? } and returns matching registry records, creator declarations (did:web), and EU TDM / AI training reservation notices. |
/log/v1/lookup?sig=<b64url> |
GET |
Transparency log inclusion proof for a signature, plus the earliest OpenTimestamps Bitcoin anchor covering the checkpoint. |
Example: Querying the C2PA Soft-Binding API
curl -s https://relay.reconize.me/softbinding/v1/services/supportedAlgorithms
# Look up an ISCC Instance-Code or VideoSeal soft-binding payload:
curl -s -X POST https://relay.reconize.me/softbinding/v1/matches/byBinding \
-H "Content-Type: application/json" \
-d '{
"alg": "io.iscc.v0",
"value": "KACYP427..."
}'
Example: Browser JS SDK Lookup (fingerprint.js)
Your web app or CMS upload form can import Reconize's browser fingerprinter directly to check contributor uploads before they enter your CMS:
import { pictureFingerprints, audioFingerprint, registryLookup } from 'https://reconize.me/verify/fingerprint.js';
async function verifyUploadedImage(file) {
const fps = await pictureFingerprints(file);
if (!fps.length) return { matched: false };
const res = await registryLookup({ fp: fps[0], kp: fps.kp });
return res.state === 'content' ? { matched: true, creator: res.leaf.displayName, signedAt: res.leaf.signedAt } : { matched: false };
}
3. Local Signing & Studio Pipelines (ReconizeSDK)
Reconize never accepts raw media uploads for signing on a remote server. Signing always happens on your hardware so confidential cuts, scripts, and masters never leave your machine:
- On macOS: Use the Reconize Mac app (Watch Folder auto-signs every render dropped into an export directory; Send & Track creates per-recipient watermarked copies and gated links).
- In Swift / macOS pipelines: Integrate
ReconizeSDK(Reconize.sign,Reconize.verify,Reconize.distribute) directly into NLE post-render scripts or custom ingest apps. - Rate limits & B2B volume keys: Public read endpoints allow interactive browser verification and portfolio badges out of the box. For high-volume CMS ingest, DAM integration, or studio multi-seat deployment, contact us.