← Docs
Moderations
Use the moderation API to identify policy risk in user input, uploaded images, or pre-generation workflows. The interface follows the OpenAI Moderations shape.
POST /v1/moderations
Classify text and image inputs for content risk. Returns a flagged boolean, categories, and confidence scores per input. Accepts one or more inputs per request.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| input | string | array | Yes | Content to moderate. Can be plain strings, text objects {type:"text", text:"..."}, image URL objects {type:"image_url", image_url: {url:"..."}}, or base64 image objects {type:"input_image", input_image: {data:"..."}}. Arrays supported for batch. |
| model | string | No | sealink-moderation-001 (default) |
| user | string | No | End-user identifier for monitoring and abuse detection |
Response Format
| Field | Type | Description |
|---|---|---|
| id | string | Request ID |
| model | string | Model used |
| results | array | Array of result objects, one per input |
| results[].flagged | boolean | Whether content violates policy |
| results[].categories | object | Per-category violation flags (boolean) |
| results[].category_scores | object | Per-category confidence scores (0-1) |
Moderation Categories
harassment
harassment/threatening
hate
hate/threatening
self-harm
self-harm/intent
self-harm/instructions
sexual
sexual/minors
violence
violence/graphic
illicit
illicit/violent
cURL — Single Text
# Single text inputcurl https://test.sealink.io/v1/moderations \-H "Authorization: Bearer <your-sealink-key>" \-H "Content-Type: application/json" \-d '{"input": "I want to learn about AI safety.","model": "sealink-moderation-001"}'
cURL — Batch
# Batch: array of strings or content objectscurl https://test.sealink.io/v1/moderations \-H "Authorization: Bearer <your-sealink-key>" \-H "Content-Type: application/json" \-d '{"input": ["Hello, how can I help you today?",{"type": "text", "text": "Some content to check"},{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}}],"model": "sealink-moderation-001"}'
cURL — Base64 Image
# Base64 image inputcurl https://test.sealink.io/v1/moderations \-H "Authorization: Bearer <your-sealink-key>" \-H "Content-Type: application/json" \-d '{"input": [{"type": "input_image", "input_image": {"data": "iVBORw0KGgo..."}}],"model": "sealink-moderation-001"}'
Python
from openai import OpenAIclient = OpenAI(base_url="https://test.sealink.io/v1",api_key="<your-sealink-key>",)response = client.moderations.create(model="sealink-moderation-001",input="I want to learn about AI safety.",)print(response.results[0].flagged)print(response.results[0].categories)print(response.results[0].category_scores)
Python — Batch
from openai import OpenAIclient = OpenAI(base_url="https://test.sealink.io/v1",api_key="<your-sealink-key>",)response = client.moderations.create(model="sealink-moderation-001",input=["Hello, how can I help you today?",{"type": "text", "text": "Some content to check"},{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},],)for r in response.results:print(r.flagged, dict(r.categories))
Node.js
import OpenAI from "openai";const client = new OpenAI({baseURL: "https://test.sealink.io/v1",apiKey: "<your-sealink-key>",});const response = await client.moderations.create({model: "sealink-moderation-001",input: "I want to learn about AI safety.",});console.log(response.results[0].flagged);console.log(response.results[0].categories);console.log(response.results[0].category_scores);
Node.js — Batch
import OpenAI from "openai";const client = new OpenAI({baseURL: "https://test.sealink.io/v1",apiKey: "<your-sealink-key>",});const response = await client.moderations.create({model: "sealink-moderation-001",input: ["Hello, how can I help you today?",{ type: "text", text: "Some content to check" },{ type: "image_url", image_url: { url: "https://example.com/photo.jpg" } },],});for (const r of response.results) {console.log(r.flagged, r.categories);}
Pricing
The Moderations endpoint is suitable for real-time safety checks, user input filtering, and content compliance. Availability and billing rules are reflected in the dashboard and billing records.