{"openapi":"3.1.0","info":{"title":"OSINT & Digital Evidence Forensics API","version":"1.0.0","description":"Hash uploaded evidence, extract local metadata, check C2PA markers, build custody chains, cluster duplicates, and report cryptographic integrity without claiming factual authenticity. Paid with x402 exact USDC on Base. No account is required.","contact":{"email":"support@brainiac.software"},"x-guidance":"BRAINIAC.software is a pay-per-call API for software agents. No account or API key is required.\nPayment uses the x402 protocol with exact USDC on Base (chain id 8453). Each POST operation has a fixed USD price.\nHow to call an operation:\n1. POST a JSON body matching the operation's requestBody schema to the operation path. Include an Idempotency-Key header (64 hex characters, 32 random bytes).\n2. If you have not paid, the server responds 402 with payment requirements in the body. Pay the exact amount to the payTo address on Base.\n3. Retry the identical request with the same Idempotency-Key and add a payment-signature header containing the x402 payment payload. On success (200) the operation result is returned.\n4. Reuse the same Idempotency-Key only for retries of the same operation and request body; it will not be charged twice.\nAll outputs are compliance prechecks, drafts, or data lookups for human review. They are not official determinations, legal advice, identity confirmation, or certified filings. Verify time-sensitive or official data with the cited source before acting."},"servers":[{"url":"https://www.brainiac.software"}],"paths":{"/api/v1/evidence-intelligence/file-hash-manifest":{"post":{"operationId":"build_evidence_file_hash_manifest","summary":"Build evidence file hash manifest","description":"Hash uploaded evidence bytes locally with md5, sha1, sha256, and sha512. Hash matches verify cryptographic integrity only, not factual authenticity.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==","expectedSha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77"},{"id":"EV-2","filename":"scene-copy.png","mediaType":"image/png","role":"duplicate-candidate","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"fileCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"role":{"type":"string"},"parentId":{"type":"string"},"size":{"type":"number"},"hashes":{"type":"object","properties":{"md5":{"type":"string"},"sha1":{"type":"string"},"sha256":{"type":"string"},"sha512":{"type":"string"}},"additionalProperties":true},"expectedSha256":{"type":"string"},"sha256MatchesExpected":{"type":"boolean"},"comparedToExpected":{"type":"boolean"},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"manifested","fileCount":2,"items":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","role":"","parentId":"","size":70,"hashes":{"md5":"2cd8bde463f5d82aae0f0cec061d6b8f","sha1":"b2bbe763c7e1828c750d53f78550709a6fea19be","sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","sha512":"fcba48f85167b732f75c33a2232a87e393441948350f265737a483c8b4923fbc2d7dd4ea1ebf00bb774d8cb09c016610abfbc3d4597ebe2d16e81bb92cb3aa48"},"expectedSha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","sha256MatchesExpected":true,"comparedToExpected":true,"cryptographicIntegrityVerified":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false},{"id":"EV-2","filename":"scene-copy.png","mediaType":"image/png","role":"duplicate-candidate","parentId":"","size":70,"hashes":{"md5":"2cd8bde463f5d82aae0f0cec061d6b8f","sha1":"b2bbe763c7e1828c750d53f78550709a6fea19be","sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","sha512":"fcba48f85167b732f75c33a2232a87e393441948350f265737a483c8b4923fbc2d7dd4ea1ebf00bb774d8cb09c016610abfbc3d4597ebe2d16e81bb92cb3aa48"},"expectedSha256":"","sha256MatchesExpected":false,"comparedToExpected":false,"cryptographicIntegrityVerified":false,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/metadata-extract":{"post":{"operationId":"extract_evidence_metadata","summary":"Extract evidence metadata","description":"Extract container metadata from uploaded files locally. Missing EXIF or GPS fields are not invented.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","capturedAt":"2026-10-01T12:00:00.000Z","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"fileCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"size":{"type":"number"},"metadata":{"type":"object","properties":{"container":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"bitDepth":{"type":"number"},"colorType":{"type":"number"},"capturedAtSupplied":{"type":"string"}},"additionalProperties":true},"c2paPresent":{"type":"boolean"},"locationClueCount":{"type":"number"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"extracted","fileCount":1,"items":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","size":70,"metadata":{"container":"png","width":1,"height":1,"bitDepth":8,"colorType":6,"capturedAtSupplied":"2026-10-01T12:00:00.000Z"},"c2paPresent":false,"locationClueCount":0,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/c2pa-provenance-verify":{"post":{"operationId":"verify_c2pa_provenance_markers","summary":"Verify C2PA provenance markers","description":"Look for local C2PA/JUMBF markers in uploaded bytes. Marker presence is not a factual authenticity determination.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"fileCount":{"type":"number"},"presentCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"present":{"type":"boolean"},"markerCount":{"type":"number"},"notes":{"type":"array","items":{"type":"string"}},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"checked","fileCount":1,"presentCount":0,"items":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","present":false,"markerCount":0,"notes":["No local C2PA/JUMBF marker bytes were found.","Marker presence or absence is cryptographic/structure evidence only and is not a factual authenticity determination."],"cryptographicIntegrityVerified":false,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[{"kind":"observation","code":"c2pa_absent","subject":"EV-1","detail":"No local C2PA/JUMBF markers were found. Absence does not prove inauthenticity."}],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/chain-of-custody-build":{"post":{"operationId":"build_evidence_chain_of_custody","summary":"Build evidence chain of custody","description":"Order supplied custody events per evidence id and compare optional hashAfter values to current sha256 digests.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}],"custodyEvents":[{"id":"CUS-1","evidenceId":"EV-1","actor":"Officer A","action":"collected","at":"2026-10-01T13:00:00.000Z","hashAfter":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77"},{"id":"CUS-2","evidenceId":"EV-1","actor":"Lab B","action":"received","at":"2026-10-02T09:00:00.000Z","hashAfter":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"evidenceCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string"},"filename":{"type":"string"},"eventCount":{"type":"number"},"hashBreakCount":{"type":"number"},"currentSha256":{"type":"string"},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"actor":{"type":"string"},"action":{"type":"string"},"at":{"type":"string"},"note":{"type":"string"},"hashAfter":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"built","evidenceCount":1,"items":[{"evidenceId":"EV-1","filename":"scene.png","eventCount":2,"hashBreakCount":0,"currentSha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","events":[{"id":"CUS-1","actor":"Officer A","action":"collected","at":"2026-10-01T13:00:00.000Z","note":"","hashAfter":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","source":""},{"id":"CUS-2","actor":"Lab B","action":"received","at":"2026-10-02T09:00:00.000Z","note":"","hashAfter":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","source":""}],"cryptographicIntegrityVerified":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/image-source-timeline-build":{"post":{"operationId":"build_image_source_timeline","summary":"Build image source timeline","description":"Combine caller-supplied capture times, local EXIF timestamps, and custody events into an image timeline.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","capturedAt":"2026-10-01T12:00:00.000Z","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}],"custodyEvents":[{"id":"CUS-1","evidenceId":"EV-1","actor":"Officer A","action":"collected","at":"2026-10-01T13:00:00.000Z"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"imageCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"parentId":{"type":"string"},"pointCount":{"type":"number"},"points":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string"},"kind":{"type":"string"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"built","imageCount":1,"items":[{"id":"EV-1","filename":"scene.png","parentId":"","pointCount":2,"points":[{"at":"2026-10-01T12:00:00.000Z","kind":"captured_at_supplied","detail":"Caller-supplied capture time","source":"caller"},{"at":"2026-10-01T13:00:00.000Z","kind":"custody","detail":"collected by Officer A","source":"custody"}],"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/video-keyframe-extract":{"post":{"operationId":"extract_video_keyframe_evidence","summary":"Extract video keyframe evidence","description":"Inspect local video container metadata and hash caller-supplied keyframe image files. Frames are not decoded by external services.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"VID-1","filename":"clip.mp4","mediaType":"video/mp4","fileBase64":"AAAAHGZ0eXBtcDQyAAAAAWlzb21tcDQyAAAC1G1vb3Y="},{"id":"KF-1","filename":"frame-01.png","mediaType":"image/png","role":"keyframe","parentId":"VID-1","capturedAt":"2026-10-01T12:00:01.000Z","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"videoCount":{"type":"number"},"keyframeCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"videoId":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"container":{"type":"object","properties":{"container":{"type":"string"},"majorBrand":{"type":"string"},"topLevelBoxes":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}},"additionalProperties":true},"keyframeCount":{"type":"number"},"keyframes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"size":{"type":"number"},"sha256":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"capturedAt":{"type":"string"}},"additionalProperties":true}},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"extracted","videoCount":1,"keyframeCount":1,"items":[{"videoId":"VID-1","filename":"clip.mp4","mediaType":"video/mp4","container":{"container":"mp4","majorBrand":"mp42","topLevelBoxes":["ftyp"],"note":"MP4 boxes were inspected locally. Decoded video frames are not invented and no external transcoder was used."},"keyframeCount":1,"keyframes":[{"id":"KF-1","filename":"frame-01.png","size":70,"sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","width":1,"height":1,"capturedAt":"2026-10-01T12:00:01.000Z"}],"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[{"kind":"observation","code":"no_external_decode","subject":"VID-1","detail":"Video container metadata was inspected locally. Frames were not decoded by an external forensic or AI service."}],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/visual-location-clue-extract":{"post":{"operationId":"extract_visual_location_clues","summary":"Extract visual location clues","description":"Extract embedded GPS or location text clues from local image metadata. Missing coordinates are not invented.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"fileCount":{"type":"number"},"withCluesCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"clueCount":{"type":"number"},"clues":{"type":"array","items":{}},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"extracted","fileCount":1,"withCluesCount":0,"items":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","clueCount":0,"clues":[],"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[{"kind":"missing","code":"location_clues","subject":"EV-1","detail":"No embedded location clues were found in local metadata."}],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/duplicate-cluster":{"post":{"operationId":"cluster_duplicate_evidence","summary":"Cluster duplicate evidence","description":"Cluster uploaded evidence files that share the same sha256 digest. Duplicates are cryptographic only.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="},{"id":"EV-2","filename":"scene-copy.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"clusterCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"sha256":{"type":"string"},"count":{"type":"number"},"fileIds":{"type":"array","items":{"type":"string"}},"filenames":{"type":"array","items":{"type":"string"}},"cryptographicDuplicate":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"clustered","clusterCount":1,"items":[{"sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","count":2,"fileIds":["EV-1","EV-2"],"filenames":["scene.png","scene-copy.png"],"cryptographicDuplicate":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/integrity-recheck":{"post":{"operationId":"recheck_evidence_integrity","summary":"Recheck evidence integrity","description":"Compare current local hashes to caller-supplied expected digests. A match verifies cryptographic integrity only.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}],"expectedHashes":[{"evidenceId":"EV-1","algorithm":"sha256","digest":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"fileCount":{"type":"number"},"matchCount":{"type":"number"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"compared":{"type":"boolean"},"matches":{"type":"boolean"},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"checks":{"type":"array","items":{"type":"object","properties":{"algorithm":{"type":"string"},"expected":{"type":"string"},"actual":{"type":"string"},"matches":{"type":"boolean"}},"additionalProperties":true}}},"additionalProperties":true}},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"rechecked","fileCount":1,"matchCount":1,"items":[{"id":"EV-1","filename":"scene.png","compared":true,"matches":true,"cryptographicIntegrityVerified":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false,"checks":[{"algorithm":"sha256","expected":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","actual":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","matches":true}]}],"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/evidence-intelligence/forensic-report":{"post":{"operationId":"build_forensic_evidence_report","summary":"Build forensic evidence report","description":"Aggregate hash, metadata, C2PA, custody, timeline, keyframe, location, duplicate, and integrity results. Distinguishes cryptographic integrity from factual authenticity.","tags":["evidence-intelligence"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"text":{"type":"string","maxLength":200000},"json":{"type":"string","maxLength":200000},"csv":{"type":"string","maxLength":200000},"files":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif","video/mp4","video/quicktime","application/pdf","application/octet-stream","text/plain","application/json"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000},"role":{"type":"string","maxLength":80},"parentId":{"type":"string","maxLength":80},"label":{"type":"string","maxLength":200},"capturedAt":{"type":"string","maxLength":40},"expectedSha256":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"required":["fileBase64"],"additionalProperties":false}},"custodyEvents":{"maxItems":400,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":80},"evidenceId":{"type":"string","maxLength":80},"actor":{"type":"string","maxLength":200},"action":{"type":"string","maxLength":120},"at":{"type":"string","maxLength":40},"note":{"type":"string","maxLength":500},"hashAfter":{"type":"string","maxLength":128},"source":{"type":"string","maxLength":200}},"additionalProperties":false}},"expectedHashes":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","maxLength":80},"filename":{"type":"string","maxLength":180},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha512"]},"digest":{"type":"string","maxLength":128}},"additionalProperties":false}},"asOf":{"type":"string","maxLength":40}},"additionalProperties":false},"example":{"asOf":"2026-11-01","files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","capturedAt":"2026-10-01T12:00:00.000Z","expectedSha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="},{"id":"EV-2","filename":"scene-copy.png","mediaType":"image/png","fileBase64":"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="}],"custodyEvents":[{"id":"CUS-1","evidenceId":"EV-1","actor":"Officer A","action":"collected","at":"2026-10-01T13:00:00.000Z","hashAfter":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77"}],"expectedHashes":[{"evidenceId":"EV-1","algorithm":"sha256","digest":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"status":{"type":"string"},"asOf":{"type":"string"},"fileCount":{"type":"number"},"sections":{"type":"object","properties":{"hashManifest":{"type":"object","properties":{"fileCount":{"type":"number"}},"additionalProperties":true},"metadata":{"type":"object","properties":{"fileCount":{"type":"number"}},"additionalProperties":true},"c2pa":{"type":"object","properties":{"presentCount":{"type":"number"}},"additionalProperties":true},"custody":{"type":"object","properties":{"evidenceCount":{"type":"number"}},"additionalProperties":true},"imageTimeline":{"type":"object","properties":{"imageCount":{"type":"number"}},"additionalProperties":true},"keyframes":{"type":"object","properties":{"videoCount":{"type":"number"},"keyframeCount":{"type":"number"}},"additionalProperties":true},"locations":{"type":"object","properties":{"withCluesCount":{"type":"number"}},"additionalProperties":true},"duplicates":{"type":"object","properties":{"clusterCount":{"type":"number"}},"additionalProperties":true},"integrity":{"type":"object","properties":{"matchCount":{"type":"number"}},"additionalProperties":true}},"additionalProperties":true},"files":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"role":{"type":"string"},"parentId":{"type":"string"},"size":{"type":"number"},"hashes":{"type":"object","properties":{"md5":{"type":"string"},"sha1":{"type":"string"},"sha256":{"type":"string"},"sha512":{"type":"string"}},"additionalProperties":true},"expectedSha256":{"type":"string"},"sha256MatchesExpected":{"type":"boolean"},"comparedToExpected":{"type":"boolean"},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"integrity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"compared":{"type":"boolean"},"matches":{"type":"boolean"},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"checks":{"type":"array","items":{"type":"object","properties":{"algorithm":{"type":"string"},"expected":{"type":"string"},"actual":{"type":"string"},"matches":{"type":"boolean"}},"additionalProperties":true}}},"additionalProperties":true}},"duplicates":{"type":"array","items":{"type":"object","properties":{"sha256":{"type":"string"},"count":{"type":"number"},"fileIds":{"type":"array","items":{"type":"string"}},"filenames":{"type":"array","items":{"type":"string"}},"cryptographicDuplicate":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"c2pa":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"filename":{"type":"string"},"mediaType":{"type":"string"},"present":{"type":"boolean"},"markerCount":{"type":"number"},"notes":{"type":"array","items":{"type":"string"}},"cryptographicIntegrityVerified":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"}},"additionalProperties":true}},"distinction":{"type":"object","properties":{"cryptographicIntegrity":{"type":"string"},"factualAuthenticity":{"type":"string"}},"additionalProperties":true},"externalAiUsed":{"type":"boolean"},"externalForensicServiceUsed":{"type":"boolean"},"filesSentExternally":{"type":"boolean"},"factualAuthenticityClaimed":{"type":"boolean"},"paidProviderUsed":{"type":"boolean"},"apiKeyRequired":{"type":"boolean"},"findings":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"subject":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-04T21:00:00.000Z","status":"reported","asOf":"2026-11-01","fileCount":2,"sections":{"hashManifest":{"fileCount":2},"metadata":{"fileCount":2},"c2pa":{"presentCount":0},"custody":{"evidenceCount":2},"imageTimeline":{"imageCount":2},"keyframes":{"videoCount":0,"keyframeCount":0},"locations":{"withCluesCount":0},"duplicates":{"clusterCount":1},"integrity":{"matchCount":1}},"files":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","role":"","parentId":"","size":70,"hashes":{"md5":"2cd8bde463f5d82aae0f0cec061d6b8f","sha1":"b2bbe763c7e1828c750d53f78550709a6fea19be","sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","sha512":"fcba48f85167b732f75c33a2232a87e393441948350f265737a483c8b4923fbc2d7dd4ea1ebf00bb774d8cb09c016610abfbc3d4597ebe2d16e81bb92cb3aa48"},"expectedSha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","sha256MatchesExpected":true,"comparedToExpected":true,"cryptographicIntegrityVerified":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false},{"id":"EV-2","filename":"scene-copy.png","mediaType":"image/png","role":"","parentId":"","size":70,"hashes":{"md5":"2cd8bde463f5d82aae0f0cec061d6b8f","sha1":"b2bbe763c7e1828c750d53f78550709a6fea19be","sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","sha512":"fcba48f85167b732f75c33a2232a87e393441948350f265737a483c8b4923fbc2d7dd4ea1ebf00bb774d8cb09c016610abfbc3d4597ebe2d16e81bb92cb3aa48"},"expectedSha256":"","sha256MatchesExpected":false,"comparedToExpected":false,"cryptographicIntegrityVerified":false,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"integrity":[{"id":"EV-1","filename":"scene.png","compared":true,"matches":true,"cryptographicIntegrityVerified":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false,"checks":[{"algorithm":"sha256","expected":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","actual":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","matches":true},{"algorithm":"sha256","expected":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","actual":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","matches":true}]},{"id":"EV-2","filename":"scene-copy.png","compared":false,"matches":false,"cryptographicIntegrityVerified":false,"factualAuthenticityClaimed":false,"checks":[]}],"duplicates":[{"sha256":"c414cd0e204de974f73753c7e28d7638e7b3691bb8b1a2bab6b25bb7fed7ce77","count":2,"fileIds":["EV-1","EV-2"],"filenames":["scene.png","scene-copy.png"],"cryptographicDuplicate":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"c2pa":[{"id":"EV-1","filename":"scene.png","mediaType":"image/png","present":false,"markerCount":0,"notes":["No local C2PA/JUMBF marker bytes were found.","Marker presence or absence is cryptographic/structure evidence only and is not a factual authenticity determination."],"cryptographicIntegrityVerified":true,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false},{"id":"EV-2","filename":"scene-copy.png","mediaType":"image/png","present":false,"markerCount":0,"notes":["No local C2PA/JUMBF marker bytes were found.","Marker presence or absence is cryptographic/structure evidence only and is not a factual authenticity determination."],"cryptographicIntegrityVerified":false,"factualAuthenticityClaimed":false,"externalAiUsed":false,"externalForensicServiceUsed":false}],"distinction":{"cryptographicIntegrity":"Hash and custody-hash comparisons speak only to whether bytes are unchanged.","factualAuthenticity":"This report does not claim that images, videos, or events are factually authentic."},"externalAiUsed":false,"externalForensicServiceUsed":false,"filesSentExternally":false,"factualAuthenticityClaimed":false,"paidProviderUsed":false,"apiKeyRequired":false,"findings":[{"kind":"observation","code":"c2pa_absent","subject":"EV-1","detail":"No local C2PA/JUMBF markers were found. Absence does not prove inauthenticity."},{"kind":"observation","code":"c2pa_absent","subject":"EV-2","detail":"No local C2PA/JUMBF markers were found. Absence does not prove inauthenticity."},{"kind":"missing","code":"timeline_points","subject":"EV-2","detail":"No capture, EXIF, or custody timestamps were available for this image."},{"kind":"missing","code":"video_or_frames","subject":"","detail":"Supply a video file and/or keyframe image files for keyframe evidence extraction."},{"kind":"missing","code":"location_clues","subject":"EV-1","detail":"No embedded location clues were found in local metadata."},{"kind":"missing","code":"location_clues","subject":"EV-2","detail":"No embedded location clues were found in local metadata."},{"kind":"missing","code":"expected_hash","subject":"EV-2","detail":"No expected hash was supplied for integrity recheck."}],"limitations":["Evidence bytes are processed only in this local request path. Files are not sent to external AI or forensic services.","Cryptographic hash matches verify byte integrity only. They do not prove factual authenticity of depicted events or authorship.","C2PA checks look for local provenance markers and structure hints in the uploaded bytes. Marker presence is not a factual authenticity determination.","Video keyframes are taken only from caller-supplied frame files or container metadata. Frames are not decoded by an external service and are not invented.","Location clues come from embedded metadata or labeled caller fields. Missing GPS is not invented."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.08"},"protocols":[{"x402":{}}]}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}}}}}