# Move a lead

Change a lead's stage and schedule its next follow-up in one request.

`PATCH /v1/leads/{id}` changes only the fields you send. To move a deal forward and book the next call:

<CodeGroup>

```bash title="cURL"
curl -X PATCH "https://api.leadup.group/v1/leads/0192f0c1-7a3e-7c51-9d2e-4b7f0a1c2d3e" \
  -H "Authorization: Bearer $LEADUP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "stage": "meeting", "nextFollowUpAt": "2026-10-20T14:00:00Z" }'
```

```ts title="Node.js"
await fetch(`https://api.leadup.group/v1/leads/${leadId}`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${process.env.LEADUP_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ stage: "meeting", nextFollowUpAt: "2026-10-20T14:00:00Z" }),
})
```

</CodeGroup>

The response is the updated lead. The key needs `leads:update`.

## The stages

A lead moves through six stages: `prospect`, `contacted`, `meeting`, `proposal`, then `won` or `lost`. Any stage may follow any other, so your integration can mirror how your team really works.

<Note title="Your team sees it at once">
  The app reads the same data, so a stage you change through the API shows on your team's pipeline straight away.
</Note>
