Skip to main content
POST
/
v1
/
leave-requests
/
{id}
/
decline
Decline a leave request
curl --request POST \
  --url https://api.plane.com/v1/leave-requests/{id}/decline \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "reason": "<string>"
}
'
import requests

url = "https://api.plane.com/v1/leave-requests/{id}/decline"

payload = { "reason": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reason: '<string>'})
};

fetch('https://api.plane.com/v1/leave-requests/{id}/decline', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.plane.com/v1/leave-requests/{id}/decline",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.plane.com/v1/leave-requests/{id}/decline"

payload := strings.NewReader("{\n \"reason\": \"<string>\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.plane.com/v1/leave-requests/{id}/decline")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"reason\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.plane.com/v1/leave-requests/{id}/decline")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"reason\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "id": "lvr_6r3wLwX44s0Ak0bDkP5n2r7Q",
  "status": "declined",
  "leave": {
    "id": "lv_1HPCXADYAhh5k1NMU0r1WUqs",
    "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"
  },
  "created": "2026-03-10T18:42:11Z",
  "updated": "2026-03-11T09:05:52Z"
}
Use this endpoint when a submitted or approved leave request should be declined.

Parameters

id
string
required
The ID of the leave request to decline.
reason
string
required
Explanation attached to the decline decision.

Returns

Returns the updated Leave Request object.
{
  "id": "lvr_6r3wLwX44s0Ak0bDkP5n2r7Q",
  "status": "declined",
  "leave": {
    "id": "lv_1HPCXADYAhh5k1NMU0r1WUqs",
    "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"
  },
  "created": "2026-03-10T18:42:11Z",
  "updated": "2026-03-11T09:05:52Z"
}