---
title: "Decide Keyword Suggestion"
method: POST
path: "/api/v1/onboarding/keyword-suggestions/{suggestion_id}"
tags: ["onboarding"]
---

# Decide Keyword Suggestion

`POST /api/v1/onboarding/keyword-suggestions/{suggestion_id}`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/onboarding/keyword-suggestions/{suggestion_id}`
- Auth: HTTP bearer

Accept (merge into icp.keywords, case-insensitive dedup) or reject a
pending suggestion. Returns the resulting ICP either way so the UI can
refresh from one response.

2026-07-28: with ``campaign_id`` the merge target is that campaign's
``icp_override`` — the ICP campaign-first discovery actually searches with.
Without it, the account ICP, unchanged for un-flipped clients.

## Path parameters

- `suggestion_id` string, uuid, required

## Request body

- KeywordSuggestionDecision
  - `action` string, required
  - `campaign_id` string, uuid, nullable

## Response `200`

Successful Response

- ICPResponse
  - `summary` string, required
  - `criteria` string[], required
  - `keywords` string[], required
  - `style_notes` string[], required
  - `sample_message` string, required
  - `locations` string[]
  - `industries` string[]
  - `skills` string[]
  - `titles` string[]
  - `calibration_anchors` object[]
  - `exclusions` object
  - `product_summary` string

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/nudgelink/apis/nudgelink-api.md) · [All operations](https://skmtc.dev/nudgelink/apis/nudgelink-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nudgelink/apis/nudgelink-api/revisions/baa46e6db986?raw)
