Genealogy
List tree move jobs
Page durable execution receipts for a company tree with members.view or legacy users.view permission. Reads remain available while move admission is disabled. Worker claim tokens are never exposed. The example uses illustrative fixture IDs. Substitute records visible to your authenticated company or member.
GET
/
api
/
company
/
v2026-10
/
genealogy
/
trees
/
{tree_id}
/
move-jobs
List tree move jobs
curl -X GET 'https://api.fluid.app/api/company/v2026-10/genealogy/trees/7096ad49-7117-53f6-8f7f-4805473d14c5/move-jobs?limit=1' \
-H 'Authorization: Bearer <company-token>'import requests
url = "https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs', 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/trees/{tree_id}/move-jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"move_jobs": [
{
"id": "01a08945-0547-7475-977a-e810af285b67",
"approval_request_id": null,
"attempts": 0,
"created_at": "2026-09-10T03:03:17.063088Z",
"failure_details": {},
"failure_type": null,
"finished_at": null,
"leg": null,
"node_id": "01a08945-0541-76fc-87f7-4cb84c212bf3",
"parent_node_id": null,
"placement_id": null,
"reason": null,
"requested_by_id": "c29f580e-15c2-5fe1-afd2-398a3340e5e0",
"requested_by_type": "Company::Admin",
"started_at": null,
"status": "pending",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5"
}
],
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:17Z",
"pagination": {
"cursor": null,
"limit": 1,
"prev_cursor": null,
"next_cursor": "eyJmIjp7ImdlbmVhbG9neV9tb3ZlX2pvYnMuY3JlYXRlZF9hdCI6IjIwMjYtMDktMTBUMDM6MDM6MTcuMDYzMDg4WiIsImdlbmVhbG9neV9tb3ZlX2pvYnMuaWQiOiIwMWEwODk0NS0wNTQ3LTc0NzUtOTc3YS1lODEwYWYyODViNjcifSwiZCI6Im5leHQiLCJjIjoxNzg5MDA5Mzk3LCJjcyI6IjEwNTQxOTU3MmU0M2Y3ZjU3NzEyMGM0MjQ0ZmMyYmM0Iiwib3MiOiI2Y2M4ZGJlOGUyYjgwZTU5ZjhiNGRjZDViNGVlNzU2ZCIsInFzIjoiZWNhNmI5ZjBiMGE0ZTNkNzYxMzI3NDdhMTNjOTY4NzgifQ=="
}
}
}{
"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"
}
}Authorizations
Company admin or company service token, subject to developer permissions.
Path Parameters
Company tree UUID.
Query Parameters
Execution status filter.
Available options:
pending, running, applied, failed, superseded Maximum page size.
Required range:
1 <= x <= 100Opaque continuation cursor.
⌘I
List tree move jobs
curl -X GET 'https://api.fluid.app/api/company/v2026-10/genealogy/trees/7096ad49-7117-53f6-8f7f-4805473d14c5/move-jobs?limit=1' \
-H 'Authorization: Bearer <company-token>'import requests
url = "https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs', 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/trees/{tree_id}/move-jobs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/genealogy/trees/{tree_id}/move-jobs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"move_jobs": [
{
"id": "01a08945-0547-7475-977a-e810af285b67",
"approval_request_id": null,
"attempts": 0,
"created_at": "2026-09-10T03:03:17.063088Z",
"failure_details": {},
"failure_type": null,
"finished_at": null,
"leg": null,
"node_id": "01a08945-0541-76fc-87f7-4cb84c212bf3",
"parent_node_id": null,
"placement_id": null,
"reason": null,
"requested_by_id": "c29f580e-15c2-5fe1-afd2-398a3340e5e0",
"requested_by_type": "Company::Admin",
"started_at": null,
"status": "pending",
"tree_id": "7096ad49-7117-53f6-8f7f-4805473d14c5"
}
],
"status": 200,
"meta": {
"request_uuid": null,
"timestamp": "2026-09-10T03:03:17Z",
"pagination": {
"cursor": null,
"limit": 1,
"prev_cursor": null,
"next_cursor": "eyJmIjp7ImdlbmVhbG9neV9tb3ZlX2pvYnMuY3JlYXRlZF9hdCI6IjIwMjYtMDktMTBUMDM6MDM6MTcuMDYzMDg4WiIsImdlbmVhbG9neV9tb3ZlX2pvYnMuaWQiOiIwMWEwODk0NS0wNTQ3LTc0NzUtOTc3YS1lODEwYWYyODViNjcifSwiZCI6Im5leHQiLCJjIjoxNzg5MDA5Mzk3LCJjcyI6IjEwNTQxOTU3MmU0M2Y3ZjU3NzEyMGM0MjQ0ZmMyYmM0Iiwib3MiOiI2Y2M4ZGJlOGUyYjgwZTU5ZjhiNGRjZDViNGVlNzU2ZCIsInFzIjoiZWNhNmI5ZjBiMGE0ZTNkNzYxMzI3NDdhMTNjOTY4NzgifQ=="
}
}
}{
"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"
}
}