---
title: "POST /public/v1/campaigns/{campaignId}/prospects"
method: POST
path: "/public/v1/campaigns/{campaignId}/prospects"
tags: ["Campaigns"]
---

# POST /public/v1/campaigns/{campaignId}/prospects

`POST /public/v1/campaigns/{campaignId}/prospects`

## Request

- Base URL: `https://api.joinvalley.co`
- URL: `https://api.joinvalley.co/public/v1/campaigns/{campaignId}/prospects`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/joinvalley/apis/valley-public-api/docs/public/v1/campaigns/:campaignId/prospects/post.ts> (a function with typed inputs; its response is checked against the schema)

Add people to a campaign: everyone on a saved list (listId), the ones you choose from it (listId + prospectIds), and/or anyone by LinkedIn profile URL (linkedinUrls), up to 1000 named people per call. Owners, admins and managers may target any seat's campaign; members their own. Each person comes back with an outcome: queued, or skipped as already_in_campaign, in_another_campaign (named in detail), do_not_contact, already_contacted, not_on_list, invalid_linkedin_url or no_linkedin_profile. Queued people still pass Valley's own checks (company Do Not Contact, connection degree) before they join. An email Valley already found for someone is reused, not charged again.

## Path parameters

- `campaignId` string, required

## Request body

- object
  - `workspaceId` string: Required unless the key is scoped to one workspace.
  - `listId` string
  - `prospectIds` string[]
  - `linkedinUrls` string[]

## Response `200`

Default Response

- object
  - `statusCode` number
  - `status` boolean
  - `message` string
  - `data` object
    - `campaign` object
      - `id` string
      - `name` string
      - `ownerId` string
    - `queued` number
    - `skipped` number
    - `results` object[]
      - `prospectId` string, nullable
      - `linkedinUrl` string, nullable
      - `outcome` string
      - `detail` string

## Other responses

- `400`: Default Response
- `401`: Default Response
- `403`: Default Response
- `404`: Default Response
- `429`: Default Response
- `500`: Default Response

## Changes

- **2026-10-22** `f783c1756212`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/joinvalley/apis/valley-public-api/changes/public/v1/campaigns/:campaignId/prospects/post.md)

---

[API](https://skmtc.dev/joinvalley/apis/valley-public-api.md) - [All operations](https://skmtc.dev/joinvalley/apis/valley-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/joinvalley/apis/valley-public-api/revisions/96a6cad33a47?raw)
