curl --request PUT \
--url https://api.moderationapi.com/v1/projects/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"enableRequestLogging": true,
"casebookEnabled": true
}
'import requests
url = "https://api.moderationapi.com/v1/projects/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"enableRequestLogging": True,
"casebookEnabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
domain: '<string>',
context: '<string>',
enableRequestLogging: true,
casebookEnabled: true
})
};
fetch('https://api.moderationapi.com/v1/projects/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moderationapi.com/v1/projects/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'domain' => '<string>',
'context' => '<string>',
'enableRequestLogging' => true,
'casebookEnabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moderationapi.com/v1/projects/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domain\": \"<string>\",\n \"context\": \"<string>\",\n \"enableRequestLogging\": true,\n \"casebookEnabled\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.moderationapi.com/v1/projects/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domain\": \"<string>\",\n \"context\": \"<string>\",\n \"enableRequestLogging\": true,\n \"casebookEnabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moderationapi.com/v1/projects/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domain\": \"<string>\",\n \"context\": \"<string>\",\n \"enableRequestLogging\": true,\n \"casebookEnabled\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"globalFlaggingMode": "DRY_RUN",
"enableRequestLogging": true,
"casebookEnabled": true,
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}Update a project
Update a project. Fields you leave out keep their value. Needs the projects:write permission.
curl --request PUT \
--url https://api.moderationapi.com/v1/projects/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"enableRequestLogging": true,
"casebookEnabled": true
}
'import requests
url = "https://api.moderationapi.com/v1/projects/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"enableRequestLogging": True,
"casebookEnabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
domain: '<string>',
context: '<string>',
enableRequestLogging: true,
casebookEnabled: true
})
};
fetch('https://api.moderationapi.com/v1/projects/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moderationapi.com/v1/projects/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'domain' => '<string>',
'context' => '<string>',
'enableRequestLogging' => true,
'casebookEnabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moderationapi.com/v1/projects/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domain\": \"<string>\",\n \"context\": \"<string>\",\n \"enableRequestLogging\": true,\n \"casebookEnabled\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.moderationapi.com/v1/projects/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domain\": \"<string>\",\n \"context\": \"<string>\",\n \"enableRequestLogging\": true,\n \"casebookEnabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moderationapi.com/v1/projects/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"domain\": \"<string>\",\n \"context\": \"<string>\",\n \"enableRequestLogging\": true,\n \"casebookEnabled\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"globalFlaggingMode": "DRY_RUN",
"enableRequestLogging": true,
"casebookEnabled": true,
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The ID of the project to update.
Body
The project's name.
1 - 75The project's description.
500The website or app the project moderates content for. Setting it on a project without context writes one.
What the platform is and who uses it.
2000ACTIVE flags content. DRY_RUN evaluates without flagging.
DRY_RUN, ACTIVE Whether moderated content is stored and shown in the dashboard.
Whether review queue decisions are recorded in the casebook.
Response
Project updated successfully
The ID of the project.
The project's name.
The project's description.
The website or app the project moderates content for.
What the platform is and who uses it. AI moderation reads it to judge content in context.
ACTIVE flags content. DRY_RUN evaluates content without flagging it, for testing a setup.
DRY_RUN, ACTIVE Whether moderated content is stored and shown in the dashboard.
Whether decisions made in the review queue are recorded in the project's casebook.
When the project was created.
When the project was last changed.
Was this page helpful?