This document describes the data fields embedded in Signos-sealed media files. It is descriptive, not prescriptive — it tells you what is there, not why.
All Signos seal payloads in image files begin with the literal ASCII bytes:
SIGNOS_SEAL_V2:
followed immediately by a UTF-8 encoded JSON object.
Video files do not use a magic prefix; they use a named QuickTime metadata key (see §3).
| File type | Primary location | Fallback location |
|---|---|---|
| JPEG, HEIC, PNG, TIFF, WebP | EXIF UserComment |
TIFF ImageDescription |
The full payload is SIGNOS_SEAL_V2: + JSON object.
| File type | Primary location | Fallback location |
|---|---|---|
| MP4, MOV | moov/meta/keys + ilst, key com.signos.seal in namespace mdta |
moov/udta/com.signos.seal (flat key+JSON, legacy) |
Video payloads are the JSON object only (no SIGNOS_SEAL_V2: prefix).
JSON payload (after any prefix): maximum 65,536 bytes (64 KB).
| Field | Type | Notes |
|---|---|---|
version |
string | Schema version, e.g. "SIGNOS_SEAL_V2" |
blockchainNetwork |
string | Network identifier, e.g. "mainnet", "testnet" |
verifyUrls |
array of string | Public Algorand node/indexer endpoints |
verificationInstructions |
string | Human-readable description of how to verify |
| Field | Type | Validation |
|---|---|---|
originalHash |
string | 64 hexadecimal characters (BLAKE3-256). Optional. |
sealedHash |
string | 64 hexadecimal characters (BLAKE3-256). Optional. |
hashAlgorithm |
string | Algorithm name, e.g. "BLAKE3" |
strategy |
string | Embedding-strategy identifier |
strippingAlgorithm |
string | One of SIGNOS_STRIP_V1, SIGNOS_STRIP_IOS_V1. Forward-compatible: unknown identifiers warn but do not fail. |
createdAt |
string | ISO 8601 timestamp |
| Field | Type | Validation |
|---|---|---|
creator |
string | Free-form |
description |
string | Free-form |
license |
string | Free-form (e.g. "CC-BY-4.0", "All rights reserved") |
aiTrainingPermission |
string | Free-form opt-in/out marker |
gpsLatitude |
number | Decimal degrees, -90 to 90 |
gpsLongitude |
number | Decimal degrees, -180 to 180 |
| Field | Type | Validation |
|---|---|---|
motionHash |
string | 64 hex characters (BLAKE3-256) |
motionConfidence |
number | 0 to 1 |
biometricMethod |
string | Method identifier |
motionSamples |
array of object | See §6 |
authToShutterInterval |
number | Seconds |
biometricDomainStateHash |
string | 64 hex characters (BLAKE3-256) |
| Field | Type | Validation |
|---|---|---|
publicTransactionId |
string | 52 characters from [A-Z2-7] (Algorand transaction identifier, base32) |
walletAddress |
string | 58 characters from [A-Z2-7] (Algorand address, base32) |
verifyWalletUrl |
string | URL |
A field with a present-but-malformed value is dropped on parse rather than failing the whole record (best-effort).
Each entry in the motionSamples array has the form:
| Field | Type | Description |
|---|---|---|
t |
number | Timestamp offset (seconds from capture start) |
x |
number | Acceleration on X axis (g-force) |
y |
number | Acceleration on Y axis (g-force) |
z |
number | Acceleration on Z axis (g-force) |
rx |
number (optional) | Rotation rate on X axis (radians/second) |
ry |
number (optional) | Rotation rate on Y axis (radians/second) |
rz |
number (optional) | Rotation rate on Z axis (radians/second) |
The transaction note attached to on-chain registrations is a separate JSON object (not embedded in the file). It uses the following keys:
| Field | Type | Validation |
|---|---|---|
version |
string | |
sealed_hash |
string | 64 hex characters (BLAKE3-256) |
original_hash |
string | 64 hex characters (BLAKE3-256). Optional. |
motion_hash |
string | 64 hex characters (BLAKE3-256). Optional. |
creator |
string | Optional |
license |
string | Optional |
The Algorand network limits transaction notes to 1024 bytes total.
The official verification implementation is open source: Signos-app/verify.
Live demo: verify.signos.app.
Read the source for the exact extraction, hashing, and on-chain lookup workflow.
This document describes SIGNOS_SEAL_V2. Future revisions will bump the magic prefix and key namespace.
This specification text is licensed under Creative Commons Attribution 4.0 International (CC-BY-4.0). © 2026 Signos LLC.
The Signos architecture is patent-pending; this document covers only the embedded field format.