SignedShot uses cryptography to prove two things about your photos and videos: that the content hasn't been changed, and that it was captured by a trusted device. Think of it as a tamper-proof seal for digital media.
Digital content is easier than ever to manipulate. Photos can be edited, AI can generate fake videos, and there's no reliable way to prove what's real. We need a system that doesn't rely on trusting platforms or services—one that anyone can verify independently.
SignedShot works through two independent layers of cryptographic verification:
Proves the content hasn't been altered
What this means: Any change to the file—even a single pixel—will break the signature. The content is locked at the moment of capture.
Proves it was captured by a trusted device
What this means: The capture came from a legitimate app on a real device, not from a script or fake source. The server validates the device before issuing proof.
Content integrity works independently of device trust. You can verify one without the other.
Different use cases need different trust levels. Debug mode for testing, full attestation for production.
Layer 2 can evolve (add hardware attestation, decentralized proofs) without changing Layer 1.
Every capture gets a JSON "sidecar" file containing both layers of proof:
{
"version": "1.0",
"media_integrity": {
"content_hash": "a3f9d2e8b7c6...",
"signature": "MEUCIQD8xM7K...",
"public_key": "MFkwEwYH...",
"capture_id": "91f4c0b2-...",
"captured_at": "2025-08-28T18:42:00Z"
},
"capture_trust": {
"jwt": "eyJhbGciOiJFUz..."
}
}Layer 1 (media_integrity) contains the hash, signature, and public key from the device.
Layer 2 (capture_trust) contains a JWT signed by the server proving device legitimacy.
Anyone can verify a SignedShot capture independently—no account or API key required. The verifier checks three things:
Hash the media file and compare with the sidecar
Verify the signature using the public key
Validate the JWT signature and check capture_id matches
Any edit breaks the signature
Can't create valid signatures without device access
Server challenges prevent reuse
Hash locks the signature to specific content
If you photograph a deepfake on a screen, SignedShot proves you captured that image, not that the content is real
Root/jailbroken devices may allow key extraction
Key insight: SignedShot proves "this device captured this content at this time"—not "this content depicts reality." It establishes a verified chain of custody.
The proof format is JSON for three reasons:
Developers can inspect proofs without special tools
Store as a file, in a database, or transmit via API
Every platform has JSON libraries
Integrate SignedShot into your app with our iOS SDK and Python validator.
Quick start guide →SignedShot is an open protocol, not a product. You can:
Ready to dive deeper?
Complete technical specification
See SignedShot in action
Reference implementation
Interactive API documentation
SignedShot is currently in Developer Preview. The protocol may evolve based on community feedback.