Description
This endpoint allows you to send us one or multiple text messages for diagnosis and recommendation.
You'll have access to specific fields like the severity the type , the recommendedAction, a list of classifications and some other details relating to your message(s) input.
URL
To create an analysis request, you must use the following endpoint:
POST https://bamboo.bodyguard.ai/api/analyze
Parameters
name | Type | Required | Description |
---|---|---|---|
channelId | String | true | The moderation channel identifier you have created from your dashboard. |
contents | AnalysisRequest | true | A set of messages to analyze. |
A maximum of 100 messages can be analyzed at the same time. It can be customized for each clients upon request at business@bodyguard.ai.
Response
This endpoint handles partial errors.
This means that if some messages cannot be analyzed, the endpoint will still return a 200
response.
- The succesfully analyzed messages will be in the
data
attributes. - The messages that have failed to be analyzed will be in the
errors
field along with the error reason.
How to update a message ?
In some case you might want to analyze the same message again (eg: the text is updated by the author). To do so, you simply have to set the exact same reference, channelId fields during your request and it will be updated.
Setting the exact same values for those two fields is very important since it represent the message uniqueness. If you don't a new message will be created.
Examples
Single analysis
See the Quick start guide.
Batch analysis
Request:
curl --location --request POST 'bamboo.bodyguard.ai/api/analyze' \
--header 'X-Api-Key: $YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"channelId": "$YOUR_CHANNEL_ID",
"contents": [
{
"text": "Einstein is an asshole",
"publishedAt": "2022-10-01T01:50:27.256Z"
},
{
"text": "Good job !",
"publishedAt": "2022-09-23T03:21:56.332Z"
},
{
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ut lacinia justo, et finibus est. In congue lacinia sapien sit amet mattis. Fusce varius magna vel felis viverra porta. Donec congue sodales tortor, a sollicitudin turpis tincidunt dictum. Aliquam fringilla consectetur magna, vitae venenatis turpis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur pretium maximus erat, vel rutrum nulla tempor quis. Proin mauris ligula, porta at egestas facilisis, finibus a quam. Morbi sit amet neque metus. Proin mattis tempus malesuada. Praesent suscipit ante sed erat consequat suscipit. Aliquam posuere volutpat eros sit amet sodales. Sed non fringilla justo. Fusce non nunc vitae enim posuere volutpat. Donec vitae quam consequat, rhoncus ligula eu, laoreet diam. Proin semper, massa nec pellentesque hendrerit, dui turpis luctus purus, vel efficitur neque lorem ut sapien. Donec et maximus turpis. Cras varius enim et eros fermentum, et feugiat orci porttitor. Sed ipsum dui, molestie ac nisl in, varius tristique arcu. Vestibulum ac libero in enim suscipit lobortis. Curabitur placerat placerat nisi eget imperdiet. Quisque sollicitudin nibh vel risus dapibus viverra. Nullam quis dui in eros dapibus posuere. Fusce dapibus tempor nisi in convallis. Duis ipsum nibh, tristique id aliquam non, ultrices a nisi. Mauris vulputate turpis non mi dapibus, id viverra ipsum pharetra. Nunc elementum viverra urna in tempor. Cras tempus, diam in posuere mollis, augue augue pharetra risus, ac consequat diam lorem a purus. Nulla aliquam dapibus dolor. Aenean eget malesuada nisi. Fusce bibendum purus eget sem rhoncus venenatis. Nullam ornare ornare ante molestie condimentum. Sed accumsan ante sit amet ligula lacinia efficitur. Curabitur et gravida lectus. Donec neque lacus, pulvinar sit amet nulla pretium, lacinia porttitor justo. Curabitur imperdiet pretium ultricies. Curabitur finibus sit amet ligula id vulputate. Quisque posuere tincidunt massa sit amet tempor. Curabitur vitae feugiat nunc. Sed molestie ipsum sit amet metus faucibus, ut placerat risus cursus. Duis vulputate felis et tincidunt luctus. Praesent molestie lacus enim, sit amet ornare lectus accumsan a. Curabitur venenatis tortor elit, sed accumsan augue consectetur in. Duis ipsum nibh, pulvinar at lectus vel, condimentum viverra velit. Curabitur posuere lacus ipsum, id facilisis velit pretium in. Nam lectus orci, accumsan et volutpat a, volutpat sed urna. Nulla rutrum auctor diam, nec convallis sapien faucibus eget. Duis sit amet sodales mauris. Aliquam eu dolor convallis justo gravida placerat. Donec aliquet tortor ut lorem pretium pellentesque. Pellentesque ut magna quis tellus ultricies bibendum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris et euismod nisi. Duis nibh est, tempor nec enim ut, viverra iaculis quam. Maecenas eu arcu eget orci pellentesque viverra. Integer lobortis sodales nisi, eu convallis augue tempus eget. Vestibulum placerat justo id blandit dapibus. Fusce commodo vestibulum lectus, vel facilisis turpis laoreet ut. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Etiam tristique turpis eget dui consectetur scelerisque. Nullam ut justo sit amet purus rhoncus tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;",
"publishedAt": "2022-10-04T15:39:12.992Z"
}
{
"text": "Je vous ai compris !",
"publishedAt": "1958-06-04T19:00:00.000"
}
]
}'
- You must replace $YOUR_API_KEY by your own API key.
- You must replace $YOUR_CHANNEL_ID by your own Channel ID.
Response:
{
"data": [
{
"text": "Einstein is an asshole",
"reference": "bodyguard/00fa1bc5-2c4d-4135-a19b-0f01f103def3",
"type": "HATEFUL",
"severity": "HIGH",
"recommendedAction": "REMOVE",
"meta": {
"directedAt": "SINGLE_PERSON",
"classifications": [
"INSULT"
]
},
"language": "en",
"analyzedAt": "2022-10-01T01:50:31.322Z",
"publishedAt": "2022-10-01T01:50:27.256Z"
},
{
"text": "Good job !",
"reference": "bodyguard/a1571ce4-1803-4d68-9c93-e0416fbdb73b",
"type": "SUPPORTIVE",
"severity": "NONE",
"recommendedAction": "KEEP",
"meta": {
"directedAt": "USER",
"classifications": [
"SUPPORTIVE"
]
},
"language": "en",
"analyzedAt": "2022-09-23T03:22:01.182Z",
"publishedAt": "2022-09-23T03:21:56.332Z"
}
],
"errors": [
{
"reason": "\"contents[2].text\" length must be less than or equal to 1000 characters long",
"status": "TEXT_TOO_LONG",
"details": {
"position": 2,
"limit": 1000,
"value": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ut lacinia justo, et finibus est. In congue lacinia sapien sit amet mattis. Fusce varius magna vel felis viverra porta. Donec congue sodales tortor, a sollicitudin turpis tincidunt dictum. Aliquam fringilla consectetur magna, vitae venenatis turpis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur pretium maximus erat, vel rutrum nulla tempor quis. Proin mauris ligula, porta at egestas facilisis, finibus a quam. Morbi sit amet neque metus. Proin mattis tempus malesuada. Praesent suscipit ante sed erat consequat suscipit. Aliquam posuere volutpat eros sit amet sodales. Sed non fringilla justo. Fusce non nunc vitae enim posuere volutpat. Donec vitae quam consequat, rhoncus ligula eu, laoreet diam. Proin semper, massa nec pellentesque hendrerit, dui turpis luctus purus, vel efficitur neque lorem ut sapien. Donec et maximus turpis. Cras varius enim et eros fermentum, et feugiat orci porttitor. Sed ipsum dui, molestie ac nisl in, varius tristique arcu. Vestibulum ac libero in enim suscipit lobortis. Curabitur placerat placerat nisi eget imperdiet. Quisque sollicitudin nibh vel risus dapibus viverra. Nullam quis dui in eros dapibus posuere. Fusce dapibus tempor nisi in convallis. Duis ipsum nibh, tristique id aliquam non, ultrices a nisi. Mauris vulputate turpis non mi dapibus, id viverra ipsum pharetra. Nunc elementum viverra urna in tempor. Cras tempus, diam in posuere mollis, augue augue pharetra risus, ac consequat diam lorem a purus. Nulla aliquam dapibus dolor. Aenean eget malesuada nisi. Fusce bibendum purus eget sem rhoncus venenatis. Nullam ornare ornare ante molestie condimentum. Sed accumsan ante sit amet ligula lacinia efficitur. Curabitur et gravida lectus. Donec neque lacus, pulvinar sit amet nulla pretium, lacinia porttitor justo. Curabitur imperdiet pretium ultricies. Curabitur finibus sit amet ligula id vulputate. Quisque posuere tincidunt massa sit amet tempor. Curabitur vitae feugiat nunc. Sed molestie ipsum sit amet metus faucibus, ut placerat risus cursus. Duis vulputate felis et tincidunt luctus. Praesent molestie lacus enim, sit amet ornare lectus accumsan a. Curabitur venenatis tortor elit, sed accumsan augue consectetur in. Duis ipsum nibh, pulvinar at lectus vel, condimentum viverra velit. Curabitur posuere lacus ipsum, id facilisis velit pretium in. Nam lectus orci, accumsan et volutpat a, volutpat sed urna. Nulla rutrum auctor diam, nec convallis sapien faucibus eget. Duis sit amet sodales mauris. Aliquam eu dolor convallis justo gravida placerat. Donec aliquet tortor ut lorem pretium pellentesque. Pellentesque ut magna quis tellus ultricies bibendum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris et euismod nisi. Duis nibh est, tempor nec enim ut, viverra iaculis quam. Maecenas eu arcu eget orci pellentesque viverra. Integer lobortis sodales nisi, eu convallis augue tempus eget. Vestibulum placerat justo id blandit dapibus. Fusce commodo vestibulum lectus, vel facilisis turpis laoreet ut. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Etiam tristique turpis eget dui consectetur scelerisque. Nullam ut justo sit amet purus rhoncus tincidunt. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;"
}
},
{
"reason": "For technical reasons, we cannot analyze message older than 6 month (see api documentation for more informations). Please update the publishedAt field.",
"status": "INVALID_CONTENT",
"details": {
"position": 0,
"limit": "2022-04-15T14:24:36.449Z",
"value": "1958-06-04T18:00:00.000Z"
}
}
]
}
Analysis with context
Each messages CAN contain additional fields to add more Context.
Request:
curl --location --request POST 'bamboo.bodyguard.ai/api/analyze' \
--header 'X-Api-Key: $YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"channelId": "$YOUR_CHANNEL_ID",
"contents": [
{
"text": "New video available !",
"reference": "78568088",
"publishedAt": "2022-10-03T03:42:00.420Z",
"context": {
"topLevelReference": "78568088",
"from": {
"type": "AUTHOR",
"data": {
"identifier": "9131",
"username": "Charles",
"birthdate": "1996-10-19",
"gender": "MALE"
}
},
"post": {
"type": "VIDEO",
"data": {
"identifier": "5468b255562e",
"title": "Nice content"
}
}
}
},
{
"text": "Your video is trash",
"reference": "78568089",
"publishedAt": "2022-10-04T11:37:12.420Z",
"context": {
"topLevelReference": "78568088",
"parentReference": "78568088",
"from": {
"type": "AUTHOR",
"data": {
"identifier": "7676",
"username": "Seb",
"birthdate": "1994-03-09",
"gender": "MALE"
}
},
"to": {
"type": "AUTHOR",
"data": {
"identifier": "9131",
"username": "Charles",
"birthdate": "1996-10-19",
"gender": "MALE"
}
},
"post": {
"type": "VIDEO",
"data": {
"identifier": "5468b255562e",
"title": "Nice content"
}
}
}
}
]
}'
- You must replace $YOUR_API_KEY by your own API key.
- You must replace $YOUR_CHANNEL_ID by your own Channel ID.
Response:
{
"data": [
{
"text": "New video available !",
"reference": "78568088",
"type": "NEUTRAL",
"severity": "NONE",
"recommendedAction": "KEEP",
"meta": {
"classifications": [
"NEUTRAL"
],
"directedAt": "UNDEFINED"
},
"language": "en",
"analyzedAt": "2022-10-03T03:42:04.554Z",
"publishedAt": "2022-10-03T03:42:00.420Z"
},
{
"text": "Your video is trash",
"reference": "78568089",
"type": "HATEFUL",
"severity": "MEDIUM",
"recommendedAction": "REMOVE",
"meta": {
"classifications": [
"HATRED"
],
"directedAt": "USER"
},
"language": "en",
"analyzedAt": "2022-10-04T11:37:15.579Z",
"publishedAt": "2022-10-04T11:37:12.420Z"
}
]
}