Vulnix
API

Knowledge

Give the agent durable context about your system so every future run starts informed rather than blind.

Knowledge is what the agent is told before it starts. Findings are the output of a run; knowledge is the input to every run after it. An entry written once applies to everything that follows.

The knowledge entry object

Prop

Type

Entry types

A closed set, because the type decides how the entry is presented to the agent. "Accepted risks" and "testing rules" read very differently in a run instruction, and free-form tags would make that grouping meaningless.

Prop

Type

manual versus internal

manual entries are yours. internal entries are written by the agent from its own notes after a run. Both feed the next run identically — the distinction is provenance and editability: an internal entry cannot be edited or replaced, only deleted. Attempting to update one returns 409 knowledge_entry_not_editable.

List entries

GET /knowledge · scope knowledge:read · role viewer

Prop

Type

curl "https://api.vulnix.dev/knowledge?source=manual" \
  -H "Authorization: Bearer $VULNIX_TOKEN"
{ "entries": [] }

Create an entry

POST /knowledge · scope knowledge:write · role admin · returns 201

Prop

Type

curl -X POST https://api.vulnix.dev/knowledge \
  -H "Authorization: Bearer $VULNIX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "entry_type": "business_logic",
    "description": "Tenancy is enforced on the X-Org header, not the JWT. A member of org A presented with org B in that header must get 403, never data.",
    "domain_ids": ["01M2NMSF7GJY6KMMKZJ0EA0N47"]
  }'

Returns the created entry. An unknown entry_type, a blank description, or one over the limit returns 422 invalid_knowledge_entry.

Write the rule, not the reassurance

"Authentication is important" changes nothing. "A member of org A presented with org B in the X-Org header must get 403" is a testable claim the agent can try to break. Entries that state a checkable invariant are the ones that produce findings.

Update an entry

PATCH /knowledge/{entry_id} · scope knowledge:write · role admin

Takes the same body as create. Returns the updated entry.

404 knowledge_entry_not_found for an unknown id; 409 knowledge_entry_not_editable for an internal entry.

Delete an entry

DELETE /knowledge/{entry_id} · scope knowledge:write · role admin · returns 204

No response body. Works for both manual and internal entries — deleting is how you retract something the agent concluded and got wrong.

On this page