Skip to content

Public actions

15 actions. Each action calls the same API route with the same scopes on every surface.

Read a public document.

Route GET /api/v1/public/{slug}/edit
Tool name calternal_api_edit_read
Surfaces none (browser flow only)
Scopes none
Effect destructive, needs --confirm
Encoding request none, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
X-Public-Password string no

Start a guest editing session.

Route POST /api/v1/public/{slug}/edit/session
Tool name calternal_api_edit_session
Surfaces none (browser flow only)
Scopes none
Effect destructive, needs --confirm
Encoding request none, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
X-Public-Password string no

Write a Public link text file with If-Match set to its current ETag.. Required headers: If-Match..

Route PUT /api/v1/public/{slug}/edit
Tool name calternal_api_edit_write
Surfaces none (browser flow only)
Scopes none
Effect destructive, needs --confirm
Encoding request none, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
If-Match string yes
X-Public-Password string no

List visible Files and folders below a Public link folder, with stable IDs and a page cursor..

Route GET /api/v1/public/{slug}/entries
Tool name calternal_public_list_folder_entries
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response json

path

Field Type Required Description
slug string yes

query

Field Type Required Description
item string no
path string no

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run entries --input '{"path":{"slug":"<slug>"}}' --json

Read the public details and allowed actions for a Public link..

Route GET /api/v1/public/{slug}
Tool name calternal_public_read_link_details
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run info --input '{"path":{"slug":"<slug>"}}' --json

Read a Note linked from a public link.

Route GET /api/v1/public/{slug}/linked-notes/{id}
Tool name calternal_api_linked_note
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response text

path

Field Type Required Description
id string yes
slug string yes

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run linked_note --input '{"path":{"slug":"<slug>","id":"<id>"}}' --json

Read the current view-only Canvas drawing from a public link. Unavailable linked items appear as placeholders..

Route GET /api/v1/public/{slug}/canvas
Tool name calternal_api_public_canvas_view
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run public_canvas_view --input '{"path":{"slug":"<slug>"}}' --json

Download a file from a public link.

Route GET /api/v1/public/{slug}/download
Tool name calternal_api_public_download
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response base64

path

Field Type Required Description
slug string yes

query

Field Type Required Description
item string no
path string no

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run public_download --input '{"path":{"slug":"<slug>"}}' --json

List Notes linked from a public link.

Route GET /api/v1/public/{slug}/linked-notes
Tool name calternal_api_public_linked_notes
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run public_linked_notes --input '{"path":{"slug":"<slug>"}}' --json

Preview public file contents Continuation: Use the declared Range header or the existing streaming transfer command..

Route GET /api/v1/public/{slug}/preview
Tool name calternal_api_public_preview
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response base64

path

Field Type Required Description
slug string yes

query

Field Type Required Description
item string no
path string no

headers

Field Type Required Description
If-None-Match string | null no
Range string | null no
X-Public-Password string no
Terminal window
calternal action run public_preview --input '{"path":{"slug":"<slug>"}}' --json

Get a public link thumbnail.

Route GET /api/v1/public/{slug}/thumb
Tool name calternal_api_public_thumb
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response base64

path

Field Type Required Description
slug string yes

query

Field Type Required Description
item string no
path string no
s integer, int32 (0–) yes

headers

Field Type Required Description
X-Public-Password string no
Terminal window
calternal action run public_thumb --input '{"path":{"slug":"<slug>"},"query":{"s":"<s>"}}' --json

Start a public file drop upload. Required headers: Tus-Resumable, Upload-Length, Upload-Metadata..

Route POST /api/v1/public/{slug}/uploads
Tool name calternal_api_public_upload_create
Surfaces cli, mcp, webmcp
Scopes none
Effect destructive, needs --confirm
Encoding request base64, response json

path

Field Type Required Description
slug string yes

headers

Field Type Required Description
Tus-Resumable string yes
Upload-Checksum string | null no
Upload-Conflict-Policy string | null no
Upload-Length string yes
Upload-Metadata string yes
X-Public-Password string no

body: string. Base64 encoded bytes; send large uploads in chunks

Terminal window
calternal action run public_upload_create --input '{"path":{"slug":"<slug>"},"headers":{"Tus-Resumable":"<Tus-Resumable>","Upload-Length":"<Upload-Length>","Upload-Metadata":"<Upload-Metadata>"}}' --confirm --json

Check a public upload. Required headers: Tus-Resumable..

Route HEAD /api/v1/public/{slug}/uploads/{id}
Tool name calternal_api_public_upload_head
Surfaces cli, mcp, webmcp
Scopes none
Effect read only
Encoding request none, response json

path

Field Type Required Description
id string yes
slug string yes

headers

Field Type Required Description
Tus-Resumable string yes
X-Public-Password string no
Terminal window
calternal action run public_upload_head --input '{"path":{"slug":"<slug>","id":"<id>"},"headers":{"Tus-Resumable":"<Tus-Resumable>"}}' --json

Send bytes to a public upload. Required headers: Tus-Resumable, Upload-Offset..

Route PATCH /api/v1/public/{slug}/uploads/{id}
Tool name calternal_api_public_upload_patch
Surfaces cli, mcp, webmcp
Scopes none
Effect destructive, needs --confirm
Encoding request base64, response json

path

Field Type Required Description
id string yes
slug string yes

headers

Field Type Required Description
Tus-Resumable string yes
Upload-Checksum string | null no
Upload-Offset string yes
X-Public-Password string no

body: string. Base64 encoded bytes; send large uploads in chunks

Terminal window
calternal action run public_upload_patch --input '{"path":{"slug":"<slug>","id":"<id>"},"headers":{"Tus-Resumable":"<Tus-Resumable>","Upload-Offset":"<Upload-Offset>"}}' --confirm --json

Cancel a public upload. Required headers: Tus-Resumable..

Route DELETE /api/v1/public/{slug}/uploads/{id}
Tool name calternal_api_public_upload_terminate
Surfaces cli, mcp, webmcp
Scopes none
Effect destructive, needs --confirm
Encoding request none, response json

path

Field Type Required Description
id string yes
slug string yes

headers

Field Type Required Description
Tus-Resumable string yes
X-Public-Password string no
Terminal window
calternal action run public_upload_terminate --input '{"path":{"slug":"<slug>","id":"<id>"},"headers":{"Tus-Resumable":"<Tus-Resumable>"}}' --confirm --json