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.
/v1/analyze— analyze an uploaded image or videoMultipart 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).
curl -X POST https://api.verifyco.info/v1/analyze \ -H "X-API-Key: vfy_live_xxxxxxxxxxxx" \ -F "file=@suspicious_video.mp4"
{
"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."] }
]
}/v1/analyze-url— analyze media at a public social linkFetches 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.
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.



