SafeReel scans video for pornographic content and returns a verdict. You send a
URL; we fetch the file, analyse its full duration, and answer clean or nsfw.
No file-size limit, €0.020 per video-minute, and never more than 20 billed
minutes for a single video however long it runs.
Most moderation APIs are image classifiers with video bolted on — they cap uploads at tens or hundreds of megabytes, sample a handful of frames, and price a feature-length file at several dollars. SafeReel was built video-first.
curl -X POST https://api.safereel.ai/v1/videos \
-H "Authorization: Bearer sr_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: upload-91af23" \
-d '{"url": "https://cdn.example.com/uploads/91af23.mp4"}'
{ "id": "vid_a1b2c3d4", "status": "queued" }
Then either poll GET /v1/videos/{id} or receive a signed webhook when the job
finishes:
{
"id": "vid_a1b2c3d4",
"status": "done",
"verdict": "nsfw",
"billed_seconds": 1200
}
The URL can be presigned — an S3 or R2 GET URL works, so the object never has to be made public. Full reference: API docs.
Billing caps at 20 minutes per video. Analysis does not — the full duration is scanned either way.
| Video length | Analysed | You pay |
|---|---|---|
| 3 minutes | 3 min | €0.06 |
| 20 minutes | 20 min | €0.40 |
| 90 minutes | 90 min | €0.40 |
| 3 hours | 3 hours | €0.40 |
At the $0.10/minute that AWS Rekognition and Google Cloud Video Intelligence both publish for content/explicit detection, that 90-minute file costs $9.00. Working and sources: video moderation API pricing compared.
You pass a URL rather than uploading bytes. Three things follow:
SafeReel handles the awkward real-world cases too: fragmented MP4s, moov atoms
at the end of the file, and corrupt indexes that make naive frame extraction
fail.
On 1,089 production videos: 95.5% accuracy, 92.2% recall, 0.41% false positives. On human-reviewed labels: 96.1% recall and 0% false positives (n=139).
Those numbers come with a written method and its caveats — read the accuracy report before you trust them, including ours. The false positive rate is the number worth arguing about: it is the one your users experience as wrongly blocked uploads.
Stated up front so you can rule it out in a minute rather than an afternoon:
If you need a broad multi-class policy engine, a platform like Sightengine or Hive fits better — see SafeReel vs Sightengine and SafeReel vs Hive.
Image bytes exist only in request memory. Video frames are deleted within minutes of the verdict. What persists is the verdict, quota counters, and non-reversible content fingerprints — never your media, and never sent to third-party AI providers. Inference runs on GPU hardware we operate in the EU. Details: Trust & privacy.
Idempotency-Key header so retries never double-bill.RateLimit-Limit,
RateLimit-Remaining and RateLimit-Reset; a 429 tells you exactly how long
to wait via Retry-After.{"error": {"code", "message", "retry_after"}}. Branch
on code, never on the message text.The reliable video worker guide builds a production worker that handles every one of these, including the failure modes.
A free key needs no card and includes 100 video-minutes a month plus 1,000 image checks — enough to run your own back-catalogue through it and compare verdicts against your human reviewers, which is the only benchmark that matters.
Image checks can be tried with no signup at all in the playground.
pip install safereel · npm install @safereel/sdk ·
go get github.com/safereel/safereel-go