The Graphic Violence and Gore model helps you determine if an image or video contains horrific imagery such as blood, guts, self-harm, wounds, human skulls.
Scenes that contain weapons such as firearms and knives but no blood and no harm will not be flagged by this model. To flag weapons, use the Weapon Detection Model.
When processing the gore value returned by the API, users generally set a threshold. Images or videos with a value above this threshold will be flagged as being too graphic while images or videos with a value below will be considered to be safe.
Thresholds need to be fine-tuned for each individual use-case. Depending on your tolerance to false positives or false negatives, the threshold should be adapted.
We recommend setting a threshold at 0.5, meaning that images and videos with a gore value above 0.5 would be flagged.
If you haven't already, create an account to get your own API keys.
Let's say you want to moderate the following image:
You can either upload a public URL to the image, or upload the raw binary image. Here's how to proceed if you choose to share the image's public URL:
curl -X GET -G 'https://api.sightengine.com/1.0/check.json' \
-d 'models=gore' \
-d 'api_user={api_user}&api_secret={api_secret}' \
--data-urlencode 'url=https://sightengine.com/assets/img/examples/example-tt-1000.jpg'
# this example uses requests
import requests
import json
params = {
'url': 'https://sightengine.com/assets/img/examples/example-tt-1000.jpg',
'models': 'gore',
'api_user': '{api_user}',
'api_secret': '{api_secret}'
}
r = requests.get('https://api.sightengine.com/1.0/check.json', params=params)
output = json.loads(r.text)
$params = array(
'url' => 'https://sightengine.com/assets/img/examples/example-tt-1000.jpg',
'models' => 'gore',
'api_user' => '{api_user}',
'api_secret' => '{api_secret}',
);
// this example uses cURL
$ch = curl_init('https://api.sightengine.com/1.0/check.json?'.http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$output = json_decode($response, true);
// this example uses axios
const axios = require('axios');
axios.get('https://api.sightengine.com/1.0/check.json', {
params: {
'url': 'https://sightengine.com/assets/img/examples/example-tt-1000.jpg',
'models': 'gore',
'api_user': '{api_user}',
'api_secret': '{api_secret}',
}
})
.then(function (response) {
// on success: handle response
console.log(response.data);
})
.catch(function (error) {
// handle error
if (error.response) console.log(error.response.data);
else console.log(error.message);
});
The API will then return a JSON response:
{
"status": "success",
"request": {
"id": "req_1OjggusalNb2S7MxwLq2h",
"timestamp": 1509132120.6988,
"operations": 1
},
"gore": {
"prob": 0.01
},
"media": {
"id": "med_1OjgEqvJtOhqP7sfNe3ga",
"uri": "https://sightengine.com/assets/img/examples/example-tt-1000.jpg"
}
}
See our full list of Image/Video models for details on other filters and checks you can run on your images and videos. You might also want to check our Text models to moderate text-based content: messages, reviews, comments, usernames...
Was this page helpful?