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.

POST /image/rate
sfwnsfw_sfw

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. One image. Typed answers.

Async by design — create a task, then poll or wait for the result. 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({
  url: "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" },
  ],
});

console.log(result.level);
// "safe" | "mature" | "explicit"
url per request
1
url per request
always — poll the task or use a webhook
async
always — poll the task or use a webhook
returns taskId immediately
201
returns taskId immediately

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, then describe your own levels when you need them.