Skip to content

DEVELOPERS

Verification as an API.

The same five-layer forensic engine behind Verifyco Web — C2PA provenance, metadata forensics, neural detection, temporal and frequency analysis — as a REST API. Send a file or a public link; get an evidence-led JSON report. Media is processed ephemerally and deleted the moment analysis ends.

private beta · manual review · no self-serve keys yet

Auth

X-API-Key header

Per-organization keys, rotatable on request.

Rate limits

Plan-based

Burst and sustained limits agreed per contract.

Data retention

Zero media

Files stream to an isolated worker and are deleted after the run. Only the JSON report returns.

POST/v1/analyze— analyze an uploaded image or video

Multipart upload. Accepts JPEG, PNG, WebP, HEIC, GIF, TIFF, BMP, MP4/MOV, WebM/MKV, AVI and MPEG-TS. File type is verified by magic bytes, not by extension. Size limits follow your contract tier (up to 2 GB).

request · curl
curl -X POST https://api.verifyco.info/v1/analyze \
  -H "X-API-Key: vfy_live_xxxxxxxxxxxx" \
  -F "file=@suspicious_video.mp4"
response · 200 application/json
{
  "score": 84,
  "verdict": "authentic",
  "mediaType": "video",
  "engine": "verifyco-web/2.x",
  "bytes": 12873442,
  "layers": [
    { "layer": "c2pa",        "status": "unavailable", "score": 0.5,
      "findings": ["No content credentials embedded."] },
    { "layer": "metadata",    "status": "passed",      "score": 0.86,
      "findings": ["Encoder chain consistent with device capture."] },
    { "layer": "aiDetection", "status": "passed",      "score": 0.91,
      "findings": ["No generative artifacts above threshold."] },
    { "layer": "temporal",    "status": "passed",      "score": 0.83,
      "findings": ["Frame-to-frame lighting and motion coherent."] },
    { "layer": "frequency",   "status": "passed",      "score": 0.79,
      "findings": ["Spectral response matches optical capture."] }
  ]
}
POST/v1/analyze-url— analyze media at a public social link

Fetches the public media at the URL (X, TikTok, Instagram, YouTube and other yt-dlp-supported sources), runs the same five-layer pipeline and deletes the download. Response shape is identical to /v1/analyze.

request · curl
curl -X POST https://api.verifyco.info/v1/analyze-url \
  -H "X-API-Key: vfy_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.tiktok.com/@user/video/123..."}'

RESPONSE SEMANTICS

score · 0–100

Calibrated fusion of the available layers. Higher = more consistent with authentic capture. It is probabilistic evidence, never proof.

verdict

authentic · suspicious · manipulated · inconclusive — derived from the score and layer agreement.

layers[].status

passed · warning · failed · unavailable. Unavailable signals are declared, never silently skipped — absence of evidence is not evidence of manipulation.

Errors

Standard HTTP: 401 bad key, 413 over size limit, 415 unsupported media, 429 rate limited, 5xx retry with backoff.

Building trust & safety, KYC or newsroom tooling?

Tell us your volume and use case — beta partners get direct engineering support and input on the roadmap.

Read our security & data-handling practices →