What you need
- A human PAT.
- An account ID from
GET /v1/accounts,listAccounts(),airctrl project accounts, orlist_accounts. - The required permission for the action.
When you create a project, makes you its Project Administrator. This does not make you an administrator of projects created by other members.
Create a project
API
SDK
CLI
MCP
MCP tool used:
create_projectList and read projects
SDK
CLI
MCP
MCP tools used:
list_projects, get_projectUpdate a project
Project updates replace all three editable fields. Sendnull to clear the description.
MCP tool used:
update_projectArchive or restore
Archiving also makes the project inactive.MCP tool used:
set_project_archiveGroups and effective access
Groups are reusable within an account. Creating a group through a project does not grant it a role in that project. Assign a project role separately. Groups contain onboarded human account members, not Service Accounts or nested groups. Group collaboration requires Team or higher and the required RBAC permission. A plan does not grant a role, and a role does not override the plan. Revocation and cleanup remain permission-checked; they do not require unlocking the vault.
Membership changes and group deletion also require the corresponding add/remove/share/revoke permissions on every affected project and direct record grant. The API checks the complete operation before committing it.
Access is the union of authorized paths. Removing someone from one group does not remove access supplied by another group, direct project membership, ownership or a direct record share. Removing a project path can leave access to an individually shared record without leaving project access. Revoking a direct record share does not revoke project access.
Detail and Graph parity
Detail and Graph are two renderings of the same project. Detail opens the shared Notes manager from the right-rail Notes card; Graph opens it from the Notes node action. Both views invalidate the same project/query prefixes after writes. Graph expands the existing Members, Records, Notes, Audit, and Telemetry contracts; its Telemetry ranges are aggregated from that project’s gateway request logs instead of placeholder values. Archived or plan-locked projects remain readable while mutation controls stay unavailable. Record visibility and secret access are distinct permissions. A metadata-only role does not authorize decryption. The server evaluates each permission across the surviving paths; membership alone is not a permission. Adding a member later applies the group’s existing grants to that member. Removing a member or deleting a group removes only the corresponding paths. The server removes wrappers only where the corresponding effective access no longer exists and queues project re-keying when needed. Revocation cannot erase plaintext or keys someone already downloaded.Complete pending encrypted access
Group membership and role writes persist authorization first. They return a snapshot withchanged, wrapper-deletion counts and per-resource changes. A change can report material_pending.project_key, material_pending.record_key or rekey_queued. A successful write does not prove that the recipient can already decrypt every record.
An authorized key holder completes the encrypted material locally with an unlocked vault. The Web app and SDK use the same reconciliation engine; CLI and MCP invoke that SDK. Reconciliation never grants permissions. If the holder cannot open the needed material, it can remain pending. Verify recipient access after reconciliation; attemptedProjectIds records attempts, not completed access.
Use IDs returned by account/project discovery and the group catalog. Choose an existing delegable role; do not infer a role from a display name.
Common failures
401: the PAT is missing, invalid or expired.403: the caller lacks the required account or project permission.409: a repeated write conflicts with the current state or idempotency key.- A project read can return
nullwhen the project is not available to the caller.