Submit the same moderator review across multiple incidents (Art 14, bulk)
curl --request POST \
--url https://api.tuteliq.ai/api/v1/incidents/batch-review \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"incident_ids": [
"<string>"
],
"reason_comment": "<string>",
"moderator_external_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
incident_ids: ['<string>'],
reason_comment: '<string>',
moderator_external_id: '<string>'
})
};
fetch('https://api.tuteliq.ai/api/v1/incidents/batch-review', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/incidents/batch-review"
payload = {
"incident_ids": ["<string>"],
"reason_comment": "<string>",
"moderator_external_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"incident_ids\": [\n \"<string>\"\n ],\n \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/incidents/batch-review")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"incident_ids": ["<string>"],
"reason_comment": "<string>",
"moderator_external_id": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/incidents/batch-review")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/incidents/batch-review");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"incident_ids\": [\n \"<string>\"\n ],\n \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"total": 123,
"succeeded": 123,
"failed": 123,
"results": [
{}
]
}Submit the same moderator review across multiple incidents (Art 14, bulk)
Applies the same review action + reason to up to 100 incidents in one call. Each incident emits its own signed Art 12 audit receipt — bulk is a UX shortcut, not a compliance shortcut. Per-incident success/error is returned so a partial failure can be retried without re-running successful items.
POST
/
api
/
v1
/
incidents
/
batch-review
Submit the same moderator review across multiple incidents (Art 14, bulk)
curl --request POST \
--url https://api.tuteliq.ai/api/v1/incidents/batch-review \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"incident_ids": [
"<string>"
],
"reason_comment": "<string>",
"moderator_external_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
incident_ids: ['<string>'],
reason_comment: '<string>',
moderator_external_id: '<string>'
})
};
fetch('https://api.tuteliq.ai/api/v1/incidents/batch-review', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/incidents/batch-review"
payload = {
"incident_ids": ["<string>"],
"reason_comment": "<string>",
"moderator_external_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"incident_ids\": [\n \"<string>\"\n ],\n \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/incidents/batch-review")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"incident_ids": ["<string>"],
"reason_comment": "<string>",
"moderator_external_id": "<string>"
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/incidents/batch-review")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))using RestSharp;
var options = new RestClientOptions("https://api.tuteliq.ai/api/v1/incidents/batch-review");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"incident_ids\": [\n \"<string>\"\n ],\n \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"total": 123,
"succeeded": 123,
"failed": 123,
"results": [
{}
]
}Authorizations
bearerAuthapiKeyHeader
API key as Bearer token
Body
application/json
Required array length:
1 - 100 elementsMaximum string length:
128Available options:
confirm, downgrade, escalate, reclassify, dismiss, resolve, reopen Available options:
confirmed_accurate, false_positive, out_of_context, insufficient_severity, incorrect_category, requires_law_enforcement, parent_notified, other Maximum string length:
4000Available options:
low, moderate, high, critical Available options:
bullying, grooming, unsafe, self_harm, other, social_engineering, app_fraud, romance_scam, mule_recruitment, gambling_harm, coercive_control, vulnerability_exploitation, radicalisation, distress_signals, tfgbv, synthetic_content Maximum string length:
256Available options:
biometric-high-risk, safety-high-risk, limited-risk, minimal-risk