content rating
Content rating,
in your words.
Point one endpoint at any image and get an answer in a vocabulary you define — sfw / nsfw out of the box, or levels described in plain language. No moderation model to host, no thresholds to tune.

01your vocabulary
Describe the levels.
That's the whole integration.
A rating mode is just words. The default answers sfw or nsfw. Custom mode takes two to seven levels, each described in a plain sentence — the classifier reads your descriptions and answers with one of your values.
No taxonomy to learn, no confidence scores to interpret. The response is typed to your vocabulary, not ours.
Zero configuration. One string.
- sfwSafe for work — no explicit content
- nsfwNudity, violence, or other explicit content
{ "mode": "nsfw_sfw" }02the call
One call. Ten images. Typed answers.
Synchronous by default — send URLs, get levels back in the same response. The SDK narrows level to the values you defined, so the compiler knows your vocabulary too.
import { Mynth } from "@mynthio/sdk";
const mynth = new Mynth({ apiKey: "mak_…" });
const result = await mynth.image.rate({
urls: ["https://cdn.acme.dev/uploads/01.png"],
mode: "custom",
levels: [
{ value: "safe", description: "No adult themes" },
{ value: "mature", description: "Adult themes, no nudity" },
{ value: "explicit", description: "Nudity or graphic content" },
],
});
result.getRatings();
// [{ status: "success", url: "…", level: "safe" }]
// level is typed: "safe" | "mature" | "explicit"- urls per request
- 1–10
- urls per request
- by default — the answer is in the response
- sync
- by default — the answer is in the response
- webhook + polling when you opt out of sync
- 202
- webhook + polling when you opt out of sync
03built in
Generating anyway?
It's one flag.
The exact same classifier runs inside image generation. Pass rating: true — or any mode from above — and every image arrives with its level in the same task. Logically it's generate-then-rate; the flag just removes the second call.
currently freeRating inside generation costs nothing — only the standalone endpoint is billed.
const task = await mynth.image.generate({
prompt: "editorial portrait, golden hour",
rating: true,
});
const [image] = task.getImages();
image.rating;
// { status: "success", level: "sfw" }$0.0002
per image, standalone
5,000
ratings per dollar
$0
inside generation, currently free
Billed only for successful ratings — failed images cost nothing.
Classification, without the infrastructure.
One endpoint, your vocabulary, typed answers. Start with the default mode and a free credit — describe your own levels when you need them.

