Submit a moderator review of an incident (Art 14 human oversight)
curl --request POST \
--url https://api.tuteliq.ai/api/v1/incidents/{incident_id}/review \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason_comment": "<string>",
"moderator_external_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason_comment: '<string>', moderator_external_id: '<string>'})
};
fetch('https://api.tuteliq.ai/api/v1/incidents/{incident_id}/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/{incident_id}/review"
payload = {
"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 \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/incidents/{incident_id}/review")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"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/{incident_id}/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/{incident_id}/review");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"incident_id": "<string>",
"original": {
"risk_category": "<string>",
"risk_level": "<string>"
},
"revised": {
"risk_category": "<string>",
"risk_level": "<string>"
},
"audit_receipt": {
"request_id": "<string>",
"timestamp": "<string>",
"signature": "<string>"
}
}Submit a moderator review of an incident (Art 14 human oversight)
Records a deployer-side moderator decision (confirm / downgrade / escalate / reclassify / dismiss) on a model-produced incident. The override is persisted to the incident document and a separate signed Art 12 audit receipt is emitted linking back to the original. The optional reason_comment is encrypted with the customer’s registered public key (end-to-end) when enabled; otherwise server-side AES.
POST
/
api
/
v1
/
incidents
/
{incident_id}
/
review
Submit a moderator review of an incident (Art 14 human oversight)
curl --request POST \
--url https://api.tuteliq.ai/api/v1/incidents/{incident_id}/review \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reason_comment": "<string>",
"moderator_external_id": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason_comment: '<string>', moderator_external_id: '<string>'})
};
fetch('https://api.tuteliq.ai/api/v1/incidents/{incident_id}/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/{incident_id}/review"
payload = {
"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 \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/incidents/{incident_id}/review")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"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/{incident_id}/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/{incident_id}/review");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"reason_comment\": \"<string>\",\n \"moderator_external_id\": \"<string>\"\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"incident_id": "<string>",
"original": {
"risk_category": "<string>",
"risk_level": "<string>"
},
"revised": {
"risk_category": "<string>",
"risk_level": "<string>"
},
"audit_receipt": {
"request_id": "<string>",
"timestamp": "<string>",
"signature": "<string>"
}
}Authorizations
bearerAuthapiKeyHeader
API key as Bearer token
Path Parameters
Maximum string length:
128Body
application/json
Available 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