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"Video moderation API, sampled at 1 frame/sec.
Catch explicit content, violence, hate symbols, and scams in every uploaded or recorded video at scale.












Running on video at scale.
- 33M+video minutes/month
- 1 fpsdefault frame sample rate
- ~300msto score each frame

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.






Your rules decide what happens.
Remove, flag, or send to review, and ban users after a set number of violations.
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.

Moderate any video, from any platform.
Send any video file through one API call, from your own app or storage.
Stream moderation FAQs.
More content types, same policy.
See it on your own video.
Run a sample of your uploads through Stream at no cost.
