Genealogy
Reject a move request
Require team_moves.approve and a nonblank explanation. Rejection remains available while move admission is disabled. Expired requests cannot be decided. The example uses illustrative fixture IDs. Substitute records visible to your authenticated company or member.
POST
/
api
/
company
/
v2026-10
/
genealogy
/
move-requests
/
{id}
/
reject
Reject a move request
curl -X POST 'https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/01a08944-f794-7c95-b486-791273d1ae81/reject' \
-H 'Authorization: Bearer <company-token>' \
-H 'Content-Type: application/json' \
--data \{\"decision\":\{\"reason\":\"Keep\ the\ existing\ team\"\}\}import requests
url = "https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject"
payload = { "decision": { "reason": "Keep the existing team" } }
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({decision: {reason: 'Keep the existing team'}})
};
fetch('https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject', 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.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject",
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([
'decision' => [
'reason' => 'Keep the existing team'
]
]),
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.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject"
payload := strings.NewReader("{\n \"decision\": {\n \"reason\": \"Keep the existing team\"\n }\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.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"decision\": {\n \"reason\": \"Keep the existing team\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject")
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 \"decision\": {\n \"reason\": \"Keep the existing team\"\n }\n}"
response = http.request(request)
puts response.read_body{
"move_request": {
"id": "01a08944-f794-7c95-b486-791273d1ae81",
"created_at": "2026-09-10T03:03:13.556589Z",
"decided_at": "2026-09-10T03:03:13.613456Z",
"decided_by_id": "c29f580e-15c2-5fe1-afd2-398a3340e5e0",
"decided_by_type": "Company::Admin",
"decision_reason": "Keep the existing team",
"expires_at": "2026-09-17T03:03:13.544558Z",
"leg": null,
"node_id": "01a08944-f788-7c20-ae47-db727a5bd0fb",
"parent_node_id": "01a08944-f78d-7a00-ae76-2cc04473f206",
"placement_id": null,
"reason": null,
"requested_by_id": "c0dd6812-0ba6-56d2-879c-a36112f813c2",
"requested_by_type": "Company::Member",
"status": "rejected",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5"
},
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:13Z"
}
}{
"message": "<string>",
"error": "<unknown>"
}{
"message": "<string>",
"error": "<unknown>"
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Company admin or company service token, subject to developer permissions.
Path Parameters
Move request UUID.
Body
application/json
Show child attributes
Show child attributes
⌘I
Reject a move request
curl -X POST 'https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/01a08944-f794-7c95-b486-791273d1ae81/reject' \
-H 'Authorization: Bearer <company-token>' \
-H 'Content-Type: application/json' \
--data \{\"decision\":\{\"reason\":\"Keep\ the\ existing\ team\"\}\}import requests
url = "https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject"
payload = { "decision": { "reason": "Keep the existing team" } }
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({decision: {reason: 'Keep the existing team'}})
};
fetch('https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject', 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.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject",
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([
'decision' => [
'reason' => 'Keep the existing team'
]
]),
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.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject"
payload := strings.NewReader("{\n \"decision\": {\n \"reason\": \"Keep the existing team\"\n }\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.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"decision\": {\n \"reason\": \"Keep the existing team\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/genealogy/move-requests/{id}/reject")
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 \"decision\": {\n \"reason\": \"Keep the existing team\"\n }\n}"
response = http.request(request)
puts response.read_body{
"move_request": {
"id": "01a08944-f794-7c95-b486-791273d1ae81",
"created_at": "2026-09-10T03:03:13.556589Z",
"decided_at": "2026-09-10T03:03:13.613456Z",
"decided_by_id": "c29f580e-15c2-5fe1-afd2-398a3340e5e0",
"decided_by_type": "Company::Admin",
"decision_reason": "Keep the existing team",
"expires_at": "2026-09-17T03:03:13.544558Z",
"leg": null,
"node_id": "01a08944-f788-7c20-ae47-db727a5bd0fb",
"parent_node_id": "01a08944-f78d-7a00-ae76-2cc04473f206",
"placement_id": null,
"reason": null,
"requested_by_id": "c0dd6812-0ba6-56d2-879c-a36112f813c2",
"requested_by_type": "Company::Member",
"status": "rejected",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5"
},
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:13Z"
}
}{
"message": "<string>",
"error": "<unknown>"
}{
"message": "<string>",
"error": "<unknown>"
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"status": 123,
"error": {
"message": "<string>",
"details": {}
},
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}