[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Move candidate to a stage

> Move a candidate to another stage of a job. Inputs, cURL, Python and Node.js examples and an example response.

Source: https://cotlet.dev/docs/api/recruiterflow/move_candidate_stage

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

Move a candidate to another stage of a job.

Recruiterflow API: https://cotlet.dev/docs/api/recruiterflow.md

`POST https://cotlet.dev/api/v1/recruiterflow/jobs/{job_id}/candidates/{candidate_id}/stage/move`

Access: write. Confirm: waits for the user's OK before it runs.

Moves one candidate to the stage you name, as the stage name on the job card does. The move shows in the Activity Log with your user and the time. A stage with mandatory fields needs them in fields; without them the call returns the missing fields and moves nothing. A stage that asks for placement details (Hired) or a disqualification reason (Rejected) also returns its questions instead of moving. Stage changes can start automations and sequences your admins set up, which can email the candidate. By default you confirm each call; you can switch that off for this tool.

## Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `job_id` | string | yes | Job id from list_jobs. |
| `candidate_id` | string | yes | Candidate id from list_job_candidates. |
| `stage` | string | yes | Stage name as get_job shows it. |
| `fields` | object | no | Values for the fields the stage makes mandatory. |

## Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/recruiterflow/jobs/48213/candidates/771204/stage/move \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"stage":"Phone Screen"}'
```

**Python**

```python
result = client.call("recruiterflow", "move_candidate_stage", {"job_id":"48213","candidate_id":"771204","stage":"Phone Screen"})
```

**Node.js**

```js
const result = await cotlet.call('recruiterflow', 'move_candidate_stage', {"job_id":"48213","candidate_id":"771204","stage":"Phone Screen"});
```

**CLI**

```bash
cotlet call recruiterflow move_candidate_stage --data '{"job_id":"48213","candidate_id":"771204","stage":"Phone Screen"}'
```

## Example response

```json
{
  "candidate_id": "771204",
  "job_id": "48213",
  "from": "Sourced",
  "to": "Phone Screen",
  "moved_at": "2026-10-23T09:00:00Z",
  "moved_by": "Dana Reyes"
}
```

Previous: [Add candidates to a job](https://cotlet.dev/docs/api/recruiterflow/add_candidate_to_job.md)
Next: [Disqualify candidate](https://cotlet.dev/docs/api/recruiterflow/disqualify_candidate.md)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
