curl --request GET \
--url https://api.erdo.ai/v1/knowledge/{knowledgeObjectID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.erdo.ai/v1/knowledge/{knowledgeObjectID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.erdo.ai/v1/knowledge/{knowledgeObjectID}', 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.erdo.ai/v1/knowledge/{knowledgeObjectID}",
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.erdo.ai/v1/knowledge/{knowledgeObjectID}"
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.erdo.ai/v1/knowledge/{knowledgeObjectID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.erdo.ai/v1/knowledge/{knowledgeObjectID}")
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{
"attachments": [
{
"byte_size": 123,
"content_text": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"filename": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"knowledge_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"media_type": "<string>",
"metadata_json": {},
"public": true,
"signed_url": "<string>"
}
],
"attachments_incomplete": true,
"backlinks": [
{
"description": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"link_text": "<string>",
"normalized_target": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"source_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"target_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target_resource_id": "<string>",
"target_resource_type": "<string>"
}
],
"data_bindings": [
{
"binding_type": "<string>",
"column_metadata": {},
"dataset_id": "<string>",
"entity_keys": [
{
"entity_type": "<string>",
"field": "<string>",
"references": "<string>"
}
],
"fields": [
{
"aggregation": "<string>",
"description": "<string>",
"grain": "<string>",
"name": "<string>",
"role": "<string>",
"semantic_name": "<string>",
"sql": "<string>",
"type": "<string>"
}
],
"grain": [
"<string>"
],
"id": "<string>",
"notes": "<string>",
"primary_key": [
"<string>"
],
"provenance": {
"batch_id": "<string>",
"confidence": "<string>",
"source_id": "<string>",
"source_object_id": "<string>",
"source_type": "<string>"
},
"query_constraints": [
{
"column": "<string>",
"operator": "<string>",
"value": "<string>"
}
],
"resource_id": "<string>",
"resource_type": "<string>"
}
],
"declared_context_status": "<string>",
"links": [
{
"description": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"link_text": "<string>",
"normalized_target": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"source_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"target_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target_resource_id": "<string>",
"target_resource_type": "<string>"
}
],
"object": {
"body_markdown": "<string>",
"config_json": {},
"content_state": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provenance_json": {},
"scope_json": {},
"slug": "<string>",
"source_id": "<string>",
"source_type": "<string>",
"source_updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"performance_indicators": [
{
"object": {
"body_markdown": "<string>",
"config_json": {},
"content_state": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provenance_json": {},
"scope_json": {},
"slug": "<string>",
"source_id": "<string>",
"source_type": "<string>",
"source_updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"relation": {
"description": "<string>",
"direction": "<string>",
"link_text": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"status": "<string>"
},
"value_status": "<string>"
}
],
"related_objects": [
{
"object": {
"body_markdown": "<string>",
"config_json": {},
"content_state": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provenance_json": {},
"scope_json": {},
"slug": "<string>",
"source_id": "<string>",
"source_type": "<string>",
"source_updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"relation": {
"description": "<string>",
"direction": "<string>",
"link_text": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"status": "<string>"
}
}
],
"resolved_body_markdown": "<string>"
}{
"code": "not_found",
"details": {},
"message": "<string>"
}GetKnowledgeAPI mirrors the typed Knowledge read used by the app and MCP
callers, preserving the service’s auth, access, and relationship behavior.
curl --request GET \
--url https://api.erdo.ai/v1/knowledge/{knowledgeObjectID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.erdo.ai/v1/knowledge/{knowledgeObjectID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.erdo.ai/v1/knowledge/{knowledgeObjectID}', 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.erdo.ai/v1/knowledge/{knowledgeObjectID}",
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.erdo.ai/v1/knowledge/{knowledgeObjectID}"
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.erdo.ai/v1/knowledge/{knowledgeObjectID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.erdo.ai/v1/knowledge/{knowledgeObjectID}")
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{
"attachments": [
{
"byte_size": 123,
"content_text": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"filename": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"knowledge_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"media_type": "<string>",
"metadata_json": {},
"public": true,
"signed_url": "<string>"
}
],
"attachments_incomplete": true,
"backlinks": [
{
"description": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"link_text": "<string>",
"normalized_target": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"source_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"target_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target_resource_id": "<string>",
"target_resource_type": "<string>"
}
],
"data_bindings": [
{
"binding_type": "<string>",
"column_metadata": {},
"dataset_id": "<string>",
"entity_keys": [
{
"entity_type": "<string>",
"field": "<string>",
"references": "<string>"
}
],
"fields": [
{
"aggregation": "<string>",
"description": "<string>",
"grain": "<string>",
"name": "<string>",
"role": "<string>",
"semantic_name": "<string>",
"sql": "<string>",
"type": "<string>"
}
],
"grain": [
"<string>"
],
"id": "<string>",
"notes": "<string>",
"primary_key": [
"<string>"
],
"provenance": {
"batch_id": "<string>",
"confidence": "<string>",
"source_id": "<string>",
"source_object_id": "<string>",
"source_type": "<string>"
},
"query_constraints": [
{
"column": "<string>",
"operator": "<string>",
"value": "<string>"
}
],
"resource_id": "<string>",
"resource_type": "<string>"
}
],
"declared_context_status": "<string>",
"links": [
{
"description": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"link_text": "<string>",
"normalized_target": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"source_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"target_object_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target_resource_id": "<string>",
"target_resource_type": "<string>"
}
],
"object": {
"body_markdown": "<string>",
"config_json": {},
"content_state": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provenance_json": {},
"scope_json": {},
"slug": "<string>",
"source_id": "<string>",
"source_type": "<string>",
"source_updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"performance_indicators": [
{
"object": {
"body_markdown": "<string>",
"config_json": {},
"content_state": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provenance_json": {},
"scope_json": {},
"slug": "<string>",
"source_id": "<string>",
"source_type": "<string>",
"source_updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"relation": {
"description": "<string>",
"direction": "<string>",
"link_text": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"status": "<string>"
},
"value_status": "<string>"
}
],
"related_objects": [
{
"object": {
"body_markdown": "<string>",
"config_json": {},
"content_state": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provenance_json": {},
"scope_json": {},
"slug": "<string>",
"source_id": "<string>",
"source_type": "<string>",
"source_updated_at": "2023-11-07T05:31:56Z",
"status": "<string>",
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"relation": {
"description": "<string>",
"direction": "<string>",
"link_text": "<string>",
"relationship_type": "<string>",
"source_field": "<string>",
"status": "<string>"
}
}
],
"resolved_body_markdown": "<string>"
}{
"code": "not_found",
"details": {},
"message": "<string>"
}Authorizations
An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).
Path Parameters
Response
Success response
Show child attributes
Show child attributes
resolved on this read — the public-grant lookup failed, or an attachment could not be signed — and Attachments therefore under-reports (Public false, SignedURL empty) rather than failing the read. A caller that would PERSIST a conclusion drawn from attachment state (the sending-theme derivation, which stores "no public logo" as final) must treat this read as transient and try again later.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
can be resolved and viewed. Unknown conveys no target identity or type.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
resolved to their live values — non-nil only when the body contains references. Object.BodyMarkdown stays the raw, editable template; this is the read-time view. Render this for viewing/agent-context; edit the raw. A non-nil pointer to "" means references were present but all resolved to empty strings; nil means no references (fast path, no resolution attempted).

