Skip to main content

Content Hash List Feedback

Overview

The Hash Feedback API allows users of our Content Hash List to provide feedback to our system on an individual hash basis. This feedback mechanism helps improve the accuracy and effectiveness of our content classification system by enabling users to report false positives, classification errors, duplicates, matches and other general feedback.

Open API References:

Get feedback catergories

To submit feedback, you must first retrieve a list of available feedback categories. This will allow you to include the relevant feedback category ID in your request.

import requests

url = "https://app.terrorismanalytics.org/hash-list/v2/feedback/categories?<params>"

headers = {
"Authorization": f'Bearer {token}"
"Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
print(response.json())

Query Parameters

ParameterTypeRequiredDefaultDescription
idintegerNo-Filter results by category ID
namestringNo-Filter results by category name
limitintegerNo20Number of results to return per page (max 100)
offsetintegerNo0Number of results to skip for pagination

Response Format

The API returns paginated results with the following structure:

FieldTypeDescription
countintegerTotal number of available results
nextstring/nullURL for the next page of results, null if last page
previousstring/nullURL for the previous page of results, null if first page
resultsarrayArray of category objects for the current page

Category Object

FieldTypeDescription
idintegerUnique identifier for the category
namestringCategory name/code
descriptionstringHuman-readable description of the category

Example Response

{
"count": 6,
"next": null,
"previous": "https://app.terrorismanalytics.org/hash-list/v2/feedback/categories",
"results": [
{
"id": 1,
"name": "FALSE_POSITIVE",
"description": "Bad hash quality or Non TVEC"
}
{
"id": 2,
"name": "INCLUSION",
"description": "Why is this included ?"
}
...
]
}

Sending feedback

Base URL: https://app.terrorismanalytics.org/hash-list/v2/feedback

Sending feedback is simple. Just send a POST request to the Base URL with the following fields included in the request body.

Request Body

FieldTypeRequiredDescription
hashintegerYesHash ID being reported on
categoryintegerYesCategory ID for the feedback type
descriptionstringNoDetailed description of the feedback or issue
import requests

url = "https://app.terrorismanalytics.org/hash-list/v2/feedback"

body = {
"hash":4337,
"category":1,
"description":"Lorem Ipsum is simply dummy text of the printing and typesetting industry"
}

headers = {
"Authorization": f'Bearer {token}"
"Content-Type": "application/json"
}

response = requests.post(url, headers=headers, body=body)
print(response.json())

Example response

{
"hash": 4337,
"category": 1,
"description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
"user": 26
}

Response Format

FieldTypeDescription
hashintegerHash ID that was reported on
categoryintegerCategory ID for the feedback type
descriptionstringDetailed description of the feedback or issue
userintegerUser ID of the person who submitted the feedback

Feedback Status

You can make a GET request to the Base URL to get a list of all feedback entries you have submitted to us along with the current status of the feedback including an analyst response and an analyst decision.

import requests

url = "https://app.terrorismanalytics.org/hash-list/v2/feedback"

headers = {
"Authorization": f'Bearer {token}"
"Content-Type": "application/json"
}

response = requests.get(url, headers=headers)
print(response.json())

Example Response

{
"count": 21,
"next": "https://app.terrorismanalytics.org/hash-list/v2/feedback?analyst_decision=REMOVED&limit=5&offset=10&response_sent=true&status=CLOSED",
"previous": "https://app.terrorismanalytics.org/hash-list/v2/feedback?analyst_decision=REMOVED&limit=5&response_sent=true&status=CLOSED",
"results": [
{
"id": 12,
"user": {
"id": 99,
"username": "Vader"
},
"analyst": {
"id": 22,
"username": "Luke"
},
"category": {
"id": 2,
"name": "INCLUSION",
"description": "Why is this included ?"
},
"hash": {
"id": 123,
"hash_digest": "0f0567cd2e7bbb709e6401697f1bd17d"
},
"content_id": 241,
"description": "Lorem Ipsum is simply dummy text of the printing and typesetting industry.",
"analyst_response": "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.",
"created_on": "2025-05-22T14:18:54.699590",
"updated_on": "2025-05-22T14:25:03.840497",
"status": "CLOSED",
"analyst_decision": "NOT_REMOVED",
"response_sent": true
},
]
}

Query Parameters

ParameterTypeRequiredDefaultDescription
limitintegerNo20Number of results to return per page
offsetintegerNo0Number of results to skip for pagination
statusstringNo-Filter by feedback status (OPEN, CLOSED)
response_sentbooleanNo-Filter by whether the email response has been sent (true, false)
analyst_decisionstringNo-Filter by analyst decision (REMOVED, NOT_REMOVED, PENDING)

Response Format

FieldTypeDescription
countintegerTotal number of available results
nextstring/nullURL for the next page of results, null if last page
previousstring/nullURL for the previous page of results, null if first page
resultsarrayArray of feedback objects for the current page

Feedback Object

FieldTypeDescription
idintegerUnique identifier for the feedback entry
userUserUser who submitted the feedback
analystUser(Analyst)Analyst who reviewed the feedback
categoryCategoryFeedback category information
hashHashHash information being reported on
content_idintegerAssociated content identifier
descriptionstringUser's description of the feedback
analyst_responsestringAnalyst's response to the feedback
created_onstringISO timestamp when feedback was created
updated_onstringISO timestamp when feedback was last updated
statusstringCurrent status (OPEN, CLOSED)
analyst_decisionstringFinal decision (REMOVED, NOT_REMOVED, PENDING)
response_sentbooleanWhether a response has been sent to user

User Object

FieldTypeDescription
idintegerUser's unique identifier
usernamestringUser's username

Category Object

FieldTypeDescription
idintegerCategory's unique identifier
namestringCategory name/code
descriptionstringHuman-readable description of the category

Hash Object

FieldTypeDescription
idintegerHash's unique identifier
hash_digeststringThe actual hash digest value

Response notifications

Once you submit a feedback request, we will automatically receive an email with the details of your issue. Our analysts aim to respond within 3 to 5 working days. You will receive a response at the email address you provided during onboarding.