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
Text Models
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.

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
ImageVideoText

Text NSFW Filter · Text Moderation

Check text for sexual content, violence, hate, harassment, and self-harm with configurable categories and a shared threshold. Results are contextual assessments and may include false positives or false negatives.

Developer API pricing

Provider: SeeAPI

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

Text moderation

Input tokens
16.8 credits / 1M tokens≈ $0.063 / 1M tokens
Output tokens
0 credits / 1M tokens≈ $0.00 / 1M tokens

Credits are charged based on actual usage. View the final credit usage in your results.

Query a task

Use the complete id returned by the creation request and the same API environment and API key.

Query GET /v1/inferences/{task_id}, not the generation task endpoint.

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

This completed response is based on an actual successful task with all seven categories checked. The task ID is a placeholder. Scores, token counts, and consumed credits are sample values for this task, not fixed values or a per-request price.

{
  "id": "task_xxx",
  "object": "inference",
  "model": "text-nsfw-filter",
  "endpoint": "text-moderation",
  "provider": "seeapi",
  "status": "succeeded",
  "consumed_credits": 0.022,
  "input_tokens": 1300,
  "output_tokens": 129,
  "result": {
    "type": "json",
    "data": {
      "flagged": false,
      "threshold": 0.5,
      "categories": {
        "hate": {
          "score": 0.03,
          "flagged": false
        },
        "violence": {
          "score": 0.04,
          "flagged": false
        },
        "self_harm": {
          "score": 0.03,
          "flagged": false
        },
        "harassment": {
          "score": 0.04,
          "flagged": false
        },
        "sexual_minors": {
          "score": 0.03,
          "flagged": false
        },
        "sexual_explicit": {
          "score": 0.03,
          "flagged": false
        },
        "sexual_suggestive": {
          "score": 0.07,
          "flagged": false
        }
      }
    }
  },
  "error": null
}

Response fields

status describes task execution. For queued or processing, query again with backoff. succeeded does not mean the content passed moderation.

result is the structured assessment. A null result is not a clean assessment.

result.data.flagged is the overall verdict for the selected categories and threshold. A flagged assessment is not a failed task.

result.data.threshold records the applied threshold. Lower values are stricter.

result.data.categories contains only the categories selected for this request. Each entry provides score and flagged. Unreturned categories must not be treated as checked or safe.

Display the returned verdicts without recomputing them. Results can contain errors and are not definitive safety determinations.

error contains task failure details when applicable; inspect code and message separately from the moderation verdict.

Credits and token usage

consumed_credits: SeeAPI credits consumed by this completed task. The example consumed 0.022 credits; this is not a fixed price for every request.

input_tokens: Input token usage reported for the task. The example reports 1300 input tokens. Tokens are not the same as characters.

output_tokens: Output token usage reported for the task. The example reports 129 output tokens.

These three fields are at the response top level, alongside status and result, not inside result.data. Use the returned values for usage display; do not infer token counts from text length or copy this example’s credit amount as a fixed charge.

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 key for this inference request. Reuse the same key only when retrying the same request body.

max length: 255
Example:
order-20260818-001

Body Params

application/json
stringrequired

Use text-nsfw-filter for this model.

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

Use text-moderation for text moderation.

Allowed:text-moderation
Default:
text-moderation
Example:
text-moderation
stringrequired

Use seeapi, the public provider ID supported by this endpoint.

Allowed:seeapi
Default:
seeapi
Example:
seeapi
objectrequired

Place text, threshold, and categories directly inside input.

Provider parameters

SeeAPIseeapiDefault Provider
stringrequired

The original text to check, up to 20,000 characters. Supply the content itself, not instructions asking the model to generate text.

  • Moderation considers context; a sensitive word alone does not necessarily indicate harmful content.
  • Neutral reporting, educational discussion, prevention, counterspeech, and sincere requests for help should be evaluated in context. Results are not guaranteed to be error-free.
max length: 20000
Example:
The community workshop explains how to recognize and prevent online harassment.
numberoptional

The shared decision threshold for the selected categories. Defaults to 0.3; accepted range: 0.01–0.99. Lower values are stricter and make content more likely to be flagged.

min: 0.01max: 0.99
Default:
0.3
arrayoptional

Categories to check. Omit this field to check all supported categories. To check a subset, supply one or more category IDs.

  • An empty array is not valid.
  • sexual_explicit: explicit sexual content; sexual_suggestive: sexually suggestive content; sexual_minors: sexual content involving minors.
  • violence: violence; hate: hate; harassment: harassment; self_harm: self-harm.
  • Only selected categories appear in the result; an omitted category has not been evaluated by this task.
Allowed:sexual_explicitsexual_suggestivesexual_minorsviolencehateharassmentself_harmmin items: 1
Default:
["sexual_explicit","sexual_suggestive","sexual_minors","violence","hate","harassment","self_harm"]
Example:
["sexual_explicit","sexual_suggestive"]
string <uri>optional

Optional HTTPS endpoint for terminal task notifications. Omit it when polling. Verify notification authenticity and inspect the task outcome before using the result.

max length: 2048
Example:
https://client.example.com/webhooks/seeapi

Responses

202Inference accepted for processing. Use the returned task id to retrieve the assessment.
Bodyapplication/json
  • The HTTP 202 creation example has result=null. The nested result fields describe the completed assessment returned by GET /v1/inferences/{task_id}. See Query a task for the HTTP 200 example.
  • Task execution success and content moderation are separate: succeeded can have flagged=true.
stringrequired
Example:
task_xxx
stringrequired
Allowed:inference
Example:
inference
stringrequired
Allowed:text-nsfw-filter
Example:
text-nsfw-filter
stringrequired
Allowed:text-moderation
Example:
text-moderation
stringrequired
Allowed:seeapi
Example:
seeapi
stringrequired
Allowed:queuedprocessingsucceededfailedcanceledrefundedexpired
Example:
processing
numberoptional

Final credit usage, including any amount added to the outstanding balance. Available after settlement.

Example:
0.022
integeroptional

Input token usage when available.

Example:
1300
integeroptional

Output token usage when available.

Example:
129
object | nullrequired

The structured moderation result when available; null while no result is available.

stringrequired
Allowed:json
objectrequired
booleanrequired

Whether any category meets the selected threshold. True means the content did not pass this check; this is not a task execution failure.

numberrequired

The threshold applied to every category. Lower values are stricter.

objectrequired
objectoptional

One entry for each category selected for this task. Category IDs and evaluation rules are configured by the provider route; unselected categories are omitted.

numberrequired
booleanrequired
object | nullrequired

Inference failure details; null unless the inference reaches an unsuccessful terminal status.

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.

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": "text-nsfw-filter",
  "endpoint": "text-moderation",
  "provider": "seeapi",
  "input": {
    "text": "The community workshop explains how to recognize and prevent online harassment.",
    "threshold": 0.3,
    "categories": [
      "sexual_explicit",
      "sexual_suggestive"
    ]
  },
  "callback_url": "https://client.example.com/webhooks/seeapi"
})
});

const result = await response.json();
ResponseHTTP 202
{
  "id": "task_xxx",
  "object": "inference",
  "model": "text-nsfw-filter",
  "endpoint": "text-moderation",
  "provider": "seeapi",
  "status": "processing",
  "result": null,
  "error": null
}
PreviousNSFW Filter · Image ModerationNextWan 3.0 Prime · Text to Video
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": "text-nsfw-filter",
  "endpoint": "text-moderation",
  "provider": "seeapi",
  "input": {
    "text": "The community workshop explains how to recognize and prevent online harassment.",
    "threshold": 0.3,
    "categories": [
      "sexual_explicit",
      "sexual_suggestive"
    ]
  },
  "callback_url": "https://client.example.com/webhooks/seeapi"
})
});

const result = await response.json();
ResponseHTTP 202
{
  "id": "task_xxx",
  "object": "inference",
  "model": "text-nsfw-filter",
  "endpoint": "text-moderation",
  "provider": "seeapi",
  "status": "processing",
  "result": null,
  "error": null
}