> ## Documentation Index
> Fetch the complete documentation index at: https://developers.cutshort.io/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /sourcing/invite — Send Candidate Outreach Invites

> Send WhatsApp and email outreach invites to shortlisted candidates for a job. Invites include job details and a one-click response link.

The invite endpoint sends personalized outreach messages to one or more candidates for a specific job. Candidates receive the message on WhatsApp, email, or both — with a one-click link to express interest. You can use this endpoint after generating a shortlist or with any candidate IDs from search results.

## Endpoint

```http theme={null}
POST https://api.cutshort.io/v1/sourcing/invite
```

## Request Body

<ParamField body="job_id" type="string" required>
  The job to invite candidates for.
</ParamField>

<ParamField body="candidate_ids" type="array of strings" required>
  List of candidate IDs to invite. Maximum of `50` candidate IDs per request.
</ParamField>

<ParamField body="channel" type="string">
  The delivery channel for the invite. Accepted values: `whatsapp`, `email`, or `both`. Default: `both`.
</ParamField>

<ParamField body="message" type="string">
  A custom message to include in the invite (maximum 500 characters). If omitted, Cutshort uses a standard template.
</ParamField>

## Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST 'https://api.cutshort.io/v1/sourcing/invite' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -H 'Content-Type: application/json' \
    -d '{
      "job_id": "job_4xRt2wPv",
      "candidate_ids": ["cand_8f3kL9mN", "cand_2pQr7sYk", "cand_5vNm1xBd"],
      "channel": "both",
      "message": "We found your profile impressive and would love to discuss an exciting backend role at our B2C startup."
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.cutshort.io/v1/sourcing/invite",
      json={
          "job_id": "job_4xRt2wPv",
          "candidate_ids": ["cand_8f3kL9mN", "cand_2pQr7sYk", "cand_5vNm1xBd"],
          "channel": "both",
          "message": "We found your profile impressive..."
      },
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json"
      }
  )
  result = response.json()
  print(f"Sent {result['sent_count']} invites")
  ```
</CodeGroup>

## Response

Returns `200 OK` with a JSON body.

```json theme={null}
{
  "job_id": "job_4xRt2wPv",
  "sent_count": 3,
  "results": [
    { "candidate_id": "cand_8f3kL9mN", "status": "sent", "channel": "whatsapp" },
    { "candidate_id": "cand_2pQr7sYk", "status": "sent", "channel": "email" },
    { "candidate_id": "cand_5vNm1xBd", "status": "already_invited", "channel": null }
  ]
}
```

<Note>
  Candidates who have already been invited for a job in the past 30 days will have status `already_invited` and will not receive a duplicate message.
</Note>

<Warning>
  Invite sending is rate-limited to **500 invites per job per day**. Exceeding this limit returns error code `invite_limit_exceeded`.
</Warning>
