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 2.0 · Image Moderation

Analyze one image for NSFW and special-care categories.Submit an HTTPS URL or base64 data URL and retrieve theresult asynchronously. Adjust threshold and strict_special_care to suit your moderation requirements.

Developer API pricing

Provider: SeeAPI

USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.

Price: 0.01 credits/gen (≈ $0.00/gen)

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

A unique, stable key for each image moderation request. Reuse it only when retrying the identical request body. A replay returns the existing task without an additional charge.

max length: 255
Example:
nsfw-check-001

Body Params

application/json
stringrequired

The model ID shown in the selected model's API documentation.

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

Image Moderation. Use the Endpoint ID shown in this model's API documentation.

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

Required public Provider ID for this inference Endpoint.

Allowed:seeapi
Default:
seeapi
Example:
seeapi
objectrequired

One image and its moderation options. Place image_url, threshold, and strict_special_care directly in this object.

Provider parameters

SeeAPIseeapiDefault Provider
stringrequired

One static PNG or JPEG image, supplied as an accessible HTTPS URL or a base64 data URL (data:image/png;base64,... or data:image/jpeg;base64,...). Send a single string, not an array or bare base64.

  • Input limits: PNG/JPEG only; file size up to 16 MiB (16,777,216 bytes); width and height each 256–8192 pixels; total pixels (width × height) 78,400–32,000,000. All limits must be met. For base64, file size is measured after decoding.
  • Recommended image size: width and height each 256–1568 pixels, with 78,400–2,458,624 total pixels. Both requirements must be met.
  • Images larger than the recommended range may take longer for the model to process, time out, or be rejected outright. For faster, more reliable checks, resize your images to the recommended range before submitting them.
Example:
https://example.com/image.jpg
numberoptional

Detection threshold, default 0.5. Accepts finite values from 0.01 to 0.99; lower values make detection stricter.

min: 0.01max: 0.99
Default:
0.5
Example:
0.5
booleanoptional

When true (default), special-care matches also set flagged to true. When false, special-care labels are still returned but do not independently set flagged.

Default:
true
Example:
true
string <uri>optional

Optional HTTPS URL on your server to receive a notification when the task succeeds or fails. Omit this field if you poll task status instead.

  • Verify webhook signatures, handle duplicate notifications, and return HTTP 2xx to acknowledge receipt.
min length: 1max length: 2048
Example:
https://client.example.com/webhooks/seeapi

Responses

202Inference accepted. Poll GET /v1/inferences/{id}; Location identifies the task and Retry-After is 2 seconds. Image processing failures appear in the task error.
Bodyapplication/json
  • HTTP 202 means the task was accepted: status is processing, result is null, and consumed_credits is 0.
  • Query GET /v1/inferences/{id} to retrieve the result. HTTP 200 means the lookup succeeded; check status to determine whether processing is complete. On succeeded, read result.data; on failed, inspect error. The nested result fields below describe a completed check.
stringrequired
Example:
task_xxx
stringrequired
Allowed:inference
Example:
inference
stringrequired
Allowed:nsfw-filter-2
Example:
nsfw-filter-2
stringrequired
Allowed:image-moderation
Example:
image-moderation
stringrequired
Allowed:seeapi
Example:
seeapi
stringrequired

Task execution state. processing means the result is not ready. succeeded means the check completed, not that the image passed moderation.

Allowed:processing
Example:
processing
numberrequired

Recorded credit consumption: 0 when first accepted, 0.2 after a successful check, and 0 after failure/refund. This field is always returned and does not represent the amount reserved at submission.

Example:
0
object | nullrequired

null until the task succeeds; do not interpret null as a pass. Retrieve the completed JSON result through GET /v1/inferences/{id}.

stringrequired
Allowed:json
objectrequired
booleanrequired

true when nsfw is non-empty, or when strict_special_care is true and special_care is non-empty. A flagged image is not a task failure.

objectrequired
arrayrequired

Detected adult-content labels: nudity (visible nudity), sexual_activity (explicit sexual activity), and sexual_suggestive (sexually suggestive content). Medical, breastfeeding, and artistic contexts do not automatically exempt visible nudity.

stringrequired
Allowed:nuditysexual_activitysexual_suggestive
arrayrequired

May contain sexual_minors for suspected sexualized content involving minors. Ordinary child photographs alone do not trigger this label.

stringrequired
Allowed:sexual_minors
object | nullrequired

Task failure details. Image download or preprocessing can fail after HTTP 202 acceptance; inspect code and message. null when there is no task failure.

stringrequired
stringrequired
200Successful terminal idempotent replay. Returns the saved result without another image check or charge.
Bodyapplication/json
stringrequired
Example:
task_xxx
stringrequired
Allowed:inference
Example:
inference
stringrequired
Allowed:nsfw-filter-2
Example:
nsfw-filter-2
stringrequired
Allowed:image-moderation
Example:
image-moderation
stringrequired
Allowed:seeapi
Example:
seeapi
stringrequired

Task execution state. processing means the result is not ready. succeeded means the check completed, not that the image passed moderation.

Allowed:processingsucceededfailedcanceledrefundedexpired
Example:
succeeded
numberrequired

Recorded credit consumption: 0 when first accepted, 0.2 after a successful check, and 0 after failure/refund. This field is always returned and does not represent the amount reserved at submission.

Example:
0.2
object | nullrequired

null until the task succeeds; do not interpret null as a pass. Retrieve the completed JSON result through GET /v1/inferences/{id}.

stringrequired
Allowed:json
objectrequired
booleanrequired

true when nsfw is non-empty, or when strict_special_care is true and special_care is non-empty. A flagged image is not a task failure.

objectrequired
arrayrequired

Detected adult-content labels: nudity (visible nudity), sexual_activity (explicit sexual activity), and sexual_suggestive (sexually suggestive content). Medical, breastfeeding, and artistic contexts do not automatically exempt visible nudity.

stringrequired
Allowed:nuditysexual_activitysexual_suggestive
arrayrequired

May contain sexual_minors for suspected sexualized content involving minors. Ordinary child photographs alone do not trigger this label.

stringrequired
Allowed:sexual_minors
object | nullrequired

Task failure details. Image download or preprocessing can fail after HTTP 202 acceptance; inspect code and message. null when there is no task failure.

stringrequired
stringrequired
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 an inference task

Use GET /v1/inferences/{id} for this model. Replace task_xxx with the complete task ID returned by the creation request, and use the same API environment and API key.

curl --request GET 'https://api.seeapi.com/v1/inferences/task_xxx' \
  --header 'Authorization: Bearer YOUR_API_KEY'

A successful lookup returns HTTP 200 with the current task state. While status is processing, result is null; continue polling with backoff and respect Retry-After when present. When succeeded, read result.data. For a failed task, inspect error. Alternatively, receive a terminal event through callback_url.

Code Examples
Request
const response = await fetch("https://api.seeapi.com/v1/inferences", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "nsfw-check-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "nsfw-filter-2",
  "endpoint": "image-moderation",
  "provider": "seeapi",
  "input": {
    "image_url": "https://example.com/image.jpg",
    "threshold": 0.5,
    "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-2",
  "endpoint": "image-moderation",
  "provider": "seeapi",
  "status": "processing",
  "consumed_credits": 0,
  "result": null,
  "error": null
}
PreviousNSFW Filter · Image ModerationNextAI Music M1 · Music Generation
Request
const response = await fetch("https://api.seeapi.com/v1/inferences", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "nsfw-check-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "nsfw-filter-2",
  "endpoint": "image-moderation",
  "provider": "seeapi",
  "input": {
    "image_url": "https://example.com/image.jpg",
    "threshold": 0.5,
    "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-2",
  "endpoint": "image-moderation",
  "provider": "seeapi",
  "status": "processing",
  "consumed_credits": 0,
  "result": null,
  "error": null
}