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.
| Method | Path | Scope | Summary |
|---|---|---|---|
GET | /public/agents/{org_slug} | public | List Public Agents |
GET | /public/agents/{org_slug}/{agent_id} | public | Get 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.
| Parameter | In | Required | Type | Notes |
|---|---|---|---|---|
org_slug | path | yes | string | |
limit | query | no | integer | |
offset | query | no | integer |
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.
| Parameter | In | Required | Type | Notes |
|---|---|---|---|---|
org_slug | path | yes | string | |
agent_id | path | yes | string |
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.