Approve or decline
Needs: Staff, Read-write
Approves or declines a pending request, like Approve and Decline on the Leave tab. Only pending leave can be decided.
Note:
unassigned_shiftsis only returned when you approve.unassign_shiftsis refused when declining.
curl -X POST "https://app.imploy.com.au/api/integrations/v1/leave/123/status" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"status": "Accepted",
"unassign_shifts": false
}'
import requests
import json
url = "https://app.imploy.com.au/api/integrations/v1/leave/123/status"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
}
data = {
"status": "Accepted",
"unassign_shifts": false
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://app.imploy.com.au/api/integrations/v1/leave/123/status", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_TOKEN"
},
body: JSON.stringify({
"status": "Accepted",
"unassign_shifts": false
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"status": "Accepted",
"unassign_shifts": false
}`)
req, err := http.NewRequest("POST", "https://app.imploy.com.au/api/integrations/v1/leave/123/status", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://app.imploy.com.au/api/integrations/v1/leave/123/status')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request.body = '{
"status": "Accepted",
"unassign_shifts": false
}'
response = http.request(request)
puts response.body
{
"status": "Accepted",
"leave": {
"id": 8,
"staff_id": 31,
"staff": "Example Worker",
"from": "2026-03-02",
"to": "2026-03-06",
"days": 5,
"type": "annual",
"status": "Accepted",
"reason": "Family holiday"
},
"unassigned_shifts": 0
}
{
"message": "Invalid or expired access token."
}
{
"message": "Access token does not permit this action."
}
{
"message": "Too many requests."
}
/leave/{id}/statusTarget server for requests. Edit to use your own host.
An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
imp_at_. Send it as Authorization: Bearer imp_at_XXXX.The leave id.
The media type of the request body
Accepted to approve or Rejected to decline.
When approving, also remove the person from their published shifts during the leave. Only use after confirming.
Request Preview
Response
Response will appear here after sending the request
Authentication
Bearer token. An organisation access token that starts with imp_at_. Send it as Authorization: Bearer imp_at_XXXX.
Path Parameters
The leave id.
Body
Accepted to approve or Rejected to decline.
When approving, also remove the person from their published shifts during the leave. Only use after confirming.
Responses
OK