Use case: Screen user-generated images before they go live
Platforms that accept user-uploaded images — marketplaces, community forums, review sites, social apps — face a moderation problem that text filters can't touch: a stolen product photo, a duplicate listing image reused across ten accounts, or content that violates brand and content guidelines but contains no flaggable text at all. Webanto's moderation use case screens uploads before they go live using two models together. DINOv3, called through POST /api/v1/image-embeddings, turns each upload into a 1280-dimensional, L2-normalized vector you can compare against known reference images to catch duplicates and near-duplicates cheaply — the endpoint takes image urls or raw image data directly, with no model field to set, since it is a dedicated image-embedding endpoint. Qwen, Webanto's self-hosted multimodal chat model, is called through POST /api/v1/chat with model qwen and can look directly at an image alongside a policy prompt to judge whether it's on-brand, appropriate, and consistent with your upload guidelines — something a vector similarity score cannot do on its own.
Duplicate and near-duplicate uploads caught cheaply via vector similarity before they reach a human reviewer, reducing the volume of genuinely novel content that needs manual eyes.
A written, inspectable judgment from the multimodal model for each borderline upload — not just a pass or fail score, but a reason you can show a reviewer or an appealing user.
Screening that runs before content goes live rather than after, catching a meaningful share of policy violations pre-publish instead of relying entirely on user reports.
A review queue narrowed to only the uploads the model flagged as uncertain or violating, instead of a reviewer having to look at every single upload manually.
Generate a Webanto API key under Settings > API and store it server-side as WEBANTO_API_KEY — this pipeline runs on your upload backend, never in the client.
Build a small reference set of known-bad or previously flagged images (stolen listing photos, already-banned content) and embed each one via POST https://api.webanto.com/api/v1/image-embeddings, passing image urls or raw image data — the endpoint is DINOv3-only, so no model field is needed. Batch up to 60 images per request and keep any base64-encoded body under roughly 4.5MB; store the resulting 1280-dimensional vectors in your database or a vector index.
On every new upload, generate its DINOv3 embedding the same way (the same 60-image and ~4.5MB body limits apply) and compare it against the reference set using cosine similarity — a high match is an automatic duplicate flag, no chat call needed.
For uploads that pass the duplicate check, send the image to POST https://api.webanto.com/api/v1/chat with model qwen and a policy prompt describing what's disallowed — off-brand imagery, graphic content, unrelated products, unusable or low-quality photos — and ask for a structured verdict plus a short reason.
Work out the cost split: image embeddings are billed at 20 per credit, so screening 50,000 uploads a month for duplicates costs roughly 50,000 / 20 = 2,500 credits; the multimodal chat check runs closer to 2,000 tokens per credit, so budget separately for the smaller share of uploads that need the full policy judgment.
Route anything the model flags as violating or uncertain to a human moderation queue rather than auto-rejecting — treat the model's verdict as a triage signal, not a final decision.
Log every automated verdict alongside the human reviewer's final call so you can periodically check the model's flag rate against actual moderation outcomes and tighten the policy prompt if it's over- or under-flagging.
It shouldn't be set up that way. Both DINOv3 similarity and the Qwen policy judgment are probabilistic — they will misclassify some uploads, and a wrongly auto-rejected upload from a legitimate user is a real cost to your platform's trust. Use the models to triage — auto-clear the obvious, flag the uncertain and the clearly-violating for a human — rather than letting either model make a final, unappealable rejection decision on its own.
They solve different problems. DINOv3 embeddings are cheap and fast at visual similarity — good for catching duplicates and near-duplicates at scale — but a similarity score only tells you how visually close an upload is to something you've already seen, not what's actually in the image or whether it violates a written policy. Qwen can read an image against a specific policy prompt and explain its reasoning, but it costs more per call, so running it on every upload when most are unique and on-policy wastes budget. Using DINOv3 as a cheap first pass and Qwen as the judgment step on what's left keeps both accuracy and cost in check.
DINOv3 embeddings are good at catching exact and near-exact duplicates — the same photo, cropped, recompressed, or lightly filtered — because visually similar images produce similar vectors. It will not catch two different photos of the same physical stolen item taken from different angles; that's a semantically-similar-but-visually-distinct case better handled by the Qwen policy check, or by a human reviewer who recognises the pattern.
Image embeddings are billed at 20 per credit, so even a busy platform screening 100,000 uploads a month for duplicates spends roughly 5,000 credits on that step alone. The multimodal chat check is comparatively more expensive per call — budget it for the smaller share of uploads that clear the duplicate check but still need a policy judgment, not for every single upload.
No, and it shouldn't be pitched that way internally. It changes what the team spends its time on — instead of eyeballing every upload, reviewers work a queue of the uploads the models flagged as duplicate, uncertain, or violating. For a high-upload-volume platform that's a substantial reduction in raw review volume, but humans stay the decision-makers on anything the model doesn't confidently clear.
Shoppers who spot a product in the wild, on someone else's feed, or on a competitor's site rarely know the right keywords to find it in your catalogue. Visual search closes that gap: a shopper uploads
Large media libraries accumulate redundancy fast — the same product shot re-exported at a different crop, a stock photo uploaded twice under different filenames, a banner re-saved at a lower compressi
Reverse image search answers a narrower question than catalogue browsing: given one photo someone just handed you — a screenshot, a competitor's product shot, a customer's snapshot of a damaged item —
Start a 14-day free trial on any paid plan. No credit card required.