Recommended: NSFW Filter 2.0
For better results and a better experience, we recommend using NSFW Filter 2.0 for image moderation. See the linked documentation for its request parameters and integration details.
Analyze a single image for NSFW and special-care categories. Results are for reference only and may include false positives or false negatives. Adjust threshold_offset and strict_special_care to suit your project’s moderation requirements and desired strictness.
Developer API pricing
Provider: SeeAPI
USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.
Price: 0.01 credits/gen (≈ $0.00/gen)
Recommended: NSFW Filter 2.0
For better results and a better experience, we recommend using NSFW Filter 2.0 for image moderation. See the linked documentation for its request parameters and integration details.
/v1/inferencesIdentifies one logical inference request. Use a new value for each new task; reuse the same value and identical request body when retrying that task.
order-20260818-001Selects the NSFW Filter model. Send nsfw-filter.
nsfw-filternsfw-filternsfw-filterSelects single-image moderation. Send image-moderation.
image-moderationimage-moderationimage-moderationSelects the public execution provider. This endpoint requires seeapi explicitly, even though it is the default provider.
seeapiseeapiseeapiContains the image URL and optional detection settings. Send the parameters described below directly inside this object.
Provider parameters
seeapiDefault ProviderURL of the single image to analyze. The service must be able to download the image without your browser session or private credentials.
https://client.example.com/input.pngAdjusts the normal NSFW matching threshold. Zero uses the original threshold; higher values make normal NSFW detection less strict. This is a sensitivity setting, not a confidence score or probability.
0.02Controls whether special-care matches strengthen normal NSFW concept matching. true preserves the stricter special-care behavior. false still returns special-care labels but prevents them from strengthening normal NSFW matching.
trueOptional HTTPS endpoint on your server to receive the task completion notification. Omit it if your application polls task status.
https://client.example.com/webhooks/seeapiUnique task identifier. Preserve the complete value and use it to query this inference task.
task_xxxIdentifies the response as an inference task, not a media generation.
inferenceinferenceThe model that processed the request.
nsfw-filternsfw-filterThe image-moderation capability used for this task.
image-moderationimage-moderationThe public provider selected for the task.
seeapiseeapiTask execution state. queued or processing means the assessment is not yet ready. A later succeeded state means execution completed, not that the image passed moderation.
queuedprocessingprocessingResult placeholder: null when the task is accepted. Retrieve the completed JSON assessment through GET /v1/inferences/{task_id}; see Query a task for its structure and field meanings.
Identifies the result format as json.
jsonContains the overall flag and the category labels returned by the detector.
Overall detector flag. true means the detector flagged the image; false means it did not flag the image under the selected settings. Neither value is a definitive safety or legal determination.
Groups the detected labels into normal NSFW and special-care categories.
Normal NSFW labels detected for this image. An empty array means no labels in this group were reported for this run, not that all possible risks were excluded.
One detected NSFW category label. Treat labels as model output, not an exhaustive list of all unsafe content.
Special-care category labels detected for this image. An empty array means no special-care labels were reported. Labels can still be returned when strict_special_care is false; interpret them alongside result.data.flagged.
One special-care category label returned by the detector. A label is a model classification, not a verified fact about a person or image.
Failure information when the task is unsuccessful; null when no task error is reported. This is separate from a successful task returning flagged=true.
Machine-readable error identifier for handling failures.
Readable explanation of the task error.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Inference request could not be completed.
Replace task_xxx with the complete id returned when the inference task was created. Use the same API environment and API key.
⚠️ UseGET /v1/inferences/{task_id}for NSFW Filter tasks. Do not use/v1/generations/{task_id}; the generation task endpoint does not apply to this model.
export SEEAPI_API_BASE_URL='https://api.seeapi.com'
export SEEAPI_API_KEY='YOUR_API_KEY'
export SEEAPI_TASK_ID='task_xxx'
curl --request GET "$SEEAPI_API_BASE_URL/v1/inferences/$SEEAPI_TASK_ID" \
--header "Authorization: Bearer $SEEAPI_API_KEY"A successful lookup returns HTTP 200 with the current task state, even if processing has not finished. The example below shows a completed detection with no flagged content.
{
"id": "task_xxx",
"object": "inference",
"model": "nsfw-filter",
"endpoint": "image-moderation",
"provider": "seeapi",
"status": "succeeded",
"result": {
"type": "json",
"data": {
"flagged": false,
"categories": {
"nsfw": [],
"special_care": []
}
}
},
"error": null
}status: The task execution state. queued or processing means the result is not ready; continue polling with backoff. succeeded means detection completed, not that the image passed moderation.
result: The structured detection result. null means no result is available and must not be interpreted as a pass. result.type is json.
result.data.flagged: true means the image was flagged; false means it was not flagged under the selected settings.
result.data.categories.nsfw and result.data.categories.special_care: Detected labels. An empty array means no labels were reported in that category for this run.
error: Task failure details, including code and message; null when no task error is reported. A completed detection with flagged: true is not a task failure.
id, object, model, endpoint and provider: Identify the task and selected capability; their meanings are described in Responses.
const response = await fetch("https://api.seeapi.com/v1/inferences", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Idempotency-Key": "order-20260818-001",
"Content-Type": "application/json"
},
body: JSON.stringify({
"model": "nsfw-filter",
"endpoint": "image-moderation",
"provider": "seeapi",
"input": {
"image_url": "https://client.example.com/input.png",
"threshold_offset": 0.02,
"strict_special_care": true
},
"callback_url": "https://client.example.com/webhooks/seeapi"
})
});
const result = await response.json();{
"id": "task_xxx",
"object": "inference",
"model": "nsfw-filter",
"endpoint": "image-moderation",
"provider": "seeapi",
"status": "processing",
"result": null,
"error": null
}