SilkDock
API

Moderation

Classify text for harmful content.

Parameters

ParameterTypeRequiredDescription
inputstring|arrayYesText to classify. Single string or array.
modelstringNoModeration model, e.g. text-moderation-latest, text-moderation-stable.

Endpoint: POST /v1/moderations


Examples

curl -X POST https://silkdock.ai/v1/moderations \-H "Authorization: Bearer $SILKDOCK_API_KEY" \-H "Content-Type: application/json" \-d '{  "model": "text-moderation-latest",  "input": "I want to hurt someone."}'
curl -X POST https://silkdock.ai/v1/moderations ^-H "Authorization: Bearer %SILKDOCK_API_KEY%" ^-H "Content-Type: application/json" ^-d "{\"model\":\"text-moderation-latest\",\"input\":\"I want to hurt someone.\"}"
http POST https://silkdock.ai/v1/moderations \Authorization:"Bearer $SILKDOCK_API_KEY" \model=text-moderation-latest \input="I want to hurt someone."
wget --quiet --output-document=- \--method=POST \--header="Authorization: Bearer $SILKDOCK_API_KEY" \--header="Content-Type: application/json" \--body-data='{"model":"text-moderation-latest","input":"I want to hurt someone."}' \https://silkdock.ai/v1/moderations
$headers = @{  "Authorization" = "Bearer $env:SILKDOCK_API_KEY"  "Content-Type"  = "application/json"}$body = '{"model":"text-moderation-latest","input":"I want to hurt someone."}'Invoke-RestMethod -Uri "https://silkdock.ai/v1/moderations" `  -Method POST -Headers $headers -Body $body
const { OpenAI } = require("openai");const client = new OpenAI({apiKey: process.env.SILKDOCK_API_KEY,baseURL: "https://silkdock.ai/v1",});const response = await client.moderations.create({input: "I want to hurt someone.",model: "text-moderation-latest",});console.log(`flagged: ${response.results[0].flagged}`);
const res = await fetch("https://silkdock.ai/v1/moderations", {method: "POST",headers: {  "Authorization": `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",},body: JSON.stringify({  model: "text-moderation-latest",  input: "I want to hurt someone.",}),});const data = await res.json();console.log(data.results[0].flagged);       // true/falseconsole.log(data.results[0].categories);    // category flags
import axios from "axios";const { data } = await axios.post("https://silkdock.ai/v1/moderations",{  model: "text-moderation-latest",  input: "I want to hurt someone.",},{  headers: {    Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`,    "Content-Type": "application/json",  },});console.log(data.results[0].flagged);console.log(data.results[0].categories);
$.ajax({url: "https://silkdock.ai/v1/moderations",method: "POST",contentType: "application/json",headers: {  Authorization: `Bearer ${SILKDOCK_API_KEY}`,},data: JSON.stringify({  model: "text-moderation-latest",  input: "I want to hurt someone.",}),success(data) {  console.log(data.results[0].flagged);  console.log(data.results[0].categories);},});
const xhr = new XMLHttpRequest();xhr.open("POST", "https://silkdock.ai/v1/moderations");xhr.setRequestHeader("Authorization", `Bearer ${process.env.SILKDOCK_API_KEY}`);xhr.setRequestHeader("Content-Type", "application/json");xhr.onload = () => {const data = JSON.parse(xhr.responseText);console.log(data.results[0].flagged);console.log(data.results[0].categories);};xhr.send(JSON.stringify({model: "text-moderation-latest",input: "I want to hurt someone.",}));
const request = require("request");request.post({  url: "https://silkdock.ai/v1/moderations",  headers: {    Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`,    "Content-Type": "application/json",  },  json: {    model: "text-moderation-latest",    input: "I want to hurt someone.",  },},(err, res, body) => {  console.log(body.results[0].flagged);  console.log(body.results[0].categories);});
const unirest = require("unirest");unirest.post("https://silkdock.ai/v1/moderations").headers({  Authorization: `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",}).send({  model: "text-moderation-latest",  input: "I want to hurt someone.",}).then((res) => {  console.log(res.body.results[0].flagged);  console.log(res.body.results[0].categories);});
import OpenAI from "openai";const client = new OpenAI({apiKey: process.env.SILKDOCK_API_KEY,baseURL: "https://silkdock.ai/v1",});const response = await client.moderations.create({input: "I want to hurt someone.",model: "text-moderation-latest",});console.log(`flagged: ${response.results[0].flagged}`);
const res = await fetch("https://silkdock.ai/v1/moderations", {method: "POST",headers: {  "Authorization": `Bearer ${process.env.SILKDOCK_API_KEY}`,  "Content-Type": "application/json",},body: JSON.stringify({  model: "text-moderation-latest",  input: "I want to hurt someone.",}),});const data = await res.json();console.log(data.results[0].flagged);
import requests, osres = requests.post(  "https://silkdock.ai/v1/moderations",  headers={"Authorization": f"Bearer {os.getenv('SILKDOCK_API_KEY')}"},  json={      "model": "text-moderation-latest",      "input": "I want to hurt someone.",  },)result = res.json()["results"][0]print("Flagged:", result["flagged"])print("Categories:", result["categories"])
import osfrom openai import OpenAIclient = OpenAI(  api_key=os.getenv("SILKDOCK_API_KEY"),  base_url="https://silkdock.ai/v1")response = client.moderations.create(  input="I want to hurt someone.",  model="text-moderation-latest")result = response.results[0]print(f"flagged: {result.flagged}")
#include <stdio.h>#include <curl/curl.h>int main(void) {  CURL *curl = curl_easy_init();  if (!curl) return 1;  const char *body =      "{"model":"text-moderation-latest","      ""input":"I want to hurt someone."}";  char auth_header[256];  snprintf(auth_header, sizeof(auth_header),           "Authorization: Bearer %s", getenv("SILKDOCK_API_KEY"));  struct curl_slist *headers = NULL;  headers = curl_slist_append(headers, auth_header);  headers = curl_slist_append(headers, "Content-Type: application/json");  curl_easy_setopt(curl, CURLOPT_URL, "https://silkdock.ai/v1/moderations");  curl_easy_setopt(curl, CURLOPT_POST, 1L);  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body);  curl_easy_perform(curl);  curl_slist_free_all(headers);  curl_easy_cleanup(curl);  return 0;}
#import <Foundation/Foundation.h>int main(int argc, const char *argv[]) {  @autoreleasepool {      NSURL *url = [NSURL URLWithString:@"https://silkdock.ai/v1/moderations"];      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];      request.HTTPMethod = @"POST";      NSString *apiKey = [NSProcessInfo.processInfo.environment                          objectForKey:@"SILKDOCK_API_KEY"];      [request setValue:[NSString stringWithFormat:@"Bearer %@", apiKey]     forHTTPHeaderField:@"Authorization"];      [request setValue:@"application/json"     forHTTPHeaderField:@"Content-Type"];      NSDictionary *bodyDict = @{          @"model": @"text-moderation-latest",          @"input": @"I want to hurt someone."      };      request.HTTPBody = [NSJSONSerialization dataWithJSONObject:bodyDict                                                        options:0                                                          error:nil];      dispatch_semaphore_t sem = dispatch_semaphore_create(0);      [[[NSURLSession sharedSession]        dataTaskWithRequest:request        completionHandler:^(NSData *data, NSURLResponse *resp, NSError *err) {            if (data) {                NSString *result = [[NSString alloc] initWithData:data                                                         encoding:NSUTF8StringEncoding];                NSLog(@"%@", result);            }            dispatch_semaphore_signal(sem);        }] resume];      dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);  }  return 0;}
import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.*;OpenAIClient client = OpenAIOkHttpClient.builder()  .apiKey(System.getenv("SILKDOCK_API_KEY"))  .baseURL("https://silkdock.ai/v1")  .build();ModerationCreateResponse response = client.moderations().create(  ModerationCreateParams.builder()      .model(ModerationModel.TEXT_MODERATION_LATEST)      .input("I want to hurt someone.")      .build());System.out.println("Flagged: " + response.results().get(0).flagged());
import java.net.http.*;import java.net.URI;var req = HttpRequest.newBuilder()  .uri(URI.create("https://silkdock.ai/v1/moderations"))  .header("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY"))  .header("Content-Type", "application/json")  .POST(HttpRequest.BodyPublishers.ofString(      """{"model":"text-moderation-latest","input":"I want to hurt someone."}"""))  .build();System.out.println(HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString()).body());
import okhttp3.*;OkHttpClient client = new OkHttpClient();String json = "{\"model\":\"text-moderation-latest\",\"input\":\"I want to hurt someone.\"}";Request request = new Request.Builder()  .url("https://silkdock.ai/v1/moderations")  .addHeader("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY"))  .post(RequestBody.create(json, MediaType.get("application/json")))  .build();try (Response r = client.newCall(request).execute()) {  System.out.println(r.body().string());}
import kong.unirest.Unirest;var res = Unirest.post("https://silkdock.ai/v1/moderations")  .header("Authorization", "Bearer " + System.getenv("SILKDOCK_API_KEY"))  .header("Content-Type", "application/json")  .body("{\"model\":\"text-moderation-latest\",\"input\":\"I want to hurt someone.\"}")  .asString();System.out.println(res.getBody());
package mainimport (  "context"  "fmt"  "os"  "github.com/openai/openai-go"  "github.com/openai/openai-go/option")func main() {  client := openai.NewClient(      option.WithAPIKey(os.Getenv("SILKDOCK_API_KEY")),      option.WithBaseURL("https://silkdock.ai/v1"),  )  resp, _ := client.Moderations.New(context.Background(),      openai.ModerationNewParams{          Model: openai.F(openai.ModerationModelTextModerationLatest),          Input: openai.F(openai.ModerationNewParamsInputUnion(              openai.ModerationNewParamsInputString("I want to hurt someone."),          )),      },  )  fmt.Printf("Flagged: %v", resp.Results[0].Flagged)}
package mainimport (  "bytes"  "encoding/json"  "fmt"  "io"  "net/http"  "os")func main() {  body, _ := json.Marshal(map[string]any{      "model": "text-moderation-latest",      "input": "I want to hurt someone.",  })  req, _ := http.NewRequest("POST", "https://silkdock.ai/v1/moderations", bytes.NewReader(body))  req.Header.Set("Authorization", "Bearer "+os.Getenv("SILKDOCK_API_KEY"))  req.Header.Set("Content-Type", "application/json")  resp, _ := http.DefaultClient.Do(req)  defer resp.Body.Close()  data, _ := io.ReadAll(resp.Body)  fmt.Println(string(data))}
<?php$ch = curl_init("https://silkdock.ai/v1/moderations");curl_setopt_array($ch, [  CURLOPT_POST           => true,  CURLOPT_RETURNTRANSFER => true,  CURLOPT_HTTPHEADER     => [      "Authorization: Bearer " . getenv("SILKDOCK_API_KEY"),      "Content-Type: application/json",  ],  CURLOPT_POSTFIELDS => json_encode([      "model" => "text-moderation-latest",      "input" => "I want to hurt someone.",  ]),]);$res = json_decode(curl_exec($ch), true);echo $res["results"][0]["flagged"] ? "Flagged" : "Clean";
<?phprequire_once "HTTP/Request2.php";$request = new HTTP_Request2("https://silkdock.ai/v1/moderations", HTTP_Request2::METHOD_POST);$request->setHeader([  "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"),  "Content-Type"  => "application/json",]);$request->setBody(json_encode([  "model" => "text-moderation-latest",  "input" => "I want to hurt someone.",]));$response = $request->send();$data = json_decode($response->getBody(), true);echo $data["results"][0]["flagged"] ? "Flagged" : "Clean";
<?phprequire "vendor/autoload.php";use GuzzleHttp\Client;$client = new Client();$response = $client->post("https://silkdock.ai/v1/moderations", [  "headers" => [      "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"),      "Content-Type"  => "application/json",  ],  "json" => [      "model" => "text-moderation-latest",      "input" => "I want to hurt someone.",  ],]);$data = json_decode($response->getBody(), true);echo $data["results"][0]["flagged"] ? "Flagged" : "Clean";
<?php$client = new http\Client;$request = new http\Client\Request("POST", "https://silkdock.ai/v1/moderations");$request->setHeaders([  "Authorization" => "Bearer " . getenv("SILKDOCK_API_KEY"),  "Content-Type"  => "application/json",]);$body = new http\Message\Body;$body->append(json_encode([  "model" => "text-moderation-latest",  "input" => "I want to hurt someone.",]));$request->setBody($body);$client->enqueue($request)->send();$response = $client->getResponse();$data = json_decode($response->getBody(), true);echo $data["results"][0]["flagged"] ? "Flagged" : "Clean";
import OpenAIlet client = OpenAI(configuration: .init(  token: ProcessInfo.processInfo.environment["SILKDOCK_API_KEY"]!,  host: "silkdock.ai",  scheme: "https"))let query = ModerationsQuery(  input: "I want to hurt someone.",  model: "text-moderation-latest")let result = try await client.moderations(query: query)print("Flagged: (result.results.first?.flagged ?? false)")
import Foundationvar req = URLRequest(url: URL(string: "https://silkdock.ai/v1/moderations")!)req.httpMethod = "POST"req.setValue("Bearer \(ProcessInfo.processInfo.environment["SILKDOCK_API_KEY"]!)",           forHTTPHeaderField: "Authorization")req.setValue("application/json", forHTTPHeaderField: "Content-Type")req.httpBody = try! JSONSerialization.data(withJSONObject: [  "model": "text-moderation-latest",  "input": "I want to hurt someone.",])let (data, _) = try! await URLSession.shared.data(for: req)print(String(data: data, encoding: .utf8)!)
using OpenAI;using OpenAI.Moderations;var client = new ModerationClient(  model: "text-moderation-latest",  credential: new System.ClientModel.ApiKeyCredential(      Environment.GetEnvironmentVariable("SILKDOCK_API_KEY")!),  options: new OpenAIClientOptions {      Endpoint = new Uri("https://silkdock.ai/v1")  });var result = await client.ClassifyTextAsync("I want to hurt someone.");Console.WriteLine($"Flagged: {result.Value.Flagged}");
using System.Net.Http;using System.Net.Http.Json;var client = new HttpClient();client.DefaultRequestHeaders.Add("Authorization",  $"Bearer {Environment.GetEnvironmentVariable("SILKDOCK_API_KEY")}");var res = await client.PostAsJsonAsync("https://silkdock.ai/v1/moderations", new {  model = "text-moderation-latest",  input = "I want to hurt someone.",});Console.WriteLine(await res.Content.ReadAsStringAsync());
require "openai"client = OpenAI::Client.new(access_token: ENV["SILKDOCK_API_KEY"],uri_base: "https://silkdock.ai/v1")response = client.moderations(parameters: {  model: "text-moderation-latest",  input: "I want to hurt someone."})puts "Flagged: #{response.dig("results", 0, "flagged")}"
require "net/http"require "json"uri = URI("https://silkdock.ai/v1/moderations")req = Net::HTTP::Post.new(uri)req["Authorization"] = "Bearer #{ENV['SILKDOCK_API_KEY']}"req["Content-Type"]  = "application/json"req.body = {model: "text-moderation-latest",input: "I want to hurt someone."}.to_jsonres = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }result = JSON.parse(res.body)["results"][0]puts "Flagged: #{result["flagged"]}"
import com.openai.client.OpenAIClientimport com.openai.client.okhttp.OpenAIOkHttpClientimport com.openai.models.*val client: OpenAIClient = OpenAIOkHttpClient.builder()  .apiKey(System.getenv("SILKDOCK_API_KEY"))  .baseURL("https://silkdock.ai/v1")  .build()val response = client.moderations().create(  ModerationCreateParams.builder()      .model(ModerationModel.TEXT_MODERATION_LATEST)      .input("I want to hurt someone.")      .build())println("Flagged: ${response.results()[0].flagged()}")
import java.net.http.*import java.net.URIval req = HttpRequest.newBuilder()  .uri(URI.create("https://silkdock.ai/v1/moderations"))  .header("Authorization", "Bearer ${System.getenv("SILKDOCK_API_KEY")}")  .header("Content-Type", "application/json")  .POST(HttpRequest.BodyPublishers.ofString(      """{"model":"text-moderation-latest","input":"I want to hurt someone."}"""))  .build()println(HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString()).body())
use reqwest::blocking::Client;use serde_json::json;fn main() -> Result<(), Box<dyn std::error::Error>> {  let res = Client::new()      .post("https://silkdock.ai/v1/moderations")      .header("Authorization", format!("Bearer {}", std::env::var("SILKDOCK_API_KEY")?))      .json(&json!({          "model": "text-moderation-latest",          "input": "I want to hurt someone."      }))      .send()?;  println!("{}", res.text()?);  Ok(())}
POST /v1/moderations HTTP/1.1Host: silkdock.aiAuthorization: Bearer <YOUR_API_KEY>Content-Type: application/json{"model": "text-moderation-latest","input": "I want to hurt someone."}
import 'dart:convert';import 'package:http/http.dart' as http;void main() async {final res = await http.post(  Uri.parse('https://silkdock.ai/v1/moderations'),  headers: {    'Authorization': 'Bearer ${const String.fromEnvironment("SILKDOCK_API_KEY")}',    'Content-Type': 'application/json',  },  body: jsonEncode({    'model': 'text-moderation-latest',    'input': 'I want to hurt someone.',  }),);final data = jsonDecode(res.body);print('Flagged: ${data["results"][0]["flagged"]}');}
library(httr2)req <- request("https://silkdock.ai/v1/moderations") |>req_headers(  Authorization = paste("Bearer", Sys.getenv("SILKDOCK_API_KEY")),  "Content-Type" = "application/json") |>req_body_json(list(  model = "text-moderation-latest",  input = "I want to hurt someone."))resp <- req_perform(req)result <- resp_body_json(resp)$results[[1]]cat("Flagged:", result$flagged, "")
(* requires cohttp-lwt-unix *)open Cohttp_lwt_unixopen Cohttpopen Lwtlet () =let body = {|{"model":"text-moderation-latest","input":"I want to hurt someone."}|} inlet headers = Header.of_list [  "Authorization", "Bearer " ^ Sys.getenv "SILKDOCK_API_KEY";  "Content-Type", "application/json";] inLwt_main.run (  Client.post ~headers ~body:(Cohttp_lwt.Body.of_string body)    (Uri.of_string "https://silkdock.ai/v1/moderations")  >>= fun (_, body) -> Cohttp_lwt.Body.to_string body  >>= fun s -> print_string s; return_unit)

Response

{
  "id": "modr-xxx",
  "model": "text-moderation-latest",
  "results": [
    {
      "flagged": false,
      "categories": {
        "hate": false,
        "hate/threatening": false,
        "harassment": false,
        "self-harm": false,
        "sexual": false,
        "sexual/minors": false,
        "violence": false,
        "violence/graphic": false
      },
      "category_scores": { "hate": 0.0001, "violence": 0.0002 }
    }
  ]
}

flagged: true indicates the content is flagged.

Last updated on

On this page