General
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.
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).
Fundamentals that apply to every request.
| Page | What you'll find |
|---|---|
| Authentication | Bearer tokens, scopes, and space binding |
| SDKs | TypeScript client (@capacities/api) — examples in the reference |
| Versioning | The X-Capacities-Api-Version header |
| Rate Limiting | Per-endpoint quotas and the RateLimit header |
| Concurrency | Last-write-wins semantics and avoiding race conditions |
| Errors | HTTP status codes and cap_* error codes |
Background knowledge for working with the API model.
| Page | What you'll find |
|---|---|
| Structures | Object types and structureId values |
| Properties | Typed property payloads on objects |
| Objects | Object responses, collections, and CRUD patterns |
| Blocks | Block trees and append positions |
| Text tokens | Inline formatting inside text blocks and rich text |
| Markdown | Markdown as a compact alternative for body content |
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.
api:read, api:write, or both).@capacities/api). Per-endpoint examples are in the API Reference.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.
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.
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
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.