---
title: "Create Prospecting Run"
method: POST
path: "/api/prospecting/run"
tags: ["prospecting"]
---

# Create Prospecting Run

`POST /api/prospecting/run`

Start a manual prospecting scan. Auto-detects run mode.

Phase 2: accepts structured intake (`selling_summary`, `selling_service_ids`,
`targeting`, `free_text_direction`). Builds a `goal` dict that the runner
threads through to every saved deal. Legacy `focus_prompt` is still
accepted for backwards compat.

## Query parameters

- `user_id` string, nullable
- `org_id` string, nullable

## Request body

- CreateRunRequest — Structured prospecting intake (Phase 2 of split-prospecting-pipeline-agents). Phase 2 introduces goal anchoring: every saved deal carries a `goal` jsonb column derived from `selling_summary` + `selling_service_ids` + `targeting`. The pipeline agent uses this as its success measure on every replan. Backwards-compat: callers that still pass `focus_prompt` get its value forwarded to `free_text_direction`. New callers should pass the four structured fields directly.
  - `selling_summary` string, nullable — What the user is trying to sell. REQUIRED for new callers.
  - `selling_service_ids` string[] — Service IDs to anchor outreach on. Surfaces titles in the prompt.
  - `targeting` string, nullable — Who the user wants to target — ICP signals, segment, etc.
  - `targeting_mode` 'unconfigured' | 'everyone' | 'criteria', nullable — How the audience was chosen. Omit to infer: targeting text -> 'criteria', empty -> 'unconfigured'. Pass 'everyone' ONLY when the user explicitly chose their whole network — empty targeting is never silently promoted to 'everyone'.
  - `free_text_direction` string, nullable — Free-form user direction (legacy `focus_prompt` slot).
  - `candidate_limit` integer, nullable — Max number of candidate contacts to scan per page (default 100).
  - `max_leads` integer, nullable — Optional cap on qualified leads to persist this run. Defaults to candidate_limit.
  - `target_leads` integer, nullable — Target number of new pending leads for lead-target GLM runs.
  - `focus_prompt` string, nullable — DEPRECATED — use free_text_direction. Kept for legacy clients.
  - `goal_id` string, nullable — Confirmed prospecting goal id selected by preflight.
  - `create_new_goal` boolean — Create a confirmed new goal from this intake before enqueue.

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/every/apis/every-api.md) · [All operations](https://skmtc.net/every/apis/every-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/every/every-api/versions/9744001af85d/schema)
