curl --request POST \
--url https://api.tuteliq.ai/api/v1/reports/incident \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"messages": [
{
"sender": "<string>",
"text": "<string>"
}
],
"meta": {
"conversation_id": "<string>",
"child_age": 123,
"timestamp_range": [
"<string>"
]
},
"external_id": "<string>",
"metadata": {},
"incident_moderation_enabled": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [{sender: '<string>', text: '<string>'}],
meta: {conversation_id: '<string>', child_age: 123, timestamp_range: ['<string>']},
external_id: '<string>',
metadata: {},
incident_moderation_enabled: true
})
};
fetch('https://api.tuteliq.ai/api/v1/reports/incident', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/reports/incident"
payload = {
"messages": [
{
"sender": "<string>",
"text": "<string>"
}
],
"meta": {
"conversation_id": "<string>",
"child_age": 123,
"timestamp_range": ["<string>"]
},
"external_id": "<string>",
"metadata": {},
"incident_moderation_enabled": True
}
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 \"messages\": [\n {\n \"sender\": \"<string>\",\n \"text\": \"<string>\"\n }\n ],\n \"meta\": {\n \"conversation_id\": \"<string>\",\n \"child_age\": 123,\n \"timestamp_range\": [\n \"<string>\"\n ]\n },\n \"external_id\": \"<string>\",\n \"metadata\": {},\n \"incident_moderation_enabled\": true\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/reports/incident")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"messages": [
[
"sender": "<string>",
"text": "<string>"
]
],
"meta": [
"conversation_id": "<string>",
"child_age": 123,
"timestamp_range": ["<string>"]
],
"external_id": "<string>",
"metadata": [],
"incident_moderation_enabled": true
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/reports/incident")!
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/reports/incident");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"messages\": [\n {\n \"sender\": \"<string>\",\n \"text\": \"<string>\"\n }\n ],\n \"meta\": {\n \"conversation_id\": \"<string>\",\n \"child_age\": 123,\n \"timestamp_range\": [\n \"<string>\"\n ]\n },\n \"external_id\": \"<string>\",\n \"metadata\": {},\n \"incident_moderation_enabled\": true\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"summary": "<string>",
"risk_level": "<string>",
"categories": [
"<string>"
],
"recommended_next_steps": [
"<string>"
],
"credits_used": 123,
"external_id": "<string>",
"metadata": {}
}Generate professional incident report from conversation data
Convert raw conversation messages into a structured incident report suitable for school counselors, moderators, or trust & safety teams. Returns a narrative summary, overall risk level, categorized findings, and recommended next steps. Accepts optional metadata (conversation ID, child age, timestamp range) for richer context.
curl --request POST \
--url https://api.tuteliq.ai/api/v1/reports/incident \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"messages": [
{
"sender": "<string>",
"text": "<string>"
}
],
"meta": {
"conversation_id": "<string>",
"child_age": 123,
"timestamp_range": [
"<string>"
]
},
"external_id": "<string>",
"metadata": {},
"incident_moderation_enabled": true
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
messages: [{sender: '<string>', text: '<string>'}],
meta: {conversation_id: '<string>', child_age: 123, timestamp_range: ['<string>']},
external_id: '<string>',
metadata: {},
incident_moderation_enabled: true
})
};
fetch('https://api.tuteliq.ai/api/v1/reports/incident', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.tuteliq.ai/api/v1/reports/incident"
payload = {
"messages": [
{
"sender": "<string>",
"text": "<string>"
}
],
"meta": {
"conversation_id": "<string>",
"child_age": 123,
"timestamp_range": ["<string>"]
},
"external_id": "<string>",
"metadata": {},
"incident_moderation_enabled": True
}
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 \"messages\": [\n {\n \"sender\": \"<string>\",\n \"text\": \"<string>\"\n }\n ],\n \"meta\": {\n \"conversation_id\": \"<string>\",\n \"child_age\": 123,\n \"timestamp_range\": [\n \"<string>\"\n ]\n },\n \"external_id\": \"<string>\",\n \"metadata\": {},\n \"incident_moderation_enabled\": true\n}")
val request = Request.Builder()
.url("https://api.tuteliq.ai/api/v1/reports/incident")
.post(body)
.addHeader("Authorization", "Bearer <token>")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()import Foundation
let parameters = [
"messages": [
[
"sender": "<string>",
"text": "<string>"
]
],
"meta": [
"conversation_id": "<string>",
"child_age": 123,
"timestamp_range": ["<string>"]
],
"external_id": "<string>",
"metadata": [],
"incident_moderation_enabled": true
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://api.tuteliq.ai/api/v1/reports/incident")!
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/reports/incident");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"messages\": [\n {\n \"sender\": \"<string>\",\n \"text\": \"<string>\"\n }\n ],\n \"meta\": {\n \"conversation_id\": \"<string>\",\n \"child_age\": 123,\n \"timestamp_range\": [\n \"<string>\"\n ]\n },\n \"external_id\": \"<string>\",\n \"metadata\": {},\n \"incident_moderation_enabled\": true\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
false{
"summary": "<string>",
"risk_level": "<string>",
"categories": [
"<string>"
],
"recommended_next_steps": [
"<string>"
],
"credits_used": 123,
"external_id": "<string>",
"metadata": {}
}Authorizations
API key as Bearer token
Body
Messages involved in the incident
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Your unique identifier for correlation with your systems
255Custom key-value pairs for additional context. Maximum 20 properties.
Per-call override of your account incident logging setting. When set, it takes precedence over the account-level flag for THIS request: true forces the incident to be persisted, false suppresses persistence. Omit to use your account default (which itself defaults to enabled). Lets you control incident logging per request, e.g. suppress logging for test traffic.