---
title: "Refresh Fast Keywords"
method: POST
path: "/v1/fast-keywords/{fastKeywordsId}/refresh"
tags: ["v1"]
---

# Refresh Fast Keywords

`POST /v1/fast-keywords/{fastKeywordsId}/refresh`

## Request

- Base URL: `https://api.datadive.tools`
- URL: `https://api.datadive.tools/v1/fast-keywords/{fastKeywordsId}/refresh`
- Auth: API key in header `x-api-key`

Runs Fast Keywords again for a result you requested before, updating it in place under the same `fastKeywordsId`. Costs 1 Dive token. A result can be refreshed once every 24 hours, and not while a run is in progress.

**Previewing.** Send `dryRun: true` to run the same checks and get `tokenCost` and `hasEnoughTokens` without running anything.

## Path parameters

- `fastKeywordsId` number, required

## Request body

- RefreshFastKeywordsRequestDto
  - `dryRun` boolean: Check eligibility and Dive tokens without running anything or spending a token

## Response `201`

- object
  - `success` boolean
  - `data` union
    - FastKeywordsRunResponseDto
      - `fastKeywordsId` number, required: Id of the Fast Keywords result. Poll GET /v1/fast-keywords/{fastKeywordsId} with it.
      - `requestId` number, required: Id of this request
      - `status` 'in-progress' | 'failed' | 'success', required: `success` right away when a fresh result for the same product already exists
      - `tokenCost` number, required: Dive tokens this call consumed
      - `estimatedCompletionDate` string, required: Estimated completion timestamp in ISO 8601 format
    - FastKeywordsRunPreviewResponseDto
      - `tokenCost` number, required: Dive tokens the call would consume
      - `hasEnoughTokens` boolean, required: Whether your organization has enough Dive tokens left

## Other responses

- `400`: Invalid fastKeywordsId, or not enough Dive tokens
- `401`: Api key is invalid
- `403`: Unauthorized to access the resource
- `404`: No Fast Keywords result with this id was requested by you
- `409`: A run is in progress (`IN_PROGRESS`), or the result was refreshed less than 24 hours ago (`COOLDOWN`, with `nextEligibleAt`)
- `429`: Rate limit exceeded (2 requests/min per API key).
- `500`: Internal error
- `503`: Our product data provider is rate-limited. No token was spent; try again in a few minutes.

## Changes

- **2026-10-23** `8196b366773e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/datadive/apis/data-dive-developer-apis/changes/v1/fast-keywords/:fastKeywordsId/refresh/post.md)

---

[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.dev/datadive/apis/data-dive-developer-apis/revisions/94c025cac171?raw)
