const res = await client.moderation.check({
entity_type: "listing_photo",
entity_id: "photo-8231",
entity_creator_id: "user-412",
moderation_payload: {
images: ["https://cdn.app.com/8231.jpg"],
},
config_key: "marketplace",
});
// res.recommended_action -> "flag"Image moderation API, scored in 300ms.
Every listing photo, profile picture, and upload scored against your policy without slowing the sender down.









Moderating user-generated content at scale.
- 2B+images moderated/month
- 40msAPI latency for image
- 100%recall on extreme violence, gore and hate symbols
Kept
OCR · Scam
Kept
Kept
Kept
OCR · Platform bypass
Explicit, violent, and unsafe images, with thresholds you set.
Set a confidence threshold per category, so you decide what gets removed and what goes to review.
Catch the scam hidden in the screenshot.
OCR reads text inside images in 50+ languages, such as phone numbers, payment handles, and scam offers, and runs it through your text policy. OCR hits are labeled separately in the queue.

Stop the same image from coming back.
Duplicate detection matches identical images by content, not URL, so re-uploads and spam waves get caught.


A review queue built for trust & safety teams.
Flagged images land in a dedicated media queue with user history, bulk actions, and an audit log.






Moderate any image, from any platform.
Send any image to the Check or Analyze API, by URL or raw bytes: listing photos, profile pictures, and user uploads.
Stream moderation FAQs.
More content types, same policy.
Send us a sample of your flagged images.
See how Stream scores them against your current tool, at no cost.
