SEEAPISEEAPI
Developer CenterDocs
Get API Key
  • Getting Started
  • Authentication
  • List Model Prices
  • Create a Generation
  • Get Task Details
Image Models
Alibaba
Black Forest Labs
ByteDance
Google
Grok
OpenAI
SeeAPI
Video Models
Alibaba
ByteDance
Google
Grok
Kling
Lightricks
MiniMax
PixVerse
Runway
SeeAPI
Vidu
Music Models
Text Models

Policies

  • Data Handling & Privacy
  • Terms of Service
  • Privacy Policy
  • Commercial Use Policy
www.seeapi.com

One AI API for every leading model. Create images, videos, music, and multimodal AI assets online, or build with one unified API.

Developers
  • AI Models
  • API Pricing
  • AI Integrations
  • API Keys
  • Documentation
Support
  • Pricing
  • [email protected]
Legal
  • Privacy Policy
  • Refund Policy
  • Terms & Conditions

Copyright 2026 © SeeAPI. All rights reserved.

GROWCRAFT PTE. LTD.

·5 RAFFLES PLACE, #06-00, RAFFLES PLACE MRT STATION, SINGAPORE 048618

SeeAPI/
NSFW Filter
ImageImage 2.0VideoText

NSFW Filter · Image Moderation

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.

Related Resources

Market Overview

Explore all available models

Credits & Billing

View credit balance, plans, and billing activity

Usage

Review API usage and credit consumption

Request

POST/v1/inferences
AuthorizationSend your API key in the Authorization header using the Bearer scheme.Authorization: Bearer ****************

Header Params

stringrequired

Identifies one logical inference request. Use a new value for each new task; reuse the same value and identical request body when retrying that task.

max length: 255
Example:
order-20260818-001

Body Params

application/json
stringrequired

Selects the NSFW Filter model. Send nsfw-filter.

Allowed:nsfw-filter
Default:
nsfw-filter
Example:
nsfw-filter
stringrequired

Selects single-image moderation. Send image-moderation.

Allowed:image-moderation
Default:
image-moderation
Example:
image-moderation
stringrequired

Selects the public execution provider. This endpoint requires seeapi explicitly, even though it is the default provider.

Allowed:seeapi
Default:
seeapi
Example:
seeapi
objectrequired

Contains the image URL and optional detection settings. Send the parameters described below directly inside this object.

Provider parameters

SeeAPIseeapiDefault Provider
string <uri>required

URL of the single image to analyze. The service must be able to download the image without your browser session or private credentials.

  • Maximum image size: 20 MB (20,971,520 bytes).
  • Replace the example URL with an accessible image URL. Keep expiring URLs valid until processing completes.
Example:
https://client.example.com/input.png
numberoptional

Adjusts 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.

  • Step size: 0.01. The value must be a multiple of 0.01 within the allowed range; 0.02 and 0.03 are valid, while 0.025 is not.
  • Increasing the value can reduce flags but may increase false negatives. Special-care handling is controlled separately.
min: 0max: 0.1
Default:
0.02
booleanoptional

Controls 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.

  • false does not disable special-care label reporting and does not guarantee that an image will pass.
Default:
true
string <uri>optional

Optional HTTPS endpoint on your server to receive the task completion notification. Omit it if your application polls task status.

  • Validate webhook authenticity before trusting a notification. Do not treat receipt of a notification alone as a successful detection.
max length: 2048
Example:
https://client.example.com/webhooks/seeapi

Responses

202Task accepted for asynchronous processing. This HTTP 202 response contains the task identifier and initial state, not a completed detection result.
Bodyapplication/json
  • In the creation response, result is null. The nested result fields shown in this reference describe the completed task returned by GET /v1/inferences/{task_id}; they are not detection data returned with HTTP 202. See Query a task for the HTTP 200 example.
stringrequired

Unique task identifier. Preserve the complete value and use it to query this inference task.

Example:
task_xxx
stringrequired

Identifies the response as an inference task, not a media generation.

Allowed:inference
Example:
inference
stringrequired

The model that processed the request.

Allowed:nsfw-filter
Example:
nsfw-filter
stringrequired

The image-moderation capability used for this task.

Allowed:image-moderation
Example:
image-moderation
stringrequired

The public provider selected for the task.

Allowed:seeapi
Example:
seeapi
stringrequired

Task 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.

Allowed:queuedprocessing
Example:
processing
object | nullrequired

Result 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.

stringrequired

Identifies the result format as json.

Allowed:json
objectrequired

Contains the overall flag and the category labels returned by the detector.

booleanrequired

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.

objectrequired

Groups the detected labels into normal NSFW and special-care categories.

arrayrequired

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.

stringrequired

One detected NSFW category label. Treat labels as model output, not an exhaustive list of all unsafe content.

arrayrequired

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.

stringrequired

One special-care category label returned by the detector. A label is a model classification, not a verified fact about a person or image.

object | nullrequired

Failure information when the task is unsuccessful; null when no task error is reported. This is separate from a successful task returning flagged=true.

stringrequired

Machine-readable error identifier for handling failures.

stringrequired

Readable explanation of the task error.

400

Inference request could not be completed.

401

Inference request could not be completed.

402

Inference request could not be completed.

403

Inference request could not be completed.

404

Inference request could not be completed.

409

Inference request could not be completed.

422

Inference request could not be completed.

429

Inference request could not be completed.

503

Inference request could not be completed.

Query a task

Replace task_xxx with the complete id returned when the inference task was created. Use the same API environment and API key.

⚠️ Use GET /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"

Query response — 200 OK

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
}

Response fields

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.

Code Examples
Request
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();
ResponseHTTP 202
{
  "id": "task_xxx",
  "object": "inference",
  "model": "nsfw-filter",
  "endpoint": "image-moderation",
  "provider": "seeapi",
  "status": "processing",
  "result": null,
  "error": null
}
PreviousGPT-4o Image · Image EditNextNSFW Filter 2.0 · Image Moderation
Request
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();
ResponseHTTP 202
{
  "id": "task_xxx",
  "object": "inference",
  "model": "nsfw-filter",
  "endpoint": "image-moderation",
  "provider": "seeapi",
  "status": "processing",
  "result": null,
  "error": null
}