curl --request GET \
--url https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph', 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.example.com/api/v1/connected-orgs/{connected_org_id}/graph",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.example.com/api/v1/connected-orgs/{connected_org_id}/graph"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.example.com/api/v1/connected-orgs/{connected_org_id}/graph")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"edges": [
{
"confidence": 123,
"dependency_type": "<string>",
"id": "<string>",
"source": "<string>",
"target": "<string>",
"version_constraint": "<string>"
}
],
"nodes": [
{
"id": "<string>",
"label": "<string>",
"metadata": {},
"type": "repository"
}
],
"applied_min_confidence": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Get the dependency graph (full org or subgraph anchored at a repo).
Return the dependency graph for a connected org.
Without root: full graph for the org.
With root=<repo_id>: subgraph anchored at that repo, including up to
depth hops in both directions (upstream + downstream). Designed for AI
coding agents that want a focused neighbourhood instead of the whole org.
Nodes are repositories; edges are resolved dependencies from the most recent completed scan. Format is G6-compatible.
Confidence differs between the two modes, deliberately. With root,
min_confidence (default 0.4) governs both the traversal and the edges
returned, and the response echoes it as applied_min_confidence. Without
root, no floor is applied — the full-org graph returns every manifest
edge so clients can filter for themselves, and applied_min_confidence is
null. That asymmetry is why the org and workspace dependency counters
match this endpoint exactly: browsing is a different question from asking what
breaks.
curl --request GET \
--url https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph', 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.example.com/api/v1/connected-orgs/{connected_org_id}/graph",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.example.com/api/v1/connected-orgs/{connected_org_id}/graph"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.example.com/api/v1/connected-orgs/{connected_org_id}/graph")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/connected-orgs/{connected_org_id}/graph")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"edges": [
{
"confidence": 123,
"dependency_type": "<string>",
"id": "<string>",
"source": "<string>",
"target": "<string>",
"version_constraint": "<string>"
}
],
"nodes": [
{
"id": "<string>",
"label": "<string>",
"metadata": {},
"type": "repository"
}
],
"applied_min_confidence": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Headers
Path Parameters
Query Parameters
Optional repository ID to anchor a subgraph view. When set, the response is limited to the root plus its upstream and downstream neighbours within depth hops. Omit for the full org graph.
BFS depth from root in each direction. Ignored when root is omitted.
1 <= x <= 10Minimum edge confidence to traverse, between 0.0 and 1.0. The default 0.4 admits every reference a machine could act on — deterministic parser edges (0.9–1.0), resolver matches (0.65–0.95), heuristic references in build and CI files, package manifests and fetch commands (0.85), and references in files the classifier does not recognise (0.6–0.7), which mean 'unclassified', not 'unlikely'. It excludes only references a human reads rather than a machine executes: prose, HTML templates, generated blobs and ignore files (0.3). Pass 0.8 to restrict the answer to deterministic and build-file evidence only, or 0.0 to include everything. The value actually applied is echoed in the response, and each affected repository carries the confidence of the weakest edge on the strongest path that reached it, so a stricter answer can be recovered by filtering the response without a second request. Ignored when root is omitted: the full-org graph applies no floor at all and returns every manifest edge, in which case applied_min_confidence in the response is null.
0 <= x <= 1Cookies
Response
Successful Response
Full dependency graph for an organization (G6 compatible).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The confidence floor used for the subgraph traversal, or null when root was omitted. null is the honest answer for the full-org graph, which applies no floor at all and returns every manifest edge for clients to filter themselves — so a number here would misreport it.
