> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clavata.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Handling Sensitive Content: CSAM

> How Moonbounce detects CSAM through NCMEC hash matching and PhotoDNA perceptual matching, and how to use the matchConfidence field on precheck failures.

This page deals with sensitive content, including abuse targeted at children. This banner serves as a content warning before reading on.

Glossary of terms

* [NCMEC](https://www.missingkids.org/home) = National Center for Missing and Exploited Children - NCMEC works with local and federal agencies in the USA along with other countries when it comes to investigating and reporting instances of CSAM and other abuses towards children.
* CSAM = Child Sexual Abuse Material - this represents abuse or exploitation of a minor that is typically sexual in nature
* Hash Database - NCMEC maintains a validated hash database of known CSAM. This database is used by Moonbounce to check if uploaded content presents an exact hash match.
* PhotoDNA - a perceptual hashing technology used to detect content that is visually similar to known CSAM, even when the file has been resized, re-encoded, or lightly edited. Unlike an exact hash match, PhotoDNA reports how close a match is.

## How does Moonbounce detect this content?

When evaluating image content, Moonbounce checks it against known CSAM using two complementary techniques:

1. **NCMEC exact hash match** - the image's cryptographic hash (md5/sha1) is compared against NCMEC's validated database. An exact match is the highest-confidence signal that the file is a known instance of CSAM.
2. **PhotoDNA perceptual match** - the image is compared perceptually so that near-duplicates and lightly modified copies of known CSAM are also caught. Because this is a similarity measure rather than an exact match, the result is graded by how close the match is.

When content matches, you will see a precheck failure in your [API response](/api-reference/get-jobs/get-job-details).

<img src="https://mintcdn.com/clavataai/c1TjE60MU2KMEGW7/public/images/file-MACC9A4pVR.png?fit=max&auto=format&n=c1TjE60MU2KMEGW7&q=85&s=0e65cd5c0a3af5c905f6f100dfc00bc5" alt="file-MACC9A4pVR.png" width="1718" height="1508" data-path="public/images/file-MACC9A4pVR.png" />

All CSAM detections — whether from an exact hash match or a PhotoDNA perceptual match — are reported with the precheck failure type **`PRECHECK_FAILURE_TYPE_NCMEC`**. This type means "treat this content as CSAM."

## Match confidence

Precheck failures include a `matchConfidence` field that tells you *how* the content was identified and how strong the signal is. This lets you tailor your response to the strength of the match.

| `matchConfidence` | What it means                                                                                                 |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| `EXACT`           | Exact NCMEC hash match. The file is a known instance of CSAM. Highest confidence.                             |
| `HIGH`            | PhotoDNA perceptual match in the closest distance band (near-duplicate of known CSAM).                        |
| `MEDIUM`          | PhotoDNA perceptual match in the middle distance band (moderate visual similarity).                           |
| `LOW`             | PhotoDNA perceptual match in the farthest distance band (loose similarity; review recommended).               |
| `UNSPECIFIED`     | No confidence tier reported. Returned for non-CSAM failures and for legacy responses that predate this field. |

## Suggested handling

Every confidence tier indicates a potential CSAM match and should be treated seriously. The following is **guidance, not a mandate** — you know your platform, your legal obligations, and your risk tolerance best, and you should set policy accordingly.

* **`EXACT`** is a confirmed match against the NCMEC database. Many platforms choose to block and report this content automatically.
* **`HIGH`** is a very close perceptual match. It is reasonable to treat it like `EXACT` and act automatically, depending on your tolerance for false positives.
* **`MEDIUM`** and **`LOW`** are progressively looser perceptual matches. These are good candidates to route to a trained human reviewer before taking irreversible action, rather than auto-enforcing.

When you do act on a match, the steps below outline a common workflow:

1. Lock the content down! Ensure other users on your platform can't view this content.
2. Head over to NCMEC's [CyberTipline Report](https://report.cybertip.org/) to report the content to NCMEC.
   1. When filling out the report be detailed and provide as much information as you can.
3. You will typically need to isolate the content on your system for a period of time in order to securely share the content with NCMEC.
4. From there you should follow guidance and instructions from NCMEC.

## We'd Love to Hear From You

Whether you have a suggestion, feedback, or a bug to report, here are the best ways to get in touch:

* **In the App:** Use the **Feedback button** for direct suggestions.
* **On Slack:** Reach out to the team in your shared channel.
* **With your AM:** Talk to your dedicated account manager.
* **Via Email:** Send a message to [**support@moonbounce.io**](mailto:support@moonbounce.io).
* **Security, availability, or other incidents:** Use the in-app **Feedback button** or email [**support@moonbounce.io**](mailto:support@moonbounce.io). See [Customer Feedback](/feedback/customer_feedback) for what to include.
