Daily Notes and Tasks
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Overview
The Craft Daily Notes API provides programmatic access to your daily notes with blocks, tasks, and collections. Daily notes are date-based documents that can contain structured content, tasks, and time-based data.
Recommended Usage
This API is best utilized when building automation, task management integrations, or daily note workflows.
Rate Limits
Rate limits apply at both public IP and Craft space scopes. The first limit reached returns HTTP 429.
| Limit | Scope | Allowance |
|---|---|---|
| API requests | Public source IP, shared across API links and MCP connections | 50 requests per 10 seconds |
| API requests | Craft space | 100 requests per 60 seconds |
| Blocks read or written | Craft space | 20,000 blocks per 60 seconds |
Clients behind the same public IP share the per-IP limit. Space limits are shared across all API links, MCP connections, and clients in that space; they are not allocated separately per link or session. Each paginated request and retry counts separately.
Application responses expose the Craft space request budget, when available, through X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Responses rejected at the public-IP limit may omit these headers.
REST block operations expose the corresponding X-BlockBudget-* headers after the space has recorded block usage in the current window; the first read in a new window may omit them. MCP responses do not expose the block budget as HTTP headers.
Application-generated HTTP 429 responses include Retry-After. MCP request-limit responses also repeat the retry delay in the error message because some MCP clients do not expose response headers. If Retry-After is absent, use exponential backoff with jitter.
Reminders
Block reminders are experimental. With a Craft OAuth connection, reminders belong to the signed-in user and are available in single-user and multi-user spaces. With an ordinary link, reminders belong to the link creator and require that creator to be the space's only active participant. Document scope always applies; custom (blockless) reminders are not exposed.
Unavailable reminder endpoints are omitted from this documentation. Direct requests return an explicit availability error. Task dates notify in-app; they are not a substitute for a requested timed reminder. A reminder can schedule a notification on any block, or save it for later without a notification. These operations are available only under the conditions above.
Craft Link Formats
| Type | Format | Description |
|---|---|---|
clickableLink | craftdocs://open?spaceId={spaceId}&documentId={documentId} | Returned in document metadata when fetchMetadata=true. |
| Web editor | https://docs.craft.do/editor/d/{spaceId}/{documentId} | Construct using the spaceId and documentId values from clickableLink. |
Craft Markdown Extensions
The markdown field on blocks uses standard Markdown with the following Craft-specific extensions. These tags can appear in both input (when creating/updating blocks) and output (when reading blocks), unless noted otherwise.
Page Structure
| Tag | Description |
|---|---|
<page>...<\/page> | A nested page (sub-document). Optional attributes: textStyle (e.g. "card"), cardLayout, id. |
<card>...<\/card> | Shorthand for <page textStyle="card">. |
<pageTitle>...<\/pageTitle> | The title of a <page>. Always the first child inside <page>. |
<content>...<\/content> | The body content of a <page>, following <pageTitle>. |
Block-Level Formatting
| Tag | Description |
|---|---|
<callout>...<\/callout> | Wraps blocks in a visually distinct callout box (similar to an admonition or aside). |
<caption>...<\/caption> | Renders text in a smaller, muted caption style. |
Inline Formatting
| Tag | Description |
|---|---|
<highlight color="...">...<\/highlight> | Colored text highlight. Colors: yellow, green, mint, cyan, blue, purple, pink, red, gray, gradient-blue, gradient-purple, gradient-red, gradient-yellow, gradient-brown. |
==text== | Shorthand for <highlight color="yellow">. |
<comment id="...">...<\/comment> | Marks text that has a comment thread attached. The id references the comment thread. |
$formula$ or $$formula$$ | LaTeX math formula, rendered inline or as a block. |
Links and Indentation
| Syntax | Description |
|---|---|
[text](block://blockId) | Cross-reference to another block by ID. Appears as [text](invalid:out_of_scope) when the target block is outside the current API scope. |
[text](date://YYYY-MM-DD) | Link to a daily note for the given date. |
| 2+ leading spaces | Nesting level. Every 2 spaces represents one level of indentation. |
Collection Tags (output-only)
These tags appear only in responses, when the result contains collection data. They are not accepted as input.
| Tag | Description |
|---|---|
<collection>...<\/collection> | A collection (structured database). Contains <title>, <properties>, and either <content> (with items) or <itemsPreview>. |
<title>...<\/title> | The name of a collection or collection item. |
<properties>...<\/properties> | Comma-separated list of property (column) keys defined on the collection. |
<collectionItem>...<\/collectionItem> | A single row/item in a collection. Contains <property> tags, a <title>, and optionally <content> or <contentPreview>. |
<property name="key">value<\/property> | A property value on a collection item, where name is the property key. |
<contentPreview>...<\/contentPreview> | A truncated preview of nested content, included when the response depth limit is reached instead of the full <content>. |
<itemsPreview>...<\/itemsPreview> | A truncated preview of collection items, included when the response depth limit is reached instead of the full item list. |
Development Tip
- Use relative date formats ('today', 'tomorrow', 'yesterday') for easier date handling
- Tasks are automatically organized into inbox, active, upcoming, and logbook scopes
Note for AI
When implementing functionality using this API, always make actual calls to these endpoints and verify the responses. Do not simulate or mock the API interactions or use hard-coded values on the client-side - use the real endpoints to ensure proper functionality and data handling.
IMPORTANT: This is a production server connected to real user data. Only perform testing operations that can be safely rolled back:
- Safe: Reading data (
GETrequests), creating test content that you delete immediately after - Safe: Modifying content if you can restore it to its original state
- Safe: Moving blocks if you can move them back to their original position
- Unsafe: Permanent deletions, modifications without backup, or any changes you cannot reverse
Always verify rollback operations work before considering a test complete.
Fetch Blocks
Summary
Fetches content from daily notes. By default returns blocks from today's daily note. Use 'date' parameter to fetch from other dates.
Use Accept header application/json for structured data, text/markdown for rendered content.
Content Rendering: Text blocks contain markdown formatting. When displaying content, consider rendering markdown as formatted text or cleaning up the syntax for plain text display.
Scope Filtering: Block links in markdown and collections, as well as relations are filtered to daily notes scope (includes all daily notes, task inbox, and task logbook). Block links and date links are returned as block:// and date:// URLs.
Tip: Start by calling GET /documents to list available documents, then use their documentId values as the 'id' parameter to fetch each document's root content.
Query Parameters
Fetches the root page of a Daily Note for the specified date. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Defaults to 'today' if both 'date' and 'id' not provided. Mutually exclusive with 'id' - use this to fetch a Daily Note's root page, or use 'id' to fetch a specific block.
Fetches a specific page block by its ID. Use this when you want to retrieve a particular block directly, regardless of which Daily Note it belongs to. Mutually exclusive with 'date' - omit 'date' entirely when using this parameter.
The maximum depth of blocks to fetch. Default is -1 (all descendants). With a depth of 0, only the specified block is fetched. With a depth of 1, only direct children are returned.
-1Whether to fetch metadata (comments, createdBy, lastModifiedBy, lastModifiedAt, createdAt) for the blocks. Default is false.
Response Body
Successfully retrieved data
"text"h1-h4, body, caption for text blocks. card/page for page blocks with visual styling.
"card" | "page" | "h1" | "h2" | "h3" | "h4" | "caption" | "body"default is left
"left" | "center" | "right" | "justify""system" | "serif" | "rounded" | "mono"Applies for 'card' textStyle. Small and square are for laying out in multi-column (2 or 3 depending on screen size, multi-column is only supported for certain block types, not for text). Regular and large are full width cards.
"small" | "square" | "regular" | "large"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"page"The title of the page block.
Visual styling properties of the page (cover image, colors, fonts, etc.).
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
h1-h4, body, caption for text blocks. card/page for page blocks with visual styling.
"card" | "page" | "h1" | "h2" | "h3" | "h4" | "caption" | "body"default is left
"left" | "center" | "right" | "justify""system" | "serif" | "rounded" | "mono"Applies for 'card' textStyle. Small and square are for laying out in multi-column (2 or 3 depending on screen size, multi-column is only supported for certain block types, not for text). Regular and large are full width cards.
"small" | "square" | "regular" | "large"Content of the page block. Array of blocks. Follows the same block schema.
"collectionItem"The title of the block.
The properties of the block.
Empty Object
The title of the collection item
Content of the collection item block's page. Array of blocks. Follows the same block schema.
"image""fit" | "fill""auto" | "fullWidth"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"video""fit" | "fill""auto" | "fullWidth"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"file"The name of the file.
"small" | "regular" | "card"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"drawing"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"whiteboard"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"table"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"collection"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"code"The raw code of the block.
"ada" | "bash" | "cpp" | "cs" | "css" | "dart" | "dockerfile" | "matlab" | "go" | "groovy" | "haskell" | "html" | "java" | "javascript" | "json" | "julia" | "kotlin" | "lua" | "markdown" | "mermaid" | "objectivec" | "perl" | "php" | "prolog" | "plaintext" | "python" | "r" | "ruby" | "rust" | "scala" | "shell" | "sql" | "swift" | "typescript" | "vbnet" | "xml" | "yaml" | "math_formula" | "other"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"richUrl""small" | "regular" | "card"The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
"line"pageBreak lineStyle is just a strong visual separator within a page (chunks to page-looking groups visually). It does not affect the page block hierarchy.
"regular""strong" | "regular" | "light" | "extraLight" | "pageBreak"Separator style for the line block (washi tape pattern, doodle, or regular line).
The markdown content of the block. May include Craft-specific extensions such as structural tags and special link formats. See the Craft Markdown Extensions section in the API description for the full reference.
The indentation level of the block.
0 <= value <= 5"none" | "bullet" | "numbered" | "toggle" | "task"7-character hex code (e.g., #RRGGBB). Case-insensitive. Auto-adjusted for readability, with dark variant auto-generated.
^#[0-9a-fA-F]{6}$only interpreted, if listStyle is 'task'
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Insert Blocks
Summary
Insert content into a daily note. This single endpoint handles both structured blocks and markdown insertion via Content-Type header negotiation.
Content-Type: application/json - Insert structured block objects with position in request body
Content-Type: text/markdown - Insert raw markdown text with position specified via query parameter (?position={"position":"end","date":"today"})
Using date-based position targets the most recently updated daily note for that date. To insert into another daily note from the same day, use pageId with the daily note's block ID instead. Multiple daily notes for the same date can occur due to sync conflicts or trash restore, but this is not a core use-case - try using one daily note per day whenever possible.
Returns the inserted blocks with their assigned block IDs for later reference.
Request Body
The blocks to insert, as JSON array
JSON object to insert the content at
The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"ID of the block to insert children into. Leave empty to target root page. Only page, text, and card type blocks can be parent blocks. Text blocks are auto-converted to page type when they receive children. Collection items are implicitly pages.
The Daily Note date to target. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Defaults to 'today' if not provided.
"today"The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"The position to insert the blocks at. 'before' inserts before the referenced block, 'after' inserts after the referenced block.
"before" | "after"ID of the block to insert blocks next to.
The markdown content to insert, which will be converted to a flat list of blocks at insert position. Separate each paragraph and heading with two newlines. Separate each list item with one newline. The first item in any list cannot be empty. Craft-specific tokens are HTML tags.:
<callout></callout>for callouts. Can be used to wrap multiple paragraphs/images/etc.<caption></caption>for caption text style. Can be used to wrap a paragraph.<highlight color=''></highlight>for highlights - color is optional. Can only be used inline.<page><pageTitle>Title</pageTitle><content>Content</content></page>for nested page/card structures - where title supports inline formatting, pages can be nested, and content accepts same markdown as top level markdown. Supports<page textStyle='card' cardLayout='small|square|...'>for card styled page blocks.
Special link formats:
[text](block://blockId)for block links - links to specific blocks by their ID[text](date://YYYY-MM-DD)for date links - links to daily notes by date
JSON object to insert the content at
The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"ID of the block to insert children into. Leave empty to target root page. Only page, text, and card type blocks can be parent blocks. Text blocks are auto-converted to page type when they receive children. Collection items are implicitly pages.
The Daily Note date to target. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Defaults to 'today' if not provided.
"today"The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"The position to insert the blocks at. 'before' inserts before the referenced block, 'after' inserts after the referenced block.
"before" | "after"ID of the block to insert blocks next to.
Response Body
Successfully created resource
Array of blocks
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Delete Blocks
Summary
Delete content from daily notes. Removes specified blocks by their IDs.
Request Body
The IDs of the blocks to delete
Response Body
Successfully deleted resource
Array of deleted block IDs
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Blocks
Summary
Update content in daily notes. For text blocks, provide updated markdown content. Only the fields that are provided will be updated.
Request Body
The blocks to update, as JSON array. Only the fields that are provided will be updated.
Response Body
Successfully updated resource
Array of blocks
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Move Blocks
Summary
Move blocks to reorder them or move them to a different daily note. Returns the moved block IDs.
Request Body
The IDs of the blocks to move
JSON object to move the content to
The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"ID of the block to insert children into. Leave empty to target root page. Only page, text, and card type blocks can be parent blocks. Text blocks are auto-converted to page type when they receive children. Collection items are implicitly pages.
The Daily Note date to target. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Defaults to 'today' if not provided.
"today"The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"The position to insert the blocks at. 'before' inserts before the referenced block, 'after' inserts after the referenced block.
"before" | "after"ID of the block to insert blocks next to.
Response Body
Successfully moved resource
Array of moved block IDs
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Get Collection Items
Summary
Get all items from a collection
Path Parameters
Query Parameters
The maximum depth of nested content to fetch for each collection item. Default is -1 (all descendants). With a depth of 0, only the item properties are fetched without nested content.
-1Response Body
Successfully retrieved data
Array of items in the collection.
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Add Collection Items
Summary
Add new items to a collection. Two-way relations are synced automatically in the background - only set one side for consistency.
Path Parameters
Request Body
Items to add to the collection. Each item should match the collection's schema (properties will be validated at runtime).
Allow adding new options to select properties. When true, new values will be automatically added to the collection schema. Never add new option values without explicit user intent.
Response Body
Successfully created resource
Array of successfully added items
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Delete Collection Items
Summary
Delete collection items (also deletes content inside items)
Path Parameters
Request Body
IDs of the items to delete from the collection.
Response Body
Successfully deleted resource
Array of successfully deleted item IDs
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Collection Items
Summary
Update collection items. Two-way relations are synced automatically in the background - only set one side for consistency.
Path Parameters
Request Body
Items to update in the collection. Each item should have an id and optionally properties matching the collection's schema (properties will be validated at runtime).
Allow adding new options to select properties. When true, new values will be automatically added to the collection schema. Never add new option values without explicit user intent.
Response Body
Successfully updated resource
Array of successfully updated items
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Set Active Collection View
Summary
Set the collection-level activeViewId to one existing collection view ID. This only changes which stored view is marked active; it does not execute the view or change collection items.
Path Parameters
Request Body
The existing collection view ID to store as the collection's activeViewId
1 <= lengthResponse Body
Success
Collection view ID. Use this ID for update, delete, and set-active operations.
Stored collection view layout type. table is the regular/default table layout; gallery and kanban include matching view-specific settings when configured.
Filter rules stored in the view definition. These endpoints do not execute the filters or return filtered items.
Sort rules stored in the view definition. These endpoints do not execute the sorts or return sorted items.
Grouping rules stored in the view definition. Kanban views have exactly one group rule.
Empty Object
Empty Object
Gallery view settings. Present only for gallery views.
Kanban view settings. Present only for kanban views.
True when this view is the effective active view. The effective active view is activeViewId when valid; otherwise it is the first stored view.
Create an API connection in the Imagine tab in Craft, and paste your API URL here
List Collection Views
Summary
List table, gallery, and kanban view definitions for a collection. This returns configuration only; it does not execute filters/sorts/groups or return collection items. If activeViewId is missing or invalid, the first stored view is treated as active.
Path Parameters
Response Body
Success
The collection block ID whose views were listed
The effective active collection view ID. If the stored activeViewId is missing or invalid, the first stored view is treated as active. Absent only when the collection has no stored views.
Stored collection view definitions. These definitions do not include collection items and are not the result of executing filters, sorts, or groups.
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Returns stored view definitions only. activeViewId is the effective active view; if the stored activeViewId is missing or invalid, the first stored view is treated as active.
Create Collection View
Summary
Create a collection view definition. Use type table for the regular/default table layout, gallery for card layouts, or kanban for grouped boards. This creates configuration only; it does not create or return collection items. Kanban requires exactly one group rule.
Path Parameters
Request Body
The view definition to create. This stores configuration only; it does not execute the view or return collection items. Use type table for the regular/default table layout. Gallery settings are only valid for gallery views. Kanban settings are only valid for kanban views, and kanban requires exactly one groupBy rule.
Response Body
Successfully created resource
Collection view ID. Use this ID for update, delete, and set-active operations.
Stored collection view layout type. table is the regular/default table layout; gallery and kanban include matching view-specific settings when configured.
Filter rules stored in the view definition. These endpoints do not execute the filters or return filtered items.
Sort rules stored in the view definition. These endpoints do not execute the sorts or return sorted items.
Grouping rules stored in the view definition. Kanban views have exactly one group rule.
Empty Object
Empty Object
Gallery view settings. Present only for gallery views.
Kanban view settings. Present only for kanban views.
True when this view is the effective active view. The effective active view is activeViewId when valid; otherwise it is the first stored view.
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Delete Collection View
Summary
Delete one collection view definition by view ID. Cannot delete the last stored view in a collection. If the active view is deleted, the first remaining stored view becomes active.
Path Parameters
Response Body
Successfully deleted resource
The ID of the deleted collection view
The effective active view ID after deletion. If the deleted view was active, the first remaining stored view becomes active.
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Collection View
Summary
Update one collection view definition by view ID. Omitted settings are preserved. Pass empty arrays or objects to clear list-like settings. Gallery settings are only valid for gallery views; kanban settings are only valid for kanban views.
Path Parameters
Request Body
The view definition fields to update. Omitted settings are preserved. Pass empty arrays or objects to clear list-like settings. Gallery settings are only valid for gallery views. Kanban settings are only valid for kanban views, and kanban requires exactly one groupBy rule.
Response Body
Successfully updated resource
Collection view ID. Use this ID for update, delete, and set-active operations.
Stored collection view layout type. table is the regular/default table layout; gallery and kanban include matching view-specific settings when configured.
Filter rules stored in the view definition. These endpoints do not execute the filters or return filtered items.
Sort rules stored in the view definition. These endpoints do not execute the sorts or return sorted items.
Grouping rules stored in the view definition. Kanban views have exactly one group rule.
Empty Object
Empty Object
Gallery view settings. Present only for gallery views.
Kanban view settings. Present only for kanban views.
True when this view is the effective active view. The effective active view is activeViewId when valid; otherwise it is the first stored view.
Create an API connection in the Imagine tab in Craft, and paste your API URL here
List Collections
Summary
List all collections across daily notes. Use optional startDate and endDate query parameters to filter collections by daily note date range.
Query Parameters
The start date for filtering daily notes. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Only collections in daily notes on or after this date will be included.
The end date for filtering daily notes. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Only collections in daily notes on or before this date will be included.
Response Body
Success
Array of collections in the specified date range
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Create Collection
Summary
Create a new collection (structured table) in a daily note. Position date defaults to 'today'. Define the schema with columns and their types.
Request Body
The schema definition for the new collection, including name, content property, and column definitions.
Where to insert the collection. Use 'date' to target a Daily Note, 'pageId' for a specific block, or 'siblingId' for relative positioning.
The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"ID of the block to insert children into. Leave empty to target root page. Only page, text, and card type blocks can be parent blocks. Text blocks are auto-converted to page type when they receive children. Collection items are implicitly pages.
The Daily Note date to target. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Defaults to 'today' if not provided.
"today"The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"The position to insert the blocks at. 'before' inserts before the referenced block, 'after' inserts after the referenced block.
"before" | "after"ID of the block to insert blocks next to.
Response Body
Successfully created resource
The block ID of the newly created collection
The name of the created collection
The schema of the created collection
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Get Collection Schema
Summary
Get collection schema in JSON Schema format
Path Parameters
Query Parameters
The format to return the schema in. Default: json-schema-items. - 'schema': Returns the collection schema structure that can be edited - 'json-schema-items': Returns JSON Schema for addCollectionItems/updateCollectionItems validation
"json-schema-items""schema" | "json-schema-items"Response Body
Successfully retrieved data
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Collection Schema
Summary
Update the collection schema. Replaces the existing schema entirely - include all fields you want to keep. Keep property keys stable for existing properties.
Path Parameters
Request Body
The updated schema definition. Replaces the existing schema entirely - include all fields you want to keep.
Response Body
Successfully updated resource
The block ID of the collection whose schema was updated
The updated collection schema
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Add comments
Summary
Add comments to blocks.
Request Body
List of comments to add.
Response Body
Successfully created resource
The ID of the created comment
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Get Connection Info
Summary
Returns connection metadata including space ID, space name, timezone, current time, and URL templates for constructing deep links to blocks.
Response Body
Successfully retrieved data
Create an API connection in the Imagine tab in Craft, and paste your API URL here
List Reminders
Summary
Experimental: list block reminders within this connection's document scope. See the Reminders section for availability and ownership.
Query Parameters
List filter. Defaults to incomplete, including Save for later and overdue reminders. Upcoming includes incomplete reminders with a future time or no time (Save for later). All includes incomplete and completed reminders within this connection's scope.
"incomplete" | "completed" | "upcoming" | "all"Page size, defaults to 50. Results are ordered by creation time, then ID.
1 <= value <= 200Continuation cursor from the previous response; keep the same status filter. If the cursor becomes invalid, restart without it.
length <= 256Response Body
Success
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Create Reminders
Summary
Experimental: set or replace reminders on blocks within this connection's document scope. Omit the time to Save for later.
Request Body
Reminders to set or replace on blocks
Response Body
Successfully created resource
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Delete Reminders
Summary
Experimental: delete block reminders within this connection's document scope. The blocks themselves are not deleted.
Request Body
Reminder IDs to delete
Response Body
Successfully deleted resource
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Reminders
Summary
Experimental: update block reminders within this connection's document scope. Only provided fields are changed.
Request Body
Reminders to update. Only provided fields are changed.
Response Body
Successfully updated resource
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Search in Document
Summary
Search content within a specific daily note. Supports regex patterns for flexible searching. Use the 'date' query parameter to specify which daily note to search (defaults to 'today').
Query Parameters
The Daily Note date to search within. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'.
The search patterns to look for. Patterns must follow RE2-compatible syntax, which supports most common regular-expression features (literal text, character classes, grouping alternation, quantifiers, lookaheads, and fixed-width lookbehinds.
Whether the search should be case sensitive. Default is false.
The number of blocks to include before the matched block.
The number of blocks to include after the matched block.
Whether to include the full matched blocks with styling in the response. Default is false.
Response Body
Successfully retrieved data
Array of search matches with structured context
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Search across Daily Notes
Summary
Search content across multiple daily notes using relevance-based ranking. This endpoint uses FlexiSpaceSearch to find matches across your daily notes within an optional date range.
Key Features:
- Search across multiple daily notes (vs /blocks/search which searches a single daily note)
- Include term filtering
- Optional date range filtering (startDate/endDate)
- Relevance-based ranking (top 20 results)
- Context blocks before/after each match
- Supports relative dates: 'today', 'tomorrow', 'yesterday'
Example Use Cases:
- Find all mentions of a project across the last month
- Search for meeting notes from a specific time period
- Locate tasks or action items across multiple days
Query Parameters
Search terms to include in the search. Can be a single string or array of strings.
Search terms to include in the search. Patterns must follow RE2-compatible syntax, which supports most common regular-expression features (literal text, character classes, grouping alternation, quantifiers, lookaheads, and fixed-width lookbehinds.
The start date for filtering daily notes. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Only daily notes on or after this date will be included in the search.
The end date for filtering daily notes. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Only daily notes on or before this date will be included in the search.
Whether to include the full matched blocks with styling and block IDs in each search result. Default is false.
Response Body
Successfully retrieved data
Array of individual search matches across daily notes, ordered by document relevance
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Get Tasks
Summary
Retrieve tasks. Tasks are automatically organized into inbox, active, upcoming, and logbook categories.
Query Parameters
Filter tasks by scope: - 'active': Open tasks whose task date (schedule date when present, otherwise deadline date) is on or before today - 'upcoming': Open tasks whose task date (schedule date when present, otherwise deadline date) is tomorrow or later - 'inbox': Only tasks in the task inbox - 'logbook': Only tasks in the task logbook (completed and cancelled tasks)
"active" | "upcoming" | "inbox" | "logbook"Response Body
Successfully retrieved data
Array of tasks matching the query scope
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Add Tasks
Summary
Create new tasks in inbox or daily notes. Tasks can include schedule dates and deadlines.
Request Body
Tasks to create. Each task will be added to the top of the target location.
Response Body
Successfully created resource
Tasks that were successfully added
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Delete Tasks
Summary
Delete tasks by their IDs. Only tasks in inbox, logbook, or daily notes can be deleted.
Request Body
IDs of the tasks to delete. Only tasks in inbox, logbook, or daily notes can be deleted. Tasks in regular documents cannot be deleted via this tool.
Response Body
Successfully deleted resource
IDs of tasks that were successfully deleted
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Tasks
Summary
Update existing tasks. Can modify task content, state, schedule dates, and deadlines. Marking tasks as done/canceled moves them to logbook.
Request Body
Tasks to update. Each task must have an id and optionally fields to update.
Response Body
Successfully updated resource
Tasks that were successfully updated
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Upload File
Summary
Upload a file (image, video, or document) and insert it at the specified position. Send raw binary data in request body with Content-Type header.
Query Parameters
Optional filename, including extension (for example, report.pdf), used as the file attachment title. Left empty when omitted. Does not change the file type determined by Content-Type; ignored for image and video blocks.
1 <= lengthWhere to insert: 'start' or 'end' for page positions, 'before' or 'after' for sibling positions. Defaults to 'end'.
"start" | "end" | "before" | "after"Daily note date. Accepts 'today', 'yesterday', 'tomorrow', or ISO date (YYYY-MM-DD). Defaults to 'today'. Use with position 'start' or 'end'.
Block ID to insert relative to. Required when position is 'before' or 'after'.
Request Body
binaryResponse Body
Success
The ID of the created block
The URL to access the uploaded asset
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Create Whiteboard
Summary
Create a new empty whiteboard block at the specified position. Returns the whiteboard block ID. Use whiteboardElements_add to populate it.
Request Body
The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"ID of the block to insert children into. Leave empty to target root page. Only page, text, and card type blocks can be parent blocks. Text blocks are auto-converted to page type when they receive children. Collection items are implicitly pages.
The Daily Note date to target. Accepts ISO format YYYY-MM-DD or relative dates: 'today', 'tomorrow', 'yesterday'. Defaults to 'today' if not provided.
"today"The position to insert the blocks at. 'start' inserts at the start of the page, 'end' inserts at the end of the page.
"start" | "end"The position to insert the blocks at. 'before' inserts before the referenced block, 'after' inserts after the referenced block.
"before" | "after"ID of the block to insert blocks next to.
Response Body
Successfully created resource
The block ID of the created whiteboard
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Get Whiteboard Elements
Summary
Get all Excalidraw elements and appState from a whiteboard block.
Path Parameters
Response Body
Successfully retrieved data
Excalidraw elements
Excalidraw assets (optional).
Empty Object
Excalidraw app state (optional).
Empty Object
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Add Whiteboard Elements
Summary
Append elements to an existing whiteboard without removing existing ones.
Path Parameters
Request Body
Excalidraw elements to append.
items <= 500Response Body
Successfully created resource
Excalidraw elements
Excalidraw assets (optional).
Empty Object
Excalidraw app state (optional).
Empty Object
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Delete Whiteboard Elements
Summary
Remove elements from a whiteboard by their Excalidraw element IDs.
Path Parameters
Request Body
Excalidraw element IDs to remove.
items <= 500Response Body
Successfully deleted resource
Number of elements deleted
Number of elements remaining
Create an API connection in the Imagine tab in Craft, and paste your API URL here
Update Whiteboard Elements
Summary
Update specific elements in a whiteboard by their ID. Elements not included in the request remain unchanged.
Path Parameters
Request Body
Excalidraw elements to update. Each must include an id matching an existing element. Only provided properties are changed.
items <= 500Response Body
Successfully updated resource
Excalidraw elements
Excalidraw assets (optional).
Empty Object
Excalidraw app state (optional).
Empty Object
Create an API connection in the Imagine tab in Craft, and paste your API URL here