Preview a member genealogy move
Requires the bearer member’s current rep eligibility and movement policy. The moved node and destination must remain within the member’s current team; no member or actor selector is accepted. Previews do not write or enqueue work. Incomplete previews return validation_incomplete among the violations; submit a move to request deferred validation. The example uses illustrative fixture IDs. Substitute records visible to your authenticated company or member.
curl -X POST 'https://api.fluid.app/api/member/v2026-10/team/01a08945-1a27-7dcf-9971-de363f3408ba/move/validate' \
-H 'Authorization: Bearer <member-token>' \
-H 'Content-Type: application/json' \
--data \{\"move\":\{\"parent_node_id\":\"01a08945-1a23-75ce-9026-9646ed3df5a1\"\}\}import requests
url = "https://api.fluid.app/api/member/v2026-10/team/{id}/move/validate"
payload = { "move": { "parent_node_id": "01a08945-1a23-75ce-9026-9646ed3df5a1" } }
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({move: {parent_node_id: '01a08945-1a23-75ce-9026-9646ed3df5a1'}})
};
fetch('https://api.fluid.app/api/member/v2026-10/team/{id}/move/validate', 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/member/v2026-10/team/{id}/move/validate",
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([
'move' => [
'parent_node_id' => '01a08945-1a23-75ce-9026-9646ed3df5a1'
]
]),
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/member/v2026-10/team/{id}/move/validate"
payload := strings.NewReader("{\n \"move\": {\n \"parent_node_id\": \"01a08945-1a23-75ce-9026-9646ed3df5a1\"\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/member/v2026-10/team/{id}/move/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"move\": {\n \"parent_node_id\": \"01a08945-1a23-75ce-9026-9646ed3df5a1\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/{id}/move/validate")
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 \"move\": {\n \"parent_node_id\": \"01a08945-1a23-75ce-9026-9646ed3df5a1\"\n }\n}"
response = http.request(request)
puts response.read_body{
"validation": {
"valid": true,
"approval_required": true,
"deferred": false,
"violations": []
},
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:22Z"
}
}{
"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"
}
}Authorizations
A member credential for the member's own team — a member or customer session JWT, or a member's user token. Company service tokens are refused.
Path Parameters
Moving node identifier in the authenticated company and permitted team.
Body
An explicit unilevel move proposal. Actor and source are derived from authentication.
Show child attributes
Show child attributes
curl -X POST 'https://api.fluid.app/api/member/v2026-10/team/01a08945-1a27-7dcf-9971-de363f3408ba/move/validate' \
-H 'Authorization: Bearer <member-token>' \
-H 'Content-Type: application/json' \
--data \{\"move\":\{\"parent_node_id\":\"01a08945-1a23-75ce-9026-9646ed3df5a1\"\}\}import requests
url = "https://api.fluid.app/api/member/v2026-10/team/{id}/move/validate"
payload = { "move": { "parent_node_id": "01a08945-1a23-75ce-9026-9646ed3df5a1" } }
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({move: {parent_node_id: '01a08945-1a23-75ce-9026-9646ed3df5a1'}})
};
fetch('https://api.fluid.app/api/member/v2026-10/team/{id}/move/validate', 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/member/v2026-10/team/{id}/move/validate",
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([
'move' => [
'parent_node_id' => '01a08945-1a23-75ce-9026-9646ed3df5a1'
]
]),
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/member/v2026-10/team/{id}/move/validate"
payload := strings.NewReader("{\n \"move\": {\n \"parent_node_id\": \"01a08945-1a23-75ce-9026-9646ed3df5a1\"\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/member/v2026-10/team/{id}/move/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"move\": {\n \"parent_node_id\": \"01a08945-1a23-75ce-9026-9646ed3df5a1\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/member/v2026-10/team/{id}/move/validate")
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 \"move\": {\n \"parent_node_id\": \"01a08945-1a23-75ce-9026-9646ed3df5a1\"\n }\n}"
response = http.request(request)
puts response.read_body{
"validation": {
"valid": true,
"approval_required": true,
"deferred": false,
"violations": []
},
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:22Z"
}
}{
"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"
}
}