# nv.unsaveLead

Unsave a lead in Sales Navigator, which also removes them from your custom lead lists.

> The API Reference is also the SDK and CLI reference. Consecutive code fences marked `tab=HTTP`, `tab=Node`, `tab=Python` and `tab=CLI` are the same call on each surface (a fence marked `tab=HTTP,CLI` is the same text for both), and a block between `:::surface <names>` and `:::` applies only to the surfaces it names. Identifiers in the text are written as in Node and in HTTP JSON (camelCase); the Python SDK spells methods, parameters and result attributes in snake_case (`sendMessage` → `send_message`, `reconnectionLink` → `reconnection_link`), while names inside HTTP JSON stay camelCase.

Unsave a lead in Sales Navigator. This is Sales Navigator's own Unsave: the person is no longer a saved lead and is removed from every custom lead list you own. An alert's `subject.url` from [`nv.retrieveAlerts`](/docs/action-nv-retrieve-alerts) can be passed straight to this action.

An active Sales Navigator subscription is required.

:::surface node,python
In the SDK this is the `nvUnsaveLead` method. It takes the parameters below except `label`, which exists only in workflow JSON. It returns no `data`: a failed action comes back in `errors`, with one of the error types below.
:::

:::surface cli
The command is `linkedin navigator person unsave`. Its argument is listed below.
:::

## Constraints

> ⏺️ **Root Start:** allowed, when `personHashedUrl` parameter is provided.

> ⬆️ **Parent Actions:** [nv.openPersonPage](/docs/action-nv-open-person-page).

> ⬇️ **Child Actions:** N/A.

## Parameters

```json tab=HTTP
{
  "actionType": "nv.unsaveLead",
  "label": "unsaveLead1",
  "personHashedUrl": "https://www.linkedin.com/in/SInQBmjJ015eLr8"
}
```

```typescript tab=Node
const workflow = await linkedapi.nvUnsaveLead.execute({
  personHashedUrl: "https://www.linkedin.com/in/SInQBmjJ015eLr8"
});

const { errors } = await linkedapi.nvUnsaveLead.result(workflow.workflowId);
```

```python tab=Python
from linkedapi import NvUnsaveLeadParams

workflow = linkedapi.nv_unsave_lead.execute(
    NvUnsaveLeadParams(
        person_hashed_url="https://www.linkedin.com/in/SInQBmjJ015eLr8",
    )
)

result = linkedapi.nv_unsave_lead.result(workflow.workflow_id)
```

```bash tab=CLI
linkedin navigator person unsave https://www.linkedin.com/in/SInQBmjJ015eLr8 --json
```

In AI assistants, the MCP tool is `nv_unsave_lead`. The n8n action is **Unsave lead in Sales Navigator**; the Make module is **Unsave Lead in Sales Navigator**.

| Parameter | Description |
| --- | --- |
| `label` | Optional label included in workflow completion. |
| `personHashedUrl` | Required for root start, forbidden for parent start. LinkedIn URL of the person, in any form [`nv.openPersonPage`](/docs/action-nv-open-person-page#accepted-urls) accepts: a [hashed](/faq/what-are-hashed-url-and-public-url) URL, an alert's `subject.url` (`/sales/lead/…`), or a public profile URL (`linkedin.com/in/<vanity>`), which costs one extra page load. Under [`nv.openPersonPage`](/docs/action-nv-open-person-page), the person whose page is open is unsaved. |

:::surface cli
| Arg | Required | Description |
| --- | --- | --- |
| `url` | yes | LinkedIn URL of the person: hashed, an alert's `subject.url`, or public |
:::

## Unsaving behaviour

- **Removed from your lists too.** Unsaving a lead also removes them from every custom lead list you own. To take a lead out of one list and keep them saved, use [`nv.removeLeadFromList`](/docs/action-nv-remove-lead-from-list) instead.
- **Safe to repeat.** Unsaving a person who is not a saved lead succeeds without changing anything.
- **Not available on search results.** This action cannot run under [`nv.doForPeople`](/docs/action-nv-do-for-people). Use it as a root action or under [`nv.openPersonPage`](/docs/action-nv-open-person-page).
- **Changes can take up to a few minutes to appear.** Sales Navigator can take up to a few minutes to reflect a change. A call that conflicts with a change you just made through Linked API, such as unsaving a lead you have just saved, may fail with `unexpectedError`; retry it a little later.
- **English interface only, for now.** This is a current limitation: saving and unsaving work only with an English Sales Navigator interface. On a German, Spanish, French or Portuguese interface, the call fails with `interfaceLanguageNotSupported`.

To save the lead again, use [`nv.saveLead`](/docs/action-nv-save-lead). To delete a whole lead list and keep its leads saved, use [`nv.deleteList`](/docs/action-nv-delete-list).

## Result options

```json
{
  "actionType": "nv.unsaveLead",
  "label": "unsaveLead1",
  "success": true
}
```

A successful unsave has no `data`. `label` is included only if specified in the action parameters.

## Error result

An unsuccessful action returns `success: false` with an `error` object:

```json
{
  "actionType": "nv.unsaveLead",
  "label": "unsaveLead1",
  "success": false,
  "error": {
    "type": "personNotFound",
    "message": "Provided URL is not an existing LinkedIn person."
  }
}
```

Possible `error.type` values:

- `noSalesNavigator` — the account does not have an active Sales Navigator subscription.
- `personNotFound` — the provided URL is not an existing LinkedIn person. This includes a public profile URL that leads to no LinkedIn profile.
- `interfaceLanguageNotSupported` — the account's Sales Navigator interface is German, Spanish, French or Portuguese rather than English. Nothing is changed; this is a current limitation (see above).
- `unexpectedError` — the unsave could not be completed. This includes a call that conflicts with a change you just made through Linked API: Sales Navigator can take up to a few minutes to reflect a change, so retry it a little later.
