---
title: "Re-dive an existing Niche"
method: POST
path: "/v1/niches/{nicheId}/redive"
tags: ["v1"]
---

# Re-dive an existing Niche

`POST /v1/niches/{nicheId}/redive`

Re-runs a Dive on an existing Niche to refresh its research data. Two modes:

- `same_competitors` — re-dives the Niche's current Competitor set. Takes no other field.
- `discover` — searches for a fresh Competitor set, keeping any `lockedAsins` and skipping any `excludedAsins`. `numberOfCompetitors` is the total number of ASINs the refreshed Dive should contain, including the locked ones. `heroAsin` is the seed product discovery starts from; when omitted it defaults to the Niche Competitor with the highest sales, preferring one that belongs to one of your connected seller accounts.

The Dive runs asynchronously and consumes Dive tokens like any other Dive. Poll GET /v1/niches/dives/{diveId} with the returned `diveId` until the status is `success` or `error`. The refreshed data stays on the same `nicheId`; no new Niche is created.

## Path parameters

- `nicheId` string, required

## Request body

- RediveNicheRequestDto
  - `mode` 'same_competitors' | 'discover', required — How to pick the Competitors for the refreshed Dive. `same_competitors` re-dives the Niche's current Competitor set and takes no other field. `discover` searches for a fresh Competitor set.
  - `numberOfCompetitors` integer — Total number of ASINs the refreshed Dive should contain, including `lockedAsins`. Required in `discover` mode and rejected in `same_competitors` mode. Dive tokens are consumed for each ASIN.
  - `heroAsin` string — Seed product the Competitor discovery starts from. Defaults to the Niche Competitor with the highest sales, preferring one that belongs to one of your connected seller accounts. `discover` mode only.
  - `lockedAsins` string[] — ASINs that must be kept in the refreshed Competitor set regardless of what discovery finds. `discover` mode only.
  - `excludedAsins` string[] — ASINs that discovery must never select. `discover` mode only.

## Response `200`

- object
  - `message` string
  - `data` object
    - `diveId` string, required — Unique identifier for the re-dive. Poll `GET /v1/niches/dives/{diveId}` with it to track progress.
    - `estimatedCompletionDate` string, required — Estimated completion timestamp for the re-dive in ISO 8601 format

## Other responses

- `400` — Invalid nicheId or request body, a field that does not belong to the given mode, or not enough Dive tokens for the requested number of Competitors
- `401` — Api key is invalid
- `403` — The Niche belongs to another subscription, or the requested number of Competitors exceeds your plan limit
- `404` — Niche not found, or it has no completed research to re-dive
- `422` — In `same_competitors` mode, current product data could no longer be found for enough of the Niche's Competitors to re-dive (for example they were delisted). No Dive tokens are consumed.
- `429` — Rate limit exceeded (2 requests/min per API key).
- `500` — Internal error

---

[API](https://skmtc.dev/datadive/apis/data-dive-developer-apis.md) · [All operations](https://skmtc.dev/datadive/apis/data-dive-developer-apis/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/datadive/data-dive-developer-apis/revisions/03207abc96ba/schema)
