curl --request GET \
--url https://api.mnemom.ai/v1/agents/{agent_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mnemom.ai/v1/agents/{agent_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mnemom.ai/v1/agents/{agent_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://api.mnemom.ai/v1/agents/{agent_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://api.mnemom.ai/v1/agents/{agent_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://api.mnemom.ai/v1/agents/{agent_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mnemom.ai/v1/agents/{agent_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{
"id": "<string>",
"claimed": true,
"avatar_url": "<string>",
"claimed_by": "<string>",
"created_by": "<string>",
"org_id": "<string>",
"agent_proof_hash": "<string>",
"agent_proof_captured_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"agent_hash": "a1b2c3d4e5f6a7b8",
"user_id": "<string>",
"email": "<string>",
"claimed_at": "2023-11-07T05:31:56Z",
"last_seen": "2023-11-07T05:31:56Z",
"name": "<string>",
"containment_status": "active",
"key_prefix": "<string>",
"status": "active",
"caller": "anonymous",
"public": true,
"aip_enforcement_mode": "observe",
"billing_account_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"groups": [
{
"id": "<string>",
"name": "<string>",
"color": "<string>"
}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}Get agent by ID
Get agent by ID
curl --request GET \
--url https://api.mnemom.ai/v1/agents/{agent_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.mnemom.ai/v1/agents/{agent_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.mnemom.ai/v1/agents/{agent_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://api.mnemom.ai/v1/agents/{agent_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://api.mnemom.ai/v1/agents/{agent_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://api.mnemom.ai/v1/agents/{agent_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mnemom.ai/v1/agents/{agent_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{
"id": "<string>",
"claimed": true,
"avatar_url": "<string>",
"claimed_by": "<string>",
"created_by": "<string>",
"org_id": "<string>",
"agent_proof_hash": "<string>",
"agent_proof_captured_at": "2023-11-07T05:31:56Z",
"deleted_at": "2023-11-07T05:31:56Z",
"agent_hash": "a1b2c3d4e5f6a7b8",
"user_id": "<string>",
"email": "<string>",
"claimed_at": "2023-11-07T05:31:56Z",
"last_seen": "2023-11-07T05:31:56Z",
"name": "<string>",
"containment_status": "active",
"key_prefix": "<string>",
"status": "active",
"caller": "anonymous",
"public": true,
"aip_enforcement_mode": "observe",
"billing_account_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"groups": [
{
"id": "<string>",
"name": "<string>",
"color": "<string>"
}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}Authorizations
Supabase JWT token in Authorization: Bearer header
Path Parameters
Agent identifier (e.g. smolt-abc123)
Response
Agent details. Members of the agent's org (any role) get the full record with caller: "org_member"; everyone else, signed in or not, gets a fixed public projection (id, name, claimed, status, avatar_url, created_at) with caller: "authenticated" or "anonymous". The correction-history lists serve non-members a redacted view; the other /agents/{agent_id}/… reads are org-member only unless their own description says otherwise.
An agent. GET /v1/agents/{id} returns one of TWO projections by authorization: an ORGANIZATION-MEMBER (owner) caller receives the full agent row (all fields below); a NON-OWNER receives a reduced public projection (id, name, claimed, created_at, last_seen, status, avatar_url). additionalProperties is left open because the owner row is the full DB row and grows as agent-settings columns are added (ADR-053 / proof / DDR); over-constraining it would 500 the endpoint on the next migration under /v1 response enforcement.
Public projection only: whether the agent has been claimed by a user.
Owner projection: user id that claimed the agent.
Owner projection: user id that created the agent (provenance).
Owner projection: the agent's org binding (ADR-062 authz boundary).
Owner projection: captured hash_proof of the bound key (mig 263).
Owner projection: soft-delete timestamp (null when live).
First 16 hex chars of SHA256(apiKey + '|' + agentName) for named agents, or SHA256(apiKey) for unnamed singleton agents. The gateway computes the same value on each request and uses it as the lookup key. See Agent Identity.
"a1b2c3d4e5f6a7b8"
Agent name (2-32 chars, alphanumeric + hyphens). Present on all list and get responses.
Containment state of the agent (ADR-053).
active, paused, killed First 8 chars of the bound API key hash — useful for key-rotation debugging.
active, offline Self-describing caller context for THIS response. org_member callers receive the full owner record (all fields here); anonymous/authenticated (non-member) callers receive the reduced public projection (id, name, claimed, created_at, last_seen, status, avatar_url, caller). The differing field set is GOVERNED by this value — read it instead of inferring why a field is absent.
anonymous, authenticated, org_member Identity-record visibility axis — whether the agent's IDENTITY RECORD is publicly discoverable. This is DISTINCT from reputation visibility: every registered agent's reputation is public by accountability standard (see ReputationScore.visibility). public here governs only the identity record, never the Trust Rating.
observe, enforce, nudge Active groups this agent belongs to, name-ordered; [] when none. Present on org-fleet rows (GET /v1/orgs/{org_id}/agents). Archived groups are excluded.
Show child attributes
Show child attributes