Video moderation API, sampled at 1 frame/sec.

Catch explicit content, violence, hate symbols, and scams in every uploaded or recorded video at scale.

Blurred for review
Violence · 0.91 · 0:12
eBaySupercellPolymarketKalshiStravaRobinhoodStockXPhantom

Running on video at scale.

Read the benchmark
  • 33M+video minutes/month
  • 1 fpsdefault frame sample rate
  • ~300msto score each frame
party-clip-0418.mp4Removed · above threshold0:32 / 0:32 · 1 fps sampling
Alcohol · 0.91 · 0:12
Frame scores · Alcohol
Worst frame so far0.91 at 0:12
Your threshold≥ 0.85

Every frame that matters, scored.

Uploaded videos are sampled into keyframes, each frame is scored by image AI and optionally against OCR as well, and the video is rated by its worst frame.

01Sample keyframesStream samples 1 frame per second by default.
02Score each frameEvery keyframe runs through image moderation.
0:000.02
0:040.03
0:080.11
0:120.91
0:160.38
0:200.06
Only the frame at 0:12 scores high (0.91).
03Take the worst scoreOne bad frame is enough to act on the whole video.
Highest frame0:12 · 0.91
Video scoreViolence 0.91
Your threshold≥ 0.85
Removed· above your threshold

Your rules decide what happens.

Remove, flag, or send to review, and ban users after a set number of violations.

Violent uploadsEnabled
WHENWorst frame : Violence ≥ 0.85
ANDViolations ≥ 3
THENBan userafter 3rd violation

Jump to the frame that triggered the flag.

Each flagged video opens at the exact keyframe that crossed your threshold, with every sampled frame marked on the timeline, the rule that fired, and the user's history alongside.

Explore the dashboard
Blurred for review
Violence · 0.91
0:12 / 0:48
upload-3301.mp4
Rule triggeredWorst frame : Violence ≥ 0.85 -> Remove
Keyframe0:12 · frame 4 of 12Jump to 0:12
User history2 prior removals · account 11 days old
RemoveKeep

Moderate any video, from any platform.

Send any video file through one API call, from your own app or storage.

Read the docs
const res = await client.moderation.check({
  entity_type: "upload",
  entity_id: "video-3301",
  entity_creator_id: "user-412",
  moderation_payload: {
    videos: ["https://cdn.app.com/run-3301.mp4"],
  },
  config_key: "uploads",
});

// res.recommended_action -> "flag"

Stream moderation FAQs.

See it on your own video.

Run a sample of your uploads through Stream at no cost.