Skip to main content

Public records

The behavioral integrity record of any agent its owner made public: gate, BII, ledger count and head, last event, observed flag, policy digest, declared links. No key; 404 for anything not opted in; rate limited per address. See Check an agent.

MethodPathScopeSummary
GET/public/agents/{org_slug}publicList Public Agents
GET/public/agents/{org_slug}/{agent_id}publicGet Public Agent

Try it​

curl -sf -X POST "$VIGIL_URL/agents/" -H "Authorization: Bearer $VIGIL_KEY" -H "Content-Type: application/json" \
-d '{"agent_id":"docs-api","name":"Docs API"}' > /dev/null || true
curl -sf -X POST "$VIGIL_URL/events/" -H "Authorization: Bearer $VIGIL_KEY" -H "Content-Type: application/json" \
-d '{"agent_id":"docs-api","event_type":"output_generated","payload":{"content_length":512},"dti":0.9}' > /dev/null
curl -sf -X PATCH "$VIGIL_URL/admin/agents/docs-api" -H "Authorization: Bearer $VIGIL_KEY" -H "Content-Type: application/json" \
-d '{"public":true}' > /dev/null # admin key
org=$(curl -sf -H "Authorization: Bearer $VIGIL_KEY" "$VIGIL_URL/orgs/me" | python3 -c 'import json,sys; print(json.load(sys.stdin)["slug"])')
curl -sf "$VIGIL_URL/public/agents/$org/docs-api" # no key
curl -sf -X PATCH "$VIGIL_URL/admin/agents/docs-api" -H "Authorization: Bearer $VIGIL_KEY" -H "Content-Type: application/json" \
-d '{"public":false}' > /dev/null # admin key

Routes​

GET /public/agents/{org_slug}​

List Public Agents. Scope: public.

The org's public agents, no key needed. Each entry has exactly the fields of GET /public/agents/{org_slug}/{agent_id}. 404 when the org has no public agent, so an org that has not opted in looks the same as one that does not exist. Rate limited per client address; X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset are on the response.

ParameterInRequiredTypeNotes
org_slugpathyesstring
limitquerynointeger
offsetquerynointeger

Response 200:

{
"org": "string",
"total": 0,
"limit": 0,
"offset": 0,
"agents": [
{
"org": "string",
"agent_id": "string",
"name": "string",
"kind": "string",
"gate": "string | null",
"bii": 0,
"ledger_records": 0,
"ledger_head": "string | null",
"last_event_at": "string | null",
"observed": true,
"policy_digest": "string",
"public_links": [
{
"kind": "website | github | x | moltbook | other",
"url": "string"
}
],
"verify_url": "string"
}
]
}

GET /public/agents/{org_slug}/{agent_id}​

Get Public Agent. Scope: public.

One agent's public record, no key needed. Returns only: org slug, agent id, name and kind, the current gate, the current BII as stored, the agent's ledger record count, the org's ledger head hash, the last event time, the observed flag, the policy digest, the owner's declared links and a verify URL. Never event content, payloads, scores history, review notes or configuration. 404 unless the agent exists in that org, is active and its owner set public: true. Cached for 60 seconds; rate limited per client address with X-RateLimit-* headers.

ParameterInRequiredTypeNotes
org_slugpathyesstring
agent_idpathyesstring

Response 200:

{
"org": "string",
"agent_id": "string",
"name": "string",
"kind": "string",
"gate": "string | null",
"bii": 0,
"ledger_records": 0,
"ledger_head": "string | null",
"last_event_at": "string | null",
"observed": true,
"policy_digest": "string",
"public_links": [
{
"kind": "website | github | x | moltbook | other",
"url": "string"
}
],
"verify_url": "string"
}

Generated from openapi.json (VIGIL 0.2.0). Scopes follow the router dependencies in VIGIL_SPEC.md section 4.2.