Starter
$29
100 credits · $0.29 per Quick scan
For evaluating integrations and occasional workflows.
Send an original clip. Receive sampled timestamps, a file hash, an advisory verdict and an explanation. Keep human review in the loop.
Visual-only beta · 60-second clips · 50 MB · up to 4K · no SLA or accuracy guarantee. Audio, SynthID and C2PA validation are not included.
Credits are valid for 90 days. One Quick scan (8 frames) uses 1 credit; Deep (16 frames) uses 2; Forensic (24 frames) uses 3. An inconclusive completed result is charged; failed processing is not.
$29
100 credits · $0.29 per Quick scan
For evaluating integrations and occasional workflows.
$99
500 credits · $0.198 per Quick scan
For recurring newsroom and agency screening.
$299
2,000 credits · $0.1495 per Quick scan
For a proven integration. Beta throughput limits still apply.
One-time USD purchases, not subscriptions. No automatic top-ups. Extension Pro and consumer upload purchases do not include API credits. Higher throughput or team requirements: discuss a pilot.
Sign in to manage API keys, credit purchases and private reports. We request basic Google identity only, not Drive, Gmail or mobile-app access.
Loading account services…
Up to three active keys. Raw keys are shown once and stored only as hashes. Keep keys server-side.
Copy this key now; you cannot retrieve it later.
Older credits are used first. Expired or refunded credits cannot be used.
Buy additional creditsUnused-credit refund requests within 30 days: contact support.
Download JSON reports for 30 days. Original videos and extracted frames are not retained. There is no public report link.
API base URL: https://api.tsdetect.com. Scan uploads go directly to the API service rather than through the website proxy.
curl https://api.tsdetect.com/v1/scans \
-H "Authorization: Bearer $TRUESIGHT_API_KEY" \
-H "Idempotency-Key: clip-2026-001" \
-F "video=@clip.mp4" \
-F "tier=quick"
Windows PowerShell: use curl.exe and put the arguments on one line. The API key must not be embedded in a website or shipped in a mobile app.
| Endpoint | Purpose |
|---|---|
POST /v1/scans | Synchronous original-file scan; multipart field video, optional tier = quick / deep / forensic. |
GET /v1/scans/{id} | Retrieve your private report without spending more credits. |
GET /v1/credits | Read available balance and tier credit costs. |
{
"id": "scan-uuid",
"status": "completed",
"input": { "sha256": "...", "durationSeconds": 12.5, "bytes": 2048000 },
"analysis": {
"verdict": "UNCLEAR",
"label": "UNCLEAR",
"confidence": 50,
"aiProbability": 48,
"explanation": "Some visual details could not be assessed confidently.",
"humanReviewRequired": true,
"frameCount": 8,
"timestampsSeconds": [1.389, 2.778, 4.167, 5.556, 6.944, 8.333, 9.722, 11.111]
},
"provenance": { "synthid": "not_checked", "c2pa": "not_checked" },
"billing": { "creditsCharged": 1, "remainingCredits": 99 }
}Example, not a measured accuracy claim. confidence and aiProbability are model estimates, not independently calibrated probabilities. Review the returned limitations array. The report's remaining-credit balance is a snapshot at completion; use GET /v1/credits for your current balance.
Beta limit: 10 scan attempts per minute and one active scan per account; global capacity is limited. Allow up to 120 seconds for a response. Upload a decodable clip up to 60 seconds, 50 MB and 4K. Longer consumer uploads remain available separately on the website.
An Idempotency-Key of 8–100 allowed characters is required. A completed retry with the same file, tier and key returns the original report without charging again. A different file or tier with that key returns 409. If processing fails, credits are restored; use a new key for a fresh attempt. Reports and idempotency records expire after 30 days.
If your network drops after completion, retrieve the report or retry with the same key. A persisted completed analysis is charged even if the first response was lost.
400: invalid file, tier, duration or idempotency key. 401: missing/invalid key. 402: insufficient credits. 403: account denied. 409: idempotency conflict or processing. 413: oversized upload. 429: rate/capacity limit. 500/503: processing/service failure. Errors return {"error":{"code":"...","message":"..."}}. No credits are spent on rejected input or failed processing.
It does not verify a person's identity, spoken claims, audio, every video frame or chain of custody. It does not run Google SynthID verification or validate C2PA signatures. A SHA-256 hash identifies the exact submitted file; it does not prove its origin.