Skip to main content
POST
/
v1
/
leaves
/
{id}
/
cancel
Cancel a leave
curl --request POST \
  --url https://api.plane.com/v1/leaves/{id}/cancel \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "reason": "<string>"
}
'
{
  "id": "lv_1HPCXADYAhh5k1NMU0r1WUqs",
  "status": "cancelled",
  "type": "vacation",
  "worker": "wr_CgcLakmx4guire",
  "starts": "2026-04-14",
  "ends": "2026-04-16",
  "days": 2.5,
  "hours": 20,
  "schedule": {
    "2026-04-14": 8,
    "2026-04-15": 8,
    "2026-04-16": 4
  },
  "note": "Annual vacation",
  "request": {
    "id": "lvr_6r3wLwX44s0Ak0bDkP5n2r7Q",
    "status": "cancelled",
    "created": "2026-03-10T18:42:11Z",
    "updated": "2026-03-11T09:05:52Z"
  },
  "created": "2026-03-10T18:42:11Z",
  "updated": "2026-03-11T09:05:52Z"
}
Use this endpoint when an existing leave should no longer count for scheduling, balances, or payroll. Plane marks the leave as cancelled and reverses any posted or scheduled leave usage tied to it.

Parameters

id
string
required
The ID of the leave to cancel.
reason
string
Optional cancellation note attached to the leave decision.

Returns

Returns the updated Leave object.
{
  "id": "lv_1HPCXADYAhh5k1NMU0r1WUqs",
  "status": "cancelled",
  "type": "vacation",
  "worker": "wr_CgcLakmx4guire",
  "starts": "2026-04-14",
  "ends": "2026-04-16",
  "days": 2.5,
  "hours": 20,
  "schedule": {
    "2026-04-14": 8,
    "2026-04-15": 8,
    "2026-04-16": 4
  },
  "note": "Annual vacation",
  "request": {
    "id": "lvr_6r3wLwX44s0Ak0bDkP5n2r7Q",
    "status": "cancelled",
    "created": "2026-03-10T18:42:11Z",
    "updated": "2026-03-11T09:05:52Z"
  },
  "created": "2026-03-10T18:42:11Z",
  "updated": "2026-03-11T09:05:52Z"
}