General

Overview

The Capacities API is a REST API that gives you programmatic access to a single workspace space per access token. You can read and write objects, properties, block content, daily notes, and more.

The new Capacities API is currently in beta and not publicly available yet.

Base URL

All requests go to:

https://api.capacities.io

Paths in this documentation are relative to that host (for example GET /space/structures means https://api.capacities.io/space/structures).

What's in these docs

Overview

Fundamentals that apply to every request.

PageWhat you'll find
AuthenticationBearer tokens, scopes, and space binding
SDKsTypeScript client (@capacities/api) — examples in the reference
VersioningThe X-Capacities-Api-Version header
Rate LimitingPer-endpoint quotas and the RateLimit header
ConcurrencyLast-write-wins semantics and avoiding race conditions
ErrorsHTTP status codes and cap_* error codes

Concepts

Background knowledge for working with the API model.

PageWhat you'll find
StructuresObject types and structureId values
PropertiesTyped property payloads on objects
ObjectsObject responses, collections, and CRUD patterns
BlocksBlock trees and append positions
Text tokensInline formatting inside text blocks and rich text
MarkdownMarkdown as a compact alternative for body content

Reference

The API Reference is the interactive OpenAPI specification — every endpoint, schema, rate limit, and TypeScript SDK sample. You can use it as a playground to test requests and see responses.

Quick start

  1. Generate an access token in the Capacities desktop app under Settings → Capacities API. Choose a space and the scopes you need (api:read, api:write, or both).
  2. Optionally install the TypeScript SDK (@capacities/api). Per-endpoint examples are in the API Reference.
  3. Make your first requests:
import { CapacitiesClient } from '@capacities/api'

const capacities = new CapacitiesClient({
  apiToken: 'cap-api-…',
})

const space = await capacities.space.get()
const { structures } = await capacities.space.structures()

Or with curl:

curl https://api.capacities.io/space/structures \
  -H "Authorization: Bearer cap-api-…" \
  -H "X-Capacities-Api-Version: 0.1.0"

The token is bound to one space — you do not pass spaceId on each request. Use GET /space/structures to discover structure and property definitions before reading or writing objects.

Developer settings in the app

When you build integrations, you often need stable identifiers such as spaceId, structureId, and propertyId. In the Capacities desktop app, open Settings → Capacities API and scroll to Developer settings. Enable Show developer information to display these IDs in relevant places throughout the app — for example next to space, structure, and property settings. Click a badge to copy the value to your clipboard.

This is a display preference only. It does not enable or restrict API access — tokens and scopes work the same regardless of this setting.

Working with multiple spaces

Each token works in one space only. To use the API in more than one space, create a separate token per space in Settings → Capacities API and use one client per token:

import { CapacitiesClient } from '@capacities/api'

const capacitiesPersonal = new CapacitiesClient({ apiToken: 'cap-api-…' }) // Personal space
const capacitiesWork = new CapacitiesClient({ apiToken: 'cap-api-…' }) // Work space
Are you missing something in the documentation?

Create a ticket on our feedback board. - Let us know if you have an idea for a feature, improvement or think there is something missing.

Request additions to the documentation. - If your questions are not getting answered, let us know and we will extend the documentation.