---
title: "Generate Icp"
method: POST
path: "/api/v1/onboarding/generate-icp"
tags: ["onboarding"]
---

# Generate Icp

`POST /api/v1/onboarding/generate-icp`

## 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/generate-icp`
- Auth: HTTP bearer

Claude produces ICP proposal. Client reviews & approves separately.

Accepts a lenient body (see :class:`GenerateICPInput`) and backfills
any missing/short field from the user's already-saved profile. This
is what makes Regenerate work after a hard refresh on Step 2 even
when the FE no longer has the business inputs in component state.

## Request body

- GenerateICPInput: Loose variant of ``OnboardingInput`` for ``/onboarding/generate-icp``. The fields are all optional so the FE can hit Regenerate without re-sending the business inputs every time — the endpoint backfills from the user's already-saved ``Client.icp_profile``. The endpoint itself enforces that *some* source (request body or stored profile) yields ≥ 10 char strings for all three fields before invoking Claude, and returns a clear 400 with the field name otherwise.
  - `company_pitch` string, nullable
  - `target_persona` string, nullable
  - `tone_prefs` string, nullable
  - `website_url` string, 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)
