Skip to main content
GET
/
api
/
v2
/
meta-trees
/
{domain_id}
Get the graph for meta tree
curl --request GET \
  --url https://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id}', 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://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id}",
  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://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id}"

	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://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id}")
  .header("Authorization", "Bearer <token>")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://your-tenant.bloodhoundenterprise.io/api/v2/meta-trees/{domain_id}")

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
{
  "data": {}
}
{
  "http_status": 400,
  "timestamp": "2024-02-19T19:27:43.866Z",
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "errors": [
    {
      "context": "clients",
      "message": "The JSON payload could not be unmarshalled."
    }
  ]
}
{
  "http_status": 401,
  "timestamp": "2024-02-19T19:27:43.866Z",
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "errors": [
    {
      "context": "login",
      "message": "Unauthorized"
    }
  ]
}
{
  "http_status": 403,
  "timestamp": "2024-02-19T19:27:43.866Z",
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "errors": [
    {
      "context": "clients",
      "message": "You do not have permission to access this resource"
    }
  ]
}
{
  "http_status": 429,
  "timestamp": "2024-02-19T19:27:43.866Z",
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "errors": [
    {
      "context": "middleware",
      "message": "Too many requests. Please try again later."
    }
  ]
}
{
  "http_status": 500,
  "timestamp": "2024-02-19T19:27:43.866Z",
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "errors": [
    {
      "context": "clients",
      "message": "The request could not be handled due to an unexpected database error."
    }
  ]
}
Applies to BloodHound Enterprise only

Authorizations

Authorization
string
header
required

Authorization: Bearer $JWT_TOKEN

Headers

Prefer
string
default:wait=30

Prefer header, used to specify a custom timeout in seconds using the wait parameter as per RFC7240. Passing in wait=-1 bypasses all timeout limits when the feature is enabled.

Pattern: ^wait=(-1|[0-9]+)$

Path Parameters

domain_id
string
required

Domain ID

Query Parameters

node_id
integer<int64>

Node ID

asset_group_tag_id
integer

The asset group tag id of the zone requested. If not supplied, the asset group tag id associated with 'Tier Zero' and 'Hygiene' is used.

Response

OK

data
object