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
Always
"folder".UUID of the folder.
Display name of the folder.
UUID of the parent folder, or
null if the folder lives at the root. This is how folders nest.Optional free-text context used to steer AI generation for diagrams in this folder.
null when unset.UUID of the owning organization for org keys, or
null for personal keys.ISO-8601 UTC timestamp of creation.
ISO-8601 UTC timestamp of the last update.
The Folder object
Endpoints
List folders
GET /v1/foldersCreate a folder
POST /v1/foldersRetrieve a folder
GET /v1/folders/{id}Update a folder
PATCH /v1/folders/{id}Delete a folder
DELETE /v1/folders/{id}List folders
created_at descending). Requires the folders:read scope.
Query parameters
Number of folders to return. Integer between
1 and 100. Defaults to 20.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
true if more folders are available beyond this page.Cursor to pass as
cursor for the next page, or null on the last page.200 OK
Create a folder
folders:write scope. Returns 201 Created with a Location header pointing at the new folder.
Body parameters
Display name of the folder.
UUID of the parent folder to nest under. Omit or set to
null to create the folder at the root.Optional free-text context that steers AI generation for diagrams created inside this folder.
201 Created
Retrieve a folder
folders:read scope. An unknown id returns 404 resource_not_found.
Path parameters
UUID of the folder to retrieve.
200 OK
Update a folder
folders:write scope. Send any subset of the body fields; omitted fields are left unchanged. Returns 200 OK with the updated folder.
Path parameters
UUID of the folder to update.
Body parameters
New display name.
New AI-steering context.
New parent folder UUID, or
null to move the folder to the root.200 OK
Delete a folder
folders:write scope. Returns 204 No Content with an empty body.
Path parameters
UUID of the folder to delete.
204 No Content
Errors
Every error uses the standard envelope. Thetype maps to the HTTP status, and every response carries an X-Request-Id header (mirrored as request_id in the body).
Error envelope
400 — invalid_request_error
400 — invalid_request_error
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.401 — authentication_error
401 — authentication_error
Codes:
missing_api_key, invalid_api_key, revoked_api_key, expired_api_key. Responses include a WWW-Authenticate: Bearer header.403 — permission_error
403 — permission_error
Codes:
plan_required (the API is paid-plans only), insufficient_scope (the key lacks folders:read or folders:write).404 — not_found_error
404 — not_found_error
Code:
resource_not_found. The folder id does not exist or is not accessible to your key.429 — rate_limit_error
429 — rate_limit_error
Codes:
rate_limit_exceeded, quota_exceeded. Responses include a Retry-After header (seconds). The per-key burst limit is 120 requests / 60s.500 — api_error
500 — api_error
Code:
internal_error. Something failed on our side. Retry with backoff and include the request_id if you contact support.