Skip to main content

Overview

Every record in your vault is a structured document with metadata, content, and connections to other records. This page explains the format so you can work with records via the API.

Record structure

Each record has three parts:
  1. Metadata — Type, status, dates, tags, and other properties
  2. Content — The main body with details and context
  3. Connections — Links to other records using the [[type/Record Name]] format
Here’s an annotated example:
---
type: person                          # What kind of record
created: 2026-02-26                   # When it was created
name: Alice Smith                     # Display name
status: active                        # Current status
org: "[[org/Acme Corp]]"              # Connection to an org record
email: alice@acme.com                 # Custom field
tags: [engineering, backend]          # Tags for categorization
---

# Alice Smith

Senior backend engineer who joined Acme in 2025.
Leads the [[project/Platform v2]] migration effort.

Common fields

These fields are shared across all record types:
FieldDescriptionRequired
typeRecord type identifier (e.g., person, task)Yes
createdCreation dateYes
nameDisplay name (most types)No
subjectDisplay name for conversation and input typesNo
statusCurrent status (valid values depend on type)No
ownerWho is responsible (connection to a person)No
tagsArray of categorization tagsNo
relatedArray of connections to other recordsNo
Only type and created are strictly required. All other fields are optional.

Connections

Records connect to each other using this format:
[[type/Record Name]]
For example:
  • [[person/Alice Smith]] — links to a person record
  • [[project/Q1 Launch]] — links to a project record
  • [[org/Acme Corp]] — links to an organization record
The type prefix is required. [[Alice Smith]] won’t work — it must be [[person/Alice Smith]].
Connections can appear in metadata fields (like org, owner, participants) or in the content body.

Status values by type

Each record type has its own set of valid status values:
TypeValid Statuses
personactive, inactive
orgactive, inactive
projectactive, paused, completed, abandoned, proposed
taskqueued, active, blocked, done, cancelled
event(no status constraint)
notedraft, active, review, final
locationactive, inactive
processactive, proposed, design, deprecated
accountactive, suspended, closed, pending
assetactive, retired, maintenance, disposed
conversationactive, waiting, resolved, closed, archived
inputunprocessed, processed, deferred
runactive, completed, blocked, cancelled
sessionactive, completed
triageunprocessed, reviewed, resolved
skill(no status constraint)
matteractive, resolved, archived
ledger_entry(no status constraint)
assumptionactive, challenged, invalidated, confirmed
decisiondraft, final, superseded, reversed
constraintactive, expired, waived, superseded
contradictionunresolved, resolved, accepted
synthesisdraft, active, superseded

List fields

Some fields accept multiple values as arrays: tags, aliases, related, relationships, participants, outputs, depends_on, blocked_by, based_on, supports, challenged_by, approved_by, confirmed_by, invalidated_by, governed_by, references, project

Schema API endpoint

You can retrieve the complete, up-to-date schema programmatically:
curl -H "Authorization: Bearer alf_your_key_here" \
  /api/v1/vault/schema
This returns all record types, valid status values, and field definitions as JSON.
The schema endpoint is always the authoritative source for record format details. If anything on this page seems outdated, trust the API response.