Skip to main content
Endpoint:
Authentication: API key or OAuth access token required. Public Access Tokens are not accepted. The endpoint is async only. It creates an image.rate task and returns 201 with a taskId. Poll task endpoints or use webhooks to get the rating result.

Request body

Minimal request (default nsfw_sfw scale):

Fields

levels items

Each item in the levels array must have: Constraints for the levels array:
  • Minimum 2 items
  • Maximum 7 items
How the rating model uses levels The description of each level is passed directly to a vision language model (LLM), which selects the best match for the image. Because LLM inference is non-deterministic, results for borderline images may occasionally vary between requests. This endpoint is optimised for speed and accuracy at a high level of abstraction. Broad, clearly separated scales such as safe / suggestive / explicit or safe-for-children / safe-for-adults / nsfw perform reliably. Scales that depend on subtle visual distinctions — for example distinguishing between artistic and explicit nudity — are outside the intended scope and may produce inconsistent results. Test thoroughly before using such scales in production.

Response body

201 — task created

When the task completes, GET /tasks/:id (or the webhook payload) includes:
When using the default scale, level is one of sfw or nsfw. When using custom levels, level is the value of the chosen level. If rating fails, the task status is failed with errors: [{ code, message? }]. Common codes: FETCH_FAILED, RATING_FAILED, UNKNOWN_ERROR. See Task error codes.

Limits

Pricing

Each request is priced at $0.0002. That amount is reserved from your account balance before processing begins. You are charged only when the task completes successfully — failed tasks release the reserve. If your balance is insufficient, the request returns 422 INSUFFICIENT_BALANCE.

Error responses

See Errors and Limits for the full error reference.