Media Provenance

Trace the origin and authenticity of images and videos. Detects deepfakes, verifies C2PA digital watermarks, checks metadata consistency, and cross-references against known media databases.

Endpoint

Code
POST https://signal-stack-ten.vercel.app/v1/verify/media

Request parameters

ParameterTypeRequiredDescription
urlstringYes*URL of the image or video to analyze
filestringYes*Base64-encoded file data (alternative to URL)
check_deepfakesbooleanNoRun deepfake detection model (default: true)
check_provenancebooleanNoTrace image provenance across the web (default: true)
check_watermarksbooleanNoExtract and verify C2PA watermarks (default: true)

* Either url or file is required.

Response schema

FieldTypeDescription
idstringUnique request identifier
trust_scorenumberOverall authenticity confidence (0.0–1.0)
authenticitystringauthentic, likely_authentic, suspicious, manipulated
deepfake_scorenumberProbability of deepfake manipulation (0.0–1.0)
provenancearrayTimeline of known appearances of this media
provenance_sourcestringEarliest known source of the media
watermarkobjectC2PA or other digital watermark data
metadataobjectExtracted EXIF and other metadata
evidencearraySource evidence chain
latency_msnumberProcessing time in milliseconds

Request example

Code
{
  "url": "https://example.com/photo.jpg",
  "check_deepfakes": true,
  "check_provenance": true,
  "check_watermarks": true
}

Response example

Code
{
  "id": "vrf_med_c9d0e1f2",
  "trust_score": 0.12,
  "authenticity": "manipulated",
  "deepfake_score": 0.94,
  "provenance": [
    {
      "url": "https://original-source.com/photo.jpg",
      "first_seen": "2024-06-15T08:30:00Z",
      "source": "news_archive"
    },
    {
      "url": "https://example.com/photo.jpg",
      "first_seen": "2025-01-20T14:22:00Z",
      "source": "web_crawl"
    }
  ],
  "provenance_source": "https://original-source.com/photo.jpg",
  "watermark": null,
  "metadata": {
    "width": 1920,
    "height": 1080,
    "format": "JPEG",
    "exif": {
      "make": null,
      "model": null,
      "datetime_original": null,
      "gps": null
    }
  },
  "evidence": [
    {
      "source": "deepfake_detection",
      "finding": "GAN-based manipulation artifacts detected in facial region (p=0.94)",
      "authority_score": 0.93
    },
    {
      "source": "provenance_analysis",
      "finding": "Image first appeared June 2024; EXIF metadata has been stripped",
      "authority_score": 0.87
    }
  ],
  "dimensions": {
    "source_authority": 0.90,
    "cross_reference": 0.76,
    "recency": 0.65,
    "llm_analysis": 0.89
  },
  "latency_ms": 2100,
  "credits_used": 4
}

Code examples

Python

Code
import signalstack

client = signalstack.SignalStack(api_key="ssk_live_...")

result = client.verify.media(
    url="https://example.com/photo.jpg",
    check_deepfakes=True,
)

print(f"Authenticity: {result.authenticity}")
print(f"Deepfake score: {result.deepfake_score}")
print(f"Provenance: {result.provenance_source}")

cURL

Code
curl -X POST https://signal-stack-ten.vercel.app/v1/verify/media   -H "Authorization: Bearer $SIGNALSTACK_API_KEY"   -H "Content-Type: application/json"   -d '{
    "url": "https://example.com/photo.jpg",
    "check_deepfakes": true
  }'

TypeScript

Code
import { SignalStack } from "@signalstack/sdk"

const client = new SignalStack({ apiKey: process.env.SIGNALSTACK_API_KEY! })

const result = await client.verify.media({
  url: "https://example.com/photo.jpg",
  checkDeepfakes: true,
})

console.log(`Authenticity: ${result.authenticity}`)
console.log(`Deepfake score: ${result.deepfakeScore}`)

Next steps