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

# Internal Blacklists

> Create company-owned face watchlists and screen incoming verifications against them in your Trust Flows.

An **internal blacklist** is a company-owned watchlist of face images that you build yourself. During verification, incoming faces are screened against the blacklists you select in your Trust Flow tool settings.

Blacklists are company-scoped and private. A blacklist is only ever visible and matchable within the company that created it.

## When to use it

Use Internal Blacklists when you need to block or flag people you already know about, for example:

* Known fraudsters
* Repeat chargeback or abuse actors
* Previously rejected applicants
* Internally banned users
* Staff or agent fraud rings
* Regulator- or partner-supplied deny lists

## Internal Blacklists vs Duplicate Detection

These two features often get confused. They live in the same tool settings panel and can run together, but they answer different questions.

|                         | Internal Blacklist                                            | Duplicate Detection                                                  |
| ----------------------- | ------------------------------------------------------------- | -------------------------------------------------------------------- |
| What it screens against | Only the specific blacklists you select in the tool settings  | Every face your company has previously enrolled through verification |
| Who populates it        | You do — deliberately, via the dashboard or the API           | Populated automatically as verifications run                         |
| Purpose                 | "Is this a person we've decided to block?"                    | "Have we already seen this face before?"                             |
| Result shown as         | Blacklist Detected (per blacklist, with the blacklist's name) | Duplicate Detected                                                   |

Both surface on the same **Duplicates & Blacklists** tab of a Trust Validation.

## Before you start

* The feature must be enabled for your company. If **Internal Blacklists** is not in the sidebar under Features, contact your IDmeta account manager.
* You need company-level dashboard access to create blacklists, enroll faces, and configure Trust Flows.

## Step 1 — Create a blacklist

<Steps>
  <Step title="Open Internal Blacklists">
    In the dashboard, go to **Features → Internal Blacklists** (`/company/internal-biometrics`).

    <Frame caption="Internal Blacklists list page">
      <img src="https://mintcdn.com/idmeta/yTJrXS1O81KvATmc/images/internal-blacklists-list.png?fit=max&auto=format&n=yTJrXS1O81KvATmc&q=85&s=3c1d4338bd349dc41f9a6ea9d3df975f" alt="Internal Blacklists page showing a table of blacklists with Name, Description, Enrolled Faces, Status, Created At, and Actions, plus a Create Blacklist button" width="1024" height="396" data-path="images/internal-blacklists-list.png" />
    </Frame>
  </Step>

  <Step title="Create the blacklist">
    Click **+ Create Blacklist**. Enter a **Name** (required, unique within your company, max 100 characters) and an optional **Description** (max 255 characters). Click **Create**.

    <Frame caption="Create Blacklist modal">
      <img src="https://mintcdn.com/idmeta/yTJrXS1O81KvATmc/images/internal-blacklists-create-modal.png?fit=max&auto=format&n=yTJrXS1O81KvATmc&q=85&s=5cbf4a556c01361c2bf1480bdf4cdf04" alt="Create Blacklist modal with Name field and optional Description field" width="954" height="846" data-path="images/internal-blacklists-create-modal.png" />
    </Frame>
  </Step>
</Steps>

Each blacklist has an **Active** or **Inactive** status. Inactive blacklists cannot receive new face uploads and are not screened against.

## Step 2 — Add face images

<Steps>
  <Step title="Open the blacklist detail page">
    Click a blacklist name in the list to open its detail page. The **Enrolled Faces in Blacklist** table shows each face's ID, Name, Status, and Enrolled At timestamp.

    <Frame caption="Blacklist detail page with enrolled faces">
      <img src="https://mintcdn.com/idmeta/yTJrXS1O81KvATmc/images/internal-blacklists-detail.png?fit=max&auto=format&n=yTJrXS1O81KvATmc&q=85&s=a18b037d8aa911c4e73fefe1648987ab" alt="Blacklist detail page showing Enrolled Faces table with ID, Name, Status, Enrolled At, search, status filter, refresh, and Add Face Images button" width="1024" height="469" data-path="images/internal-blacklists-detail.png" />
    </Frame>
  </Step>

  <Step title="Upload face images">
    Click **Add Face Images** and select your files.

    Standard limits (may be configurable per deployment):

    * Formats: JPG, JPEG, PNG
    * Up to 50 images per upload
    * Up to 10 MB per file
    * Each image should contain one clear, front-facing face

    The face **Name** is taken from the uploaded file's filename (without extension). Name your files meaningfully — that name appears in match results.
  </Step>

  <Step title="Wait for enrollment to finish">
    Enrollment is asynchronous. The upload is accepted immediately and processed in the background. Faces move from **Pending** → **Enrolled** or **Failed**.

    Use the refresh button on the Enrolled Faces table to see updated statuses. A large batch takes a short while.

    A failed face shows the reason returned by the biometric engine (for example, no face detected). Fix the image and re-upload it — failed rows do not block the rest of the batch.

    A batch can finish as **Completed**, **Partially Completed** (some faces failed), or **Failed**.
  </Step>
</Steps>

Each enrolled face gets its own ID. That same ID appears as **Blacklist Face Upload ID** on a Trust Validation match, so you can trace a hit back to the exact enrolled image.

## Step 3 — Turn on blacklist screening in a Trust Flow

<Steps>
  <Step title="Open Biometrics Verification tool settings">
    Open the [Trust Flow](/trust-flows/creating-a-trust-flow) that includes **Biometrics Verification**, then open the product **Tool Settings**.
  </Step>

  <Step title="Enable Perform Blacklist Detection">
    Turn on **Perform Blacklist Detection**. Under **Blacklists to screen against**, select one or more blacklists. The picker shows each blacklist's enrolled face count (for example, `Blacklist 2 (8 faces)`).

    Only blacklists owned by your company can be selected.

    <Frame caption="Biometrics Verification tool settings with blacklist detection enabled">
      <img src="https://mintcdn.com/idmeta/yTJrXS1O81KvATmc/images/internal-blacklists-tool-settings.png?fit=max&auto=format&n=yTJrXS1O81KvATmc&q=85&s=33e9953346543cac0e1f0f551989c861" alt="Biometrics Verification tool settings showing Perform Blacklist Detection toggle enabled and Blacklists to screen against multi-select with one blacklist selected" width="714" height="1024" data-path="images/internal-blacklists-tool-settings.png" />
    </Frame>
  </Step>

  <Step title="Save the Trust Flow">
    Click **Save Settings**, then save the Trust Flow as described in [Creating a Trust Flow](/trust-flows/creating-a-trust-flow).

    Screening runs when the verification is finalised. The incoming selfie is compared against every face in the selected blacklists.
  </Step>
</Steps>

## Step 4 — Read the results

When a match is found, open the Trust Validation detail page and select the **Duplicates & Blacklists** tab. Matches appear in a **Biometrics Verification Blacklist Detected** card.

<Frame caption="Trust Validation Duplicates and Blacklists tab showing a blacklist match">
  <img src="https://mintcdn.com/idmeta/yTJrXS1O81KvATmc/images/internal-blacklists-trust-validation-results.png?fit=max&auto=format&n=yTJrXS1O81KvATmc&q=85&s=4183d50bb7a4c132f7369f18750e0b14" alt="Trust Validation result with Review Needed status and Biometrics Verification Blacklist Detected card showing Blacklist Name, Full Name, Similarity Score, and Blacklist Face Upload ID" width="1024" height="262" data-path="images/internal-blacklists-trust-validation-results.png" />
</Frame>

Each match row shows:

* **Blacklist Name** — which list the face matched
* **Full Name** — the enrolled face's name (from the filename)
* **Similarity Score** — the engine's similarity score for that match (for example, 99%)
* **Blacklist Face Upload ID** — links back to the enrolled face

If the same face matches faces in several blacklists, each blacklist is reported separately.

By default, a match sets the Trust Validation to **Review Needed** so a human can adjudicate. The default action is configurable — you can instead **Reject** the validation automatically. Review Needed is the default. The engine returns a similarity score per match; there is no fixed threshold documented here.

## Managing blacklists

| Action                   | What it does                                                                                                                                           |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Edit name or description | Updates how the blacklist appears in the list and in match results. Names must stay unique within your company.                                        |
| Deactivate               | Sets status to Inactive. The blacklist cannot receive new face uploads and is not screened against.                                                    |
| Delete a face            | Removes that face from the blacklist so it is no longer matched in future verifications. It does not change Trust Validations that already matched it. |

## Best practices

* Enroll clear, well-lit, front-facing images. Avoid group photos, heavy occlusion, sunglasses, low resolution, or screenshots of screens.
* Enroll two or three images of the same person when you have them. More angles means more reliable matching.
* Use filenames that identify the person or case. They become the face's Name in match results.
* Keep separate blacklists for separate purposes (for example, Confirmed Fraud, Chargeback Abuse, Internal Ban). Match results then say why someone was flagged, and you can screen against different lists in different Trust Flows.
* Keep lists current. Remove faces that are no longer relevant.
* Keep a human in the review loop rather than auto-rejecting, unless your policy explicitly calls for it.

<Warning>
  Face images are biometric personal data. Only enroll images you have a lawful basis to store and screen against. Follow your retention policy and applicable privacy law, and keep an internal record of why each person was added.
</Warning>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Internal Blacklists is not in my sidebar">
    The feature is permission-gated. Contact your IDmeta account manager to have it enabled for your company.
  </Accordion>

  <Accordion title="Face stuck on Pending">
    Enrollment is queued and asynchronous. Use the refresh button on the Enrolled Faces table. Large batches take a short while to process.
  </Accordion>

  <Accordion title="Face shows Failed">
    Check the failure reason shown on the row. This is usually image quality or no detectable face. Fix the image and re-upload it.
  </Accordion>

  <Accordion title="Blacklist screening is on but no results appear on the Trust Validation">
    Confirm that:

    1. At least one blacklist is selected in the tool settings
    2. The blacklist is **Active** and has **Enrolled** faces (not Pending or Failed)
    3. Settings were saved and the Trust Flow was re-saved before the validation ran
  </Accordion>

  <Accordion title="Cannot upload faces">
    Common causes: the blacklist is Inactive, the file is not JPG/JPEG/PNG, a file exceeds 10 MB, or the batch has more than 50 files.
  </Accordion>

  <Accordion title="A blacklist cannot be selected in the tool settings">
    The blacklist belongs to another company, or it is inactive.
  </Accordion>
</AccordionGroup>

## Enroll faces via API

Everything above can also be done programmatically for bulk or automated enrollment.

| Method | Path                                                                                                                      | Purpose                                                                                        |
| ------ | ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `GET`  | [`/api/v3/biometric-blacklists`](/api-reference/internal-blacklist/face-enrollment/list-blacklists)                       | List your blacklists and their IDs (needed for the upload call)                                |
| `POST` | [`/api/v3/biometric-blacklists/{blacklistId}/faces`](/api-reference/internal-blacklist/face-enrollment/upload-faces)      | Upload up to 50 images; returns an `uploadId` and is processed asynchronously (`202 Accepted`) |
| `GET`  | [`/api/v3/biometric-blacklists/uploads/{uploadId}`](/api-reference/internal-blacklist/face-enrollment/poll-upload-status) | Poll the batch status, including succeeded and failed counts                                   |

Creating, editing, and deleting blacklists is **dashboard-only**. The API enrolls faces into blacklists that already exist.

Authentication follows the same scheme as all other v3 endpoints. See [Introduction to the API](/api-reference/introduction).

<CardGroup cols={2}>
  <Card title="Face enrollment overview" icon="book-open" href="/api-reference/internal-blacklist/face-enrollment/overview">
    End-to-end flow, status values, and authentication.
  </Card>

  <Card title="List blacklists" icon="list" href="/api-reference/internal-blacklist/face-enrollment/list-blacklists">
    `GET /api/v3/biometric-blacklists`
  </Card>

  <Card title="Upload faces" icon="upload" href="/api-reference/internal-blacklist/face-enrollment/upload-faces">
    `POST /api/v3/biometric-blacklists/{blacklistId}/faces`
  </Card>

  <Card title="Poll upload status" icon="refresh-cw" href="/api-reference/internal-blacklist/face-enrollment/poll-upload-status">
    `GET /api/v3/biometric-blacklists/uploads/{uploadId}`
  </Card>
</CardGroup>
