import { ModerationApi } from "@moderation-api/sdk";
const moderationApi = new ModerationApi({
secretKey: process.env["MODAPI_SECRET_KEY"] ?? "",
});
async function run() {
const result = await moderationApi.projects.create({
name: "<value>",
});
console.log(result);
}
run();
import os
from moderation_api import ModerationAPI
with ModerationAPI(
secret_key=os.environ["MODAPI_SECRET_KEY"],
) as moderation_api:
res = moderation_api.projects.create(name="<value>", used_by_minors=False)
# Handle response
print(res)
declare(strict_types=1);
require 'vendor/autoload.php';
use ModerationApi;
use ModerationApi\Models\Operations;
$sdk = ModerationApi\ModerationApi::builder()
->setSecurity(
getenv('MODAPI_SECRET_KEY')
)
->build();
$request = new Operations\CreateProjectRequest(
name: '<value>',
);
$response = $sdk->projects->create(
request: $request
);
if ($response->projectWithKey !== null) {
// handle response
}
require 'moderation_api'
Models = ::ModerationApi::Models
s = ::ModerationApi::ModerationApi.new(
secret_key: ENV.fetch('MODAPI_SECRET_KEY')
)
req = Models::Operations::CreateProjectRequest.new(
name: '<value>'
)
res = s.projects.create(request: req)
unless res.project_with_key.nil?
# handle response
end
modapi projects create --secret-key "$MODAPI_SECRET_KEY" --name '<value>' --used-by-minors=false
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"globalFlaggingMode": "DRY_RUN",
"enableRequestLogging": true,
"casebookEnabled": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"secretKey": "<string>"
}{
"type": "invalid_request_error",
"code": "invalid_request",
"message": "Invalid input data",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"type": "authentication_error",
"code": "unauthorized",
"message": "Authorization not provided",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"type": "permission_error",
"code": "permission_denied",
"message": "Insufficient access",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}Create a project
Create a project with one channel, a review queue inbox and a secret API key. Give a domain or context and the project suggests policies for the platform. Needs the projects:write permission and a key that reaches all projects.
import { ModerationApi } from "@moderation-api/sdk";
const moderationApi = new ModerationApi({
secretKey: process.env["MODAPI_SECRET_KEY"] ?? "",
});
async function run() {
const result = await moderationApi.projects.create({
name: "<value>",
});
console.log(result);
}
run();
import os
from moderation_api import ModerationAPI
with ModerationAPI(
secret_key=os.environ["MODAPI_SECRET_KEY"],
) as moderation_api:
res = moderation_api.projects.create(name="<value>", used_by_minors=False)
# Handle response
print(res)
declare(strict_types=1);
require 'vendor/autoload.php';
use ModerationApi;
use ModerationApi\Models\Operations;
$sdk = ModerationApi\ModerationApi::builder()
->setSecurity(
getenv('MODAPI_SECRET_KEY')
)
->build();
$request = new Operations\CreateProjectRequest(
name: '<value>',
);
$response = $sdk->projects->create(
request: $request
);
if ($response->projectWithKey !== null) {
// handle response
}
require 'moderation_api'
Models = ::ModerationApi::Models
s = ::ModerationApi::ModerationApi.new(
secret_key: ENV.fetch('MODAPI_SECRET_KEY')
)
req = Models::Operations::CreateProjectRequest.new(
name: '<value>'
)
res = s.projects.create(request: req)
unless res.project_with_key.nil?
# handle response
end
modapi projects create --secret-key "$MODAPI_SECRET_KEY" --name '<value>' --used-by-minors=false
{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"domain": "<string>",
"context": "<string>",
"globalFlaggingMode": "DRY_RUN",
"enableRequestLogging": true,
"casebookEnabled": true,
"createdAt": "<string>",
"updatedAt": "<string>",
"secretKey": "<string>"
}{
"type": "invalid_request_error",
"code": "invalid_request",
"message": "Invalid input data",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"type": "authentication_error",
"code": "unauthorized",
"message": "Authorization not provided",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"type": "permission_error",
"code": "permission_denied",
"message": "Insufficient access",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}{
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded",
"request_id": "h8fkz6kkzoa446ffve37atys",
"doc_url": "<string>",
"issues": [
{
"message": "<string>",
"path": [
"<string>"
],
"code": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
The project's name.
1 - 35The website or app the project moderates content for. Used to write the context when none is given.
255What the platform is and who uses it.
2000What you moderate, the problems you see and your guidelines.
2000Whether children use the platform.
Response
Project created 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.
A secret API key for the new project. Use it to moderate content in this project. It is also shown in the project's settings.
Was this page helpful?