Submit to Thorn API

Thorn Overview

Hive's partnership with Thorn allows Hive customers to easily integrate Thorn's API to match against other known CSAM (Child Sexual Abuse Material) or SE (Sexual Exploitation) examples in Thorn's database along with our proprietary CSAM detection API, which uses embeddings to detect novel child sexual abuse material (CSAM) content.

The Detection API along with the Matching API are both available to use on the Moderation Dashboard. Please reach out to sales at [email protected] to get access to both APIs and have them mapped to your Moderation Dashboard.


Submit to Thorn

Include Thorn flag in your API Request (Async Only)

Once your application is set up with Thorn, you can enable the thorn flag in your Async API request. Please refer to the API documentation below:

https://api.hivemoderation.com/api/v2/task/async

If you are using the v1 endpoint, you can also submit to Thorn.

https://api.hivemoderation.com/api/v1/task/async
Field (* required)TypeDescription
thorn_enabledBooleanIf enabled, the Dashboard will first submit your media to the Thorn APIs. If the results include CSAM, the Dashboard will not submit to the other model(s) specified in the request.

If the results are clean, the Dashboard will resume submission to the other model(s) specified in the request.

Thorn Responses

Thorn responses are separate from the model responses. The Dashboard will return a separate callback with just Thorn results. Please refer to the sample responses below:

Initial API Response

{
   "task_ids": [
       "task_id_1",
       "task_id_2"
   ],
   "post_id": "jan7-4",
   "user_id": "jan7-4",
   "project_status_map": {
       "32952": {
           "moderation_type": "visual",
           "status": "awaiting_thorn"
       },
       "42913": {
           "moderation_type": "demographic",
           "status": "awaiting_thorn"
       },
       "103021708": {
           "moderation_type": "thorn_matching",
           "task_id": "task_id_1",
           "status": "pending"
       },
       "104408158": {
           "moderation_type": "thorn_detection",
           "task_id": "task_id_2",
           "status": "pending"
       }
   },
   "message": "We received your submission."
}

Callback API Response (CSAM DETECTED)

{
  "task_ids": [
       "97c6dfe1-c250-11ef-8763-637c0a853f6c123214",
       "97c706f0-c250-11ef-8b28-35b4e9d11bff123241"
  ],
  "thorn_results": "csam",
  "post_id": "dec24-1-1",
  "user_id": "dec24-1-1",
  "project_status_map": {
    "103021708": {
      "moderation_type": "thorn_matching",
      "task_id": "97c6dfe1-c250-11ef-8763-637c0a853f6c123214",
      "status": "success"
    },
    "104408158": {
      "moderation_type": "thorn_detection",
      "task_id": "97c706f0-c250-11ef-8b28-35b4e9d11bff123241",
      "status": "success"
    }
  },
  "content_id": "2GutgpFiNETBp5fLzDlxPj_2024-12-24T23:44:40.911Z_0U0TVGlciG0X2elhbKOSb8",
  "triggered_rules": [],
  "triggered_background_rules": []
}

Thorn Callback API Response (NO CSAM)

{
  "task_ids": [
    "task_1",
    "task_2",
    "task_3",
    "task_4"
  ],
  "post_id": "jan7-7",
  "user_id": "jan7-7",
  "project_status_map": {
    "32952": {
      "moderation_type": "visual",
      "task_id": "task_1,
      "status": "pending"
    },
    "42913": {
      "moderation_type": "demographic",
      "task_id": “task_2",
      "status": "pending"
    },
    "103021708": {
      "moderation_type": "thorn_matching",
      "task_id": "task_3",
      "status": "success"
    },
    "104408158": {
      "moderation_type": "thorn_detection",
      "task_id": "task_4",
      "status": "success"
    }
  }
}

Full Callback API Response with Thorn Results (NO CSAM)

{
  "task_ids": [
    "task_1",
    "task_2",
    "task_3",
    "task_4"
  ],
  "post_id": "jan7-7",
  "user_id": "jan7-7",
  "project_status_map": {
    "32952": {
      "moderation_type": "visual",
      "task_id": "task_1",
      "status": "success"
    },
    "42913": {
      "moderation_type": "demographic",
      "task_id": "task_2",
      "status": "success"
    },
    "103021708": {
      "moderation_type": "thorn_matching",
      "task_id": "task_3",
      "status": "success"
    },
    "104408158": {
      "moderation_type": "thorn_detection",
      "task_id": "task_4",
      "status": "success"
    }
  },
  "content_id": "4A8UGOc2Y8YF36WUf5EyvH_2025-01-08T06:20:15.446Z_0U0TVGlciG0X2elhbKOSb8",
  "triggered_rules": [],
  "triggered_background_rules": []
}



CSAM Review Feed

On the Settings page, you can enable the NCMEC Review Feed. This will display only CSAM in the Review Feed for images flagged by Thorn. CSAM images will automatically be sent to the Review Feed for Review.

❗️

Displaying CSAM Content

The Dashboard will never display CSAM content in the Review Feed. Instead, each task will surface a link that the moderator can click on. Once clicked, the media will open in a new browser tab for the moderator to review.