Skip to main content
Folders organize your diagrams. They nest into trees through parent_id, and each folder can hold an optional context string that steers AI generation for diagrams created inside it.
All requests run server-to-server over HTTPS and authenticate with an API key. Never expose a key in a browser or client app. See Authentication for details.

The Folder object

string
Always "folder".
string
UUID of the folder.
string
Display name of the folder.
string | null
UUID of the parent folder, or null if the folder lives at the root. This is how folders nest.
string | null
Optional free-text context used to steer AI generation for diagrams in this folder. null when unset.
string | null
UUID of the owning organization for org keys, or null for personal keys.
string
ISO-8601 UTC timestamp of creation.
string
ISO-8601 UTC timestamp of the last update.
The Folder object

Endpoints

List folders

GET /v1/folders

Create a folder

POST /v1/folders

Retrieve a folder

GET /v1/folders/{id}

Update a folder

PATCH /v1/folders/{id}

Delete a folder

DELETE /v1/folders/{id}

List folders

Returns a cursor-paginated list of folders, newest first (created_at descending). Requires the folders:read scope.

Query parameters

integer
Number of folders to return. Integer between 1 and 100. Defaults to 20.
string
Opaque pagination cursor. Pass the next_cursor from a previous response to fetch the next page. An invalid or expired cursor returns 400 invalid_cursor.

Response

array
Array of Folder objects.
boolean
true if more folders are available beyond this page.
string | null
Cursor to pass as cursor for the next page, or null on the last page.
200 OK
To walk every page, keep calling with cursor=next_cursor until has_more is false.

Create a folder

Creates a new folder. Requires the folders:write scope. Returns 201 Created with a Location header pointing at the new folder.

Body parameters

string
required
Display name of the folder.
string | null
UUID of the parent folder to nest under. Omit or set to null to create the folder at the root.
string
Optional free-text context that steers AI generation for diagrams created inside this folder.
201 Created
Use context to pass domain knowledge once (industry, conventions, terminology) so every diagram generated into the folder inherits that steering.

Retrieve a folder

Returns a single folder by id. Requires the folders:read scope. An unknown id returns 404 resource_not_found.

Path parameters

string
required
UUID of the folder to retrieve.
200 OK

Update a folder

Updates the supplied fields on a folder. Requires the folders:write scope. Send any subset of the body fields; omitted fields are left unchanged. Returns 200 OK with the updated folder.

Path parameters

string
required
UUID of the folder to update.

Body parameters

string
New display name.
string
New AI-steering context.
string | null
New parent folder UUID, or null to move the folder to the root.
200 OK

Delete a folder

Deletes a folder. Requires the folders:write scope. Returns 204 No Content with an empty body.

Path parameters

string
required
UUID of the folder to delete.
204 No Content

Errors

Every error uses the standard envelope. The type maps to the HTTP status, and every response carries an X-Request-Id header (mirrored as request_id in the body).
Error envelope
Codes: invalid_json, missing_parameter, invalid_parameter, payload_too_large, invalid_cursor. Returned when name is missing on create, a field is malformed, or a pagination cursor is invalid or expired.
Codes: missing_api_key, invalid_api_key, revoked_api_key, expired_api_key. Responses include a WWW-Authenticate: Bearer header.
Codes: plan_required (the API is paid-plans only), insufficient_scope (the key lacks folders:read or folders:write).
Code: resource_not_found. The folder id does not exist or is not accessible to your key.
Codes: rate_limit_exceeded, quota_exceeded. Responses include a Retry-After header (seconds). The per-key burst limit is 120 requests / 60s.
Code: internal_error. Something failed on our side. Retry with backoff and include the request_id if you contact support.
Folder endpoints fail with 403 insufficient_scope if your key is missing the right scope: reads need folders:read, writes (create / update / delete) need folders:write.