---
title: "Unlock leaks from a notification run"
method: POST
path: "/notification_runs/{run_id}/leaks/unlock"
tags: ["Notifications Runs"]
---

# Unlock leaks from a notification run

`POST /notification_runs/{run_id}/leaks/unlock`

## Request

- Base URL: `https://api.leakradar.io`
- URL: `https://api.leakradar.io/notification_runs/{run_id}/leaks/unlock`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/leakradar/apis/leakradar-io-api/docs/notification_runs/:run_id/leaks/unlock/post.ts> (a function with typed inputs; its response is checked against the schema)

Unlock leaks that belong to a specific notification run. You can optionally filter by `search` and `is_email`, and cap the number of new unlocks with `max`. The effective limit is capped by your available points.

**Behavior**
- Only items not previously unlocked in this run are attempted.
- Points are charged only for newly unlocked items.
- The response contains the final unlocked state for the requested IDs.

**Errors**
- 400 No leaks for this run, all data already unlocked, or no data matches the search.
- 401 Authentication required, or invalid/expired API key.
- 403 The target monitored by this run is blocked.
- 404 Run not found.
- 422 Request validation error.

## Path parameters

- `run_id` integer, required: ID of the notification run.

## Query parameters

- `max` integer, nullable: Max items to unlock (capped by your available points).
- `search` string, nullable: Optional free-text filter on URL or username.
- `is_email` boolean, nullable: Filter by identifier type: true=emails, false=usernames, null=both.
- `list_id` integer, nullable: Optional unlocked-list ID assigned to newly unlocked items.

## Response `200`

Leaks unlocked successfully.

- union[]
  - union
    - LeakDetails
      - `id` string, nullable: Unique leak identifier. Only returned when the item is unlocked or the plan includes full access.
      - `url` string, nullable: Source URL where the credentials were found. Redacted for locked items on non-advanced plans.
      - `username` string, nullable: Leaked username or email address. Masked when locked.
      - `username_masked` string, nullable: Partially masked version of the username (e.g. j***@example.com).
      - `password` string, nullable: Leaked password. Only returned when the item is unlocked.
      - `password_strength` integer, nullable: Password strength raw score (integer, 0+). Categories: too_weak (0-2), weak (3-4), medium (5-7), strong (8+).
      - `unlocked` boolean: Whether this item has been unlocked by the current account.
      - `is_email` boolean, nullable: True if the username is an email address, false if it is a plain username.
      - `added_at` string, date-time, nullable: Date when this leak was added to the database.
      - `status` string, nullable: Remediation status of the unlocked leak: new, in_progress, fixed, accepted_risk. Only present for unlocked items.
    - CombolistUnlockResult
      - `id` string, required
      - `username` string, required
      - `password` string, nullable
      - `password_strength` integer
      - `is_email` boolean, required
      - `email_domain` string, nullable
      - `added_at` string, date-time, required
      - `status` 'new' | 'in_progress' | 'fixed' | 'accepted_risk'
      - `dataset` 'combolist'
      - `unlocked` true
    - DatabaseResult
      - `id` string, nullable
      - `dataset` 'databases'
      - `unlocked` boolean, required
      - `fields` string[], required
      - `added_at` string, nullable
      - `record` object
      - `value_counts` object, nullable
      - `status` string, nullable
      - `comment` string, nullable

## Other responses

- `400`: No leaks, all already unlocked, or no data matches filter.
- `401`: Authentication required.
- `403`: The target monitored by this run is blocked.
- `404`: Run not found.
- `422`: Validation Error

## Changes

- **2026-09-07** `fb38761a1ce4`: 1 info
  - added `#/components/schemas/DatabaseResult` to the `items/` response property `anyOf` list for the response status `200`
- **2026-09-04** `eb219e94d077`: 1 breaking, 10 warning, 2 info
  - the `items/` response's property type changed from `object` to no type for status `200`
  - removed the optional property `items/added_at` from the response with the `200` status
  - removed the optional property `items/id` from the response with the `200` status
  - removed the optional property `items/is_email` from the response with the `200` status
  - …9 more
- **2026-09-01** `82a99c608e1a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/leakradar/apis/leakradar-io-api/changes/notification_runs/:run_id/leaks/unlock/post.md)

---

[API](https://skmtc.dev/leakradar/apis/leakradar-io-api.md) - [All operations](https://skmtc.dev/leakradar/apis/leakradar-io-api/llms.txt) - [OpenAPI document](https://skmtc.dev/leakradar/apis/leakradar-io-api/revisions/8dcd4b54cc4a?raw)
