Integrate media authenticity verification into your platform
Resolve a single artifact hash against the full MIR trust stack. Returns capture provenance, assertions, issuer continuity, and a neutral summary.
{
"hash": "a3f8c1e7b2e0941d5f20d3db..." // 64-char hex SHA-256
}{
"artifactHash": "a3f8c1e7...",
"capture": {
"sessionId": "uuid",
"status": "COMPLETED",
"scope": "LIVE_CAPTURE",
"platform": "IOS",
"deviceModel": "iPhone 15 Pro",
"deviceOs": "iOS 18.1",
"mediaType": "video",
"resolution": "1920x1080",
"fps": 30,
"duration": 154,
"chainLength": 47,
"chainRoot": "hex...",
"startedAt": "2026-03-21T10:00:00Z",
"endedAt": "2026-03-21T10:02:34Z",
"sensors": ["gps", "accel", "gyro"],
"gps": { "lat": 33.4484, "lng": -112.0740, "accuracy": 5 }
},
"assertions": [
{
"assertionId": "uuid",
"type": "ISSUED_BY",
"issuerName": "Reuters",
"issuerDomain": "reuters.com",
"issuerId": "uuid",
"algorithm": "Ed25519",
"signatureValid": true,
"createdAt": "2026-03-21T10:05:00Z",
"revokedAt": null,
"note": null,
"tags": ["news", "verified"]
}
],
"issuerContinuity": [
{
"domain": "reuters.com",
"issuerId": "uuid",
"eventCount": 12400,
"firstSeen": "2024-01-15T00:00:00Z",
"lastSeen": "2026-03-21T09:00:00Z",
"tier": 2,
"status": "ACTIVE"
}
],
"protocolClaims": [],
"signals": {
"captureChains": 1,
"assertions": 1,
"disputes": 0,
"issuersWithHistory": 1,
"uniqueSigners": 1,
"revokedAssertions": 0
},
"resolvedAt": "2026-03-21T10:06:00Z",
"cached": false,
"sources": {
"assertionsQueried": true,
"captureQueried": true,
"mirQueried": true
}
}Public lookup — same response format as POST, with lighter rate limits (20 req/min vs 60 req/min authenticated).
curl https://mirresolve.org/resolve?hash=a3f8c1e7b2e0941d5f...
Resolve up to 25 hashes in a single request. Results are keyed by artifact hash.
{
"hashes": [
"a3f8c1e7b2e0941d5f20d3db...",
"7b2e0941d5f20d3db9e4c8a1..."
]
}{
"results": {
"a3f8c1e7...": { /* full resolve result */ },
"7b2e0941...": { /* full resolve result */ }
}
}Health check. Returns service status, database connectivity, and uptime.
{
"status": "ok", // ok | degraded
"mongo": "connected",
"redis": "connected", // or "unavailable"
"uptime": 3600
}The signals object contains factual counts. No labels. No interpretation. The consumer decides what they mean.
If MIR Resolve returns no data for a hash, that does not mean the media is fake. It means we have no information about it. Most media on the internet has no provenance data. MIR Resolve reports what exists — it does not infer what doesn't.