Endpoint reference / What only the web app can do

What only the web app can do.

Most of Sensei works with an API key. A few actions need you signed in to the web app, and a key that tries one gets 403 FORBIDDEN. Do them in the web app, or use the alternative named below.

AreaDo it in
API keys and Connected AppsSettings > You > API keys
Profile and accountSettings > You > Account. Settings > You > Preferences for FYI messages and Message watching.
WorkspacesThe + beside Workspaces in the sidebar to create one. Settings > your workspace > General to rename it, for its logo, to leave it or to delete it.
Members and invitationsSettings > your workspace > Members
BillingSettings > your workspace > Billing
GitHub Connection and IntegrationsSettings > You > Integrations for GitHub and your own. Settings > your workspace > Integrations for workspace tools.
Workspace pagesA workspace's Overview and Settings > your workspace > Activity. An API key reads the sessions that need you and the Activity through the CLI. The Overview's figures have no equivalent.
SenseiThe Sensei page
Personal CronsCrons under Search in the sidebar
Project settings and deploysA project's settings and its Deploy Chat, as a workspace admin
Report and blockThe Report and Block items on a member's message, task, Chat Session or profile. Settings > Privacy > Blocked members to unblock.
Browser-only helpersNowhere. The web app calls them as you use it.

API keys and Connected Apps

A Connected App's Connector Token is refused here too, so an app cannot list or disconnect apps either.

MethodPathDo it in
GET, POST/api/user/api-keysSettings > You > API keys
DELETE/api/user/api-keys/{keyId}Settings > You > API keys, Revoke
GET/api/user/api-keys/revokedSettings > You > API keys, Revoked API keys
GET/api/user/api-keys/{keyId}/changesSettings > You > API keys, Revoked API keys, Review changes
POST/api/user/api-keys/{keyId}/crons/pauseSettings > You > API keys, Review changes, Pause all
POST/api/user/api-keys/{keyId}/changes/{changeId}/restoreSettings > You > API keys, Review changes, Restore
POST/api/user/api-keys/{keyId}/changes/{changeId}/removeSettings > You > API keys, Review changes, Remove
GET/api/user/connected-appsSettings > You > API keys, Connected apps
DELETE/api/user/connected-apps/{appId}Settings > You > API keys, Connected apps, Disconnect

Signing in a device

Approve device sign-in in the browser where you are signed in, by scanning the device's QR code with the iPhone app or typing its code. A workspace device needs an admin of the workspace.

MethodPathDo it in
GET, POST/api/auth/device/verifyThe device approval page, with the code the device shows
POST/api/auth/phone-sign-inSettings, Devices, iPhone and iPad, Add phone: a QR code the signed-out iPhone app scans
GET, POST/api/auth/phone-sign-in/{id}The Add phone dialog, while it waits for the phone, and its Sign in or Cancel
GET/api/user/devicesSettings on your phone, Devices
DELETE/api/user/devices/{id}Settings on your phone, Devices, Remove
GET/api/user/ios-devicesSettings, Devices, iPhone and iPad
DELETE/api/user/ios-devices/{id}Settings, Devices, iPhone and iPad, Remove
GET, PUT/api/user/signatureSettings > You > Signature
GET, PUT/api/user/sensei-workspaceSettings > You > AI Providers, Sensei workspace
GET, PUT/api/user/prototype-viewA prototype's Steps or All states control, in Files, a Sensei card or Deck
GET, PATCH/api/user/notification-devicesSettings on your phone, Notifications
GET, PUT, DELETE/api/user/shared-locationSettings on your phone, Location
POST/api/user/shared-location/fixThe iOS app, when it shares your location with Sensei

Report and block

Reporting and blocking are your own acts, so only you, signed in, take them. See Report and block.

MethodPathDo it in
POST/api/organizations/{workspaceId}/content-reportsReport on a member's message, task, Chat Session or profile
GET/api/user/content-reportsThe app reads it to show "You reported this message"
GET/api/user/blocksSettings > Privacy > Blocked members
POST/api/user/blocksBlock on a member's message, task, Chat Session or profile
DELETE/api/user/blocks/{userId}Settings > Privacy > Blocked members, Unblock

Profile and account

Reading your profile works with an API key, as kosuke user profile get.

MethodPathDo it in
PUT/api/user/profileSettings > You > Account for your name. Settings > You > Preferences for FYI messages.
PUT/api/user/profile-imageSettings > You > Account
GET, PUT/api/user/message-watchingSettings > You > Preferences, Message watching
POST/api/user/complete-onboardingThe sign-up steps in the web app
GET, DELETE/api/user/delete-accountSettings > You > Account, Delete account

Workspaces

MethodPathDo it in
GET/api/organizations/resolveOpening a workspace from its address, a project, or Settings. Superadmins can also open it from the admin workspace directory.
POST/api/organizations+ beside Workspaces in the sidebar, or New workspace
PATCH/api/organizations/{workspaceId}Settings > your workspace > General, Workspace Name
DELETE/api/organizations/{workspaceId}Settings > your workspace > General, Delete workspace
PUT, DELETE/api/organizations/{workspaceId}/logoSettings > your workspace > General
POST/api/organizations/{workspaceId}/leaveSettings > your workspace > General, Leave workspace

Members and invitations

An API key lists members and pending invitations with kosuke workspaces members list.

MethodPathDo it in
POST/api/organizations/{workspaceId}/invitationsSettings > your workspace > Members, Invite member
DELETE/api/organizations/{workspaceId}/invitations/{invitationId}Settings > your workspace > Members
PATCH, DELETE/api/organizations/{workspaceId}/members/{userId}Settings > your workspace > Members
POST/api/organizations/{workspaceId}/transfer-ownershipSettings > your workspace > Members

Billing

An API key reads the balance with kosuke workspaces credits get and usage with kosuke workspaces usage get.

MethodPathDo it in
POST/api/billing/portalSettings > your workspace > Billing, Manage billing
POST/api/billing/syncSettings > your workspace > Billing
GET/api/billing/invoicesSettings > your workspace > Billing
PATCH/api/billing/overageSettings > your workspace > Billing

GitHub Connection and Integrations

An API key reads your GitHub Connection with kosuke github connection get. It reads the integrations with kosuke integrations connections list and kosuke integrations connections get. It lists the integrations you connected for yourself with kosuke integrations connections list personal and disconnects one with kosuke integrations connections delete personal; a workspace admin cannot do either for you.

Telegram login routes and WhatsApp link routes are browser-only. For WhatsApp, starting a link, reading its QR code or pairing code, cancelling it and resuming a paused connection all need your browser in Settings > You > Integrations. An API key can list and disconnect the connection, as it can for Telegram.

MethodPathDo it in
GET/api/auth/github/connectSettings > You > Integrations, Connect
GET/api/auth/github/callbackSettings > You > Integrations
POST/api/auth/github/handoffSettings > Integrations > GitHub, Connect GitHub in the iPhone app
POST/api/auth/github/disconnectSettings > You > Integrations
POST/api/user/personal-spaceSettings > Personal > Integrations, creating Personal when needed
GET/api/integrations/requestableSettings > You > Integrations or Settings > your workspace > Integrations
GET/api/integrations/requestable/{slug}/logoSettings > You > Integrations or Settings > your workspace > Integrations
GET, POST/api/organizations/{workspaceId}/integrations/requestsSettings > your workspace > Integrations, Request integration
GET, POST/api/user/integrations/requestsSettings > You > Integrations, Request integration
POST, DELETE/api/organizations/{workspaceId}/integrations/{toolkit}/connectSettings > your workspace > Integrations
GET, POST/api/organizations/{workspaceId}/integrations/{toolkit}/selectionSettings > your workspace > Integrations
PATCH, DELETE/api/organizations/{workspaceId}/integrations/{toolkit}/connections/{connectionId}Settings > your workspace > Integrations
POST, DELETE/api/user/integrations/{toolkit}/connectSettings > You > Integrations
GET, POST/api/user/integrations/{toolkit}/selectionSettings > You > Integrations
GET/api/user/integrations/{toolkit}/connections/{connectionId}/watchSettings > You > Integrations, Watching
PATCH/api/user/integrations/{toolkit}/connections/{connectionId}Settings > You > Integrations
POST/api/user/integrations/excalidraw/connectionsSettings > You > Integrations, Excalidraw
POST/api/user/integrations/telegram/loginsSettings > You > Integrations, Telegram
GET, DELETE/api/user/integrations/telegram/logins/{loginId}Settings > You > Integrations, Telegram
POST/api/user/integrations/telegram/logins/{loginId}/codeSettings > You > Integrations, Telegram
POST/api/user/integrations/telegram/logins/{loginId}/passwordSettings > You > Integrations, Telegram
POST/api/user/integrations/whatsapp/linksSettings > You > Integrations, WhatsApp
GET, DELETE/api/user/integrations/whatsapp/links/{attemptId}Settings > You > Integrations, WhatsApp
POST/api/user/integrations/whatsapp/connections/{connectionId}/resumeSettings > You > Integrations, WhatsApp
GET/api/auth/composio/callbackSettings > your workspace > Integrations, or Settings > You > Integrations
POST/api/organizations/{workspaceId}/integrations/kosuke/connectionsSettings > your workspace > Integrations, Sensei
PATCH, DELETE/api/organizations/{workspaceId}/integrations/kosuke/connections/{connectionId}Settings > your workspace > Integrations, Sensei
POST/api/organizations/{workspaceId}/integrations/apple_ads/connectionsSettings > your workspace > Integrations, Apple Ads
PATCH, DELETE/api/organizations/{workspaceId}/integrations/apple_ads/connections/{connectionId}Settings > your workspace > Integrations, Apple Ads
PUT/api/organizations/{workspaceId}/integrations/apple_ads/connections/{connectionId}/credentialsSettings > your workspace > Integrations, Apple Ads
GET/api/organizations/{workspaceId}/integrations/apple_ads/connections/{connectionId}/public-keySettings > your workspace > Integrations, Apple Ads

Workspace pages

MethodPathDo it in
GET/api/organizations/{workspaceId}/home/figuresA workspace's Overview, its figures. An API key counts tasks with kosuke tasks list.
GET/api/organizations/{workspaceId}/home/chartA workspace's Overview, its chart of tasks done per day. An API key lists done tasks with kosuke tasks list.
GET/api/organizations/{workspaceId}/home/breakdownA workspace's Overview, where tasks came from and the repositories table. An API key lists tasks with kosuke tasks list.
GET/api/organizations/{workspaceId}/home/recently-doneOverview, Recently done, Show more. An API key lists done tasks with kosuke tasks list.
GET/api/organizations/{workspaceId}/devicesSettings > your workspace > Devices, the workspace's devices. An API key has no equivalent: a session's agent lists the ones it may ask for with kosuke devices list.
POST/api/organizations/{workspaceId}/devices/codesSettings > your workspace > Devices, Add workspace device. The code signs a Mac in, so only an admin's own session gets one.
GET/api/organizations/{workspaceId}/devices/codes/{codeId}The Add workspace device dialog, while it waits for the Mac to enter the code.
DELETE/api/organizations/{workspaceId}/devices/{deviceId}Settings > your workspace > Devices, Remove on a workspace device.
GET/api/projects/{projectId}/chat-sessions/{sessionId}/device-grantsThe device requests in a Chat Session's chat. A session's agent reads its own with kosuke devices list, and your API key reads them with kosuke sensei device-requests list.
POST/api/projects/{projectId}/chat-sessions/{sessionId}/device-grants/{grantId}Approve, Decline or Withdraw on a device request in a Chat Session's chat. Your API key and your Sensei, after your own yes, approve or decline one with kosuke sensei device-requests update. A session's agent and a Cron never answer one, even acting as you.
GET/api/organizations/{workspaceId}/activitySettings > your workspace > Activity. An API key reads the same events with kosuke activity list.
POST/api/organizations/{workspaceId}/activity/seenSettings > your workspace > Activity. An API key marks events seen with kosuke activity list --mark-seen.
GET, DELETE/api/organizations/{workspaceId}/timezone/hintSettings > your workspace > General, the hint under Timezone an admin of a workspace on UTC sees, and its dismiss button. An API key sets the zone itself with kosuke workspaces timezone set.

Personal Crons

A Personal Cron belongs to you and to no workspace. An API key lists, reads, creates, changes, fires and deletes one, and reads its runs, with kosuke crons, repositories included: a Personal Cron picks only your Personal Repositories, and the API refuses a project of any workspace. Only your API key and the web app delete one: Sensei, every other agent token and a Connected App cannot. You hold at most 50. The sidebar count, a run's transcript and Stop stay in the web app. A sandbox run, which a Personal Cron with repositories makes, also has files. An API key and your Sensei can list them across the Cron or one run, and read one, through /api/user/crons/{cronId}/files, /api/user/crons/{cronId}/runs/{runId}/files and /api/user/crons/{cronId}/runs/{runId}/files/{fileId}. Binary downloads stay in the web app.

A sandbox run’s live stream is on its run page. These Personal Cron operations stay in the web app:

MethodPathDo it in
GET/api/user/crons/summaryThe Crons row under Search in the sidebar
GET/api/user/crons/{cronId}/runs/{runId}/messagesA run's page, its transcript. For a run in the cron's thread, the thread in Sensei holds the same messages. A sandbox run's transcript is the Cron Agent's.
POST/api/user/crons/{cronId}/runs/{runId}/cancelA run's page, Stop, or Stop on the running Turn in the cron's thread
GET/api/user/crons/{cronId}/runs/{runId}/files/{fileId}/downloadA sandbox run’s Files, Download
GET/api/user/crons/{cronId}/runs/{runId}/artifacts/{artifactId}/downloadThe same download, for installed clients. Deprecated.

Sensei

A Sensei Chat is private to its person, so only the Sensei page changes it, and the Apple Watch and the Meta glasses signed in as that person, with the key the device sign-in gave them. Your API key reads your own chat with kosuke sensei chat get, but it cannot send to it. A prototype Sensei draws is a file in the workspace's Files, which your API key reads with kosuke files get. kosuke sessions files attach points a ticket at one, and kosuke sessions files list lists it there.

MethodPathDo it in
POST/api/sensei/attachmentsStage a private message attachment from the Sensei page or an admitted device credential; a regular API key cannot use it.
POST/api/sensei/attachments/uploadsUpload a video for a Sensei message straight to storage, from the Sensei page or an admitted device credential; a regular API key cannot use it.
POST/api/sensei/messagesThe Sensei page
POST/api/sensei/messages/{messageId}/prototypesSave as prototype below an interactive document in a Sensei Thread
POST/api/sensei/stopThe Sensei page
GET/api/user/memoryThe Memory page. Your API key reads Memory with kosuke sensei memory get.
PUT/api/user/memory/{file}The Memory page. Sensei changes Memory only with kosuke sensei memory set, for a card you approved.
POST/api/sensei/first-cardAnswer and Skip on the first card of the Welcome thread
GET/api/sensei/first-run-notificationsThe iPhone app, which waits to ask for notifications while the Welcome thread can still ask in the chat
GET/api/sensei/connectThe Connect buttons in Sensei's messages
POST/api/sensei/connect/attemptsConnect in Sensei's messages
POST/api/sensei/connect/attempts/{attemptId}Finishing a sign-in started from Connect in Sensei's messages
POST/api/sensei/connect/not-nowNot now under the Connect buttons in Sensei's messages
GET/api/kosuke-starterThe New repository dialog and the first card of the Welcome thread, which offer Start from kosuke-starter only where it is on
GET/api/sensei/project-cardThe Repository and Describe cards in Sensei's messages
POST/api/sensei/project-cardImport on the Repository card and Create project on the Describe card in Sensei's messages
POST/api/sensei/runtime-commandsThe Sensei page
GET/api/sensei/skillsThe Sensei page
GET/api/sensei/channelThe Sensei page
GET/api/sensei/threads/countsThe Sensei page, the count on Threads and on the Sensei row of the sidebar
GET/api/sensei/threads/sessionsThe Sensei page, the thread each session card opens
GET/api/sensei/threads/{threadId}/delegatesThe Sensei page, the progress line of a thread's working delegate, on each step it announces
POST/api/sensei/threads/{threadId}/pinThe Sensei page, Pin on a thread
DELETE/api/sensei/threads/{threadId}/pinThe Sensei page, Unpin on a thread
PUT/api/sensei/threads/{threadId}/titleThe Sensei page, Rename on a thread
POST/api/sensei/presenceThe Sensei page
GET/api/sensei/modelSensei's composer, and the Sensei page outside the channel
PUT/api/sensei/modelSensei's composer
POST/api/sensei/cards/{cardId}/actionsThe Sensei page
POST/api/sensei/threads/{threadId}/events/retryThe Sensei page, Retry on "Sensei could not read N updates"
POST/api/projects/{projectId}/chat-sessions/{sessionId}/branch-syncSync in the session's panel. An agent sends /kosuke:sync-branch or runs gh pr update-branch instead.
POST/api/projects/{projectId}/merge-agent/messagesProject settings, Merge agent, the chat column's composer
POST/api/projects/{projectId}/merge-agent/stopProject settings, Merge agent, Stop in the chat column's composer while a turn runs
POST/api/sensei/cards/{cardId}/show-on-iphoneShow on iPhone on the Apple Watch
GET/api/sensei/cards/{cardId}/messagesThe Sensei page, a conversation opened on the FYI messages card. An agent reads the same messages from their events.
GET/api/sensei/messages/mediaThe Sensei page, a sticker, GIF or photo drawn on the FYI messages card, read through the member's own connection
GET/api/sensei/messages/emojiThe Sensei page, a custom Slack emoji drawn on the FYI messages card
GET/api/sensei/cards/{cardId}/recordingA card's QA recording on the Apple Watch. An agent reads the QA Report with kosuke sessions files get.
GET/api/sensei/queueThe Sensei page
PATCH, DELETE/api/sensei/queue/{queuedMessageId}The Sensei page
POST/api/sensei/queue/{queuedMessageId}/steerThe Sensei page
POST/api/sensei/queue/{queuedMessageId}/sendThe Sensei page
POST/api/sensei/queue/{queuedMessageId}/moveThe Sensei page
POST, DELETE/api/sensei/queue/{queuedMessageId}/editThe Sensei page
POST/api/sensei/queue/resumeThe Sensei page
GET/api/sensei/recordings/playerThe Sensei page, a Turn’s browser recording player
GET/api/sensei/recordings/{recordingId}The Sensei page, a browser run's recording
GET, PATCH/api/user/getting-startedThe Sensei page, Get started
POST/api/sensei/quick-questionsThe desktop app's Spotlight once asked Quick Questions here; it now shows an answer card instead. A Quick Question is answered in Spotlight alone, so no key asks or reads one.
GET/api/sensei/quick-questions/{threadId}Reads a Quick Question that the desktop app's Spotlight asked before its answer card

Preview and publish

Changing what a repository's live app holds from its Preview is a member's tap in the web app: Publish, Roll back and Unpublish. An API key and an agent read the Versions, the Releases and the live app read-only with kosuke projects versions list, kosuke projects releases list and kosuke projects live.

MethodPathDo it in
GET/api/projects/{projectId}/downloadSettings, Download .zip
GET, POST, DELETE/api/projects/{projectId}/publishPublish in the repository's header, and Unpublish in its popover
POST/api/projects/{projectId}/releases/{releaseId}/rollbackThe Releases list, Roll back
GET/api/projects/{projectId}/preview-pageOpening a repository, which opens on Preview when it has the kosuke-starter layout; ?mode=status reads only the current numbered Version and main sandbox following status from the database, with the same member authorization

Project settings and deploys

Only a workspace admin changes a project's setup, services and environment, imports a config, or starts or answers a Deploy, in the web or desktop app. An API key and a Connected App's Connector Token get 403 SETTINGS_ADMIN_ONLY on these requests, an admin's own key included, until API keys get a project settings scope. See Project settings. The endpoint reference marks each request.

CLI commandDo it in
kosuke projects settings updateProject settings: the Sandbox tab for the tier and the Host setup script, the Services tab for the App setup script, and Advanced for the Agent Working Directory, the branches and the Warmup Script. A key still changes the QA Guide with --qa-guide and the device folders with --device-write-paths.
kosuke projects settings setProject settings, Import config
kosuke projects services createProject settings, Services, Add Service
kosuke projects services updateProject settings, Services, a service's Save
kosuke projects services deleteProject settings, Services, a service's Delete
kosuke projects env-vars createProject settings, Environment, Add Variable or Import .env, then Save Variables
kosuke projects env-vars deleteProject settings, Environment
kosuke deploys startThe Deploy Chat: Deploy, Redeploy or a message to the deploy agent

An API key still reads the settings with kosuke projects settings get, and their Change history with kosuke projects settings changes list.

Browser-only helpers

The web app calls these as you use it. A script has no reason to call them, and the alternatives below cover what they show.

MethodPathDo it in
GET/api/organizations/{workspaceId}/access-status/bothOpening a project, which shows your access and the workspace's at once. An API key reads each with kosuke providers access get, adding --scope workspace for the workspace's.
GET/api/organizations/{workspaceId}/tasks/{taskId}/threadMove to thread in a task's menu, which marks the thread the task is in.
POST/api/organizations/{workspaceId}/tasks/{taskId}/threadMove to thread in a task's menu.
GET/api/organizations/{workspaceId}/tasks/boardThe Tasks page's columns, which leave out each task's description. An API key lists the same tasks in full with kosuke tasks list.
GET/api/organizations/{workspaceId}/sandbox-sizeThe Sandbox size pickers, which lock Large and XLarge on Personal Free. An API key that asks for a locked size is refused with DEMO_REQUIRED.
GET/api/organizations/{workspaceId}/tasks/by-session/{sessionId}Opening a task from the Tasks page or Sensei. An API key reads the task directly with kosuke tasks get.
POST/api/dictationThe Mic button in a Chat Session's or Sensei's composer, which records locally and transcribes with Gemini after Stop
POST/api/composer-completionsTyping in the web app's composers, which suggest the rest of a sentence
GET/api/preview/authOpen a direct Preview link in your browser
POST/api/preview/wakeThe starting page for a member’s direct Preview link
GET/api/preview/wake/{operationId}The same starting page, while it waits for the requested service
GET/api/projects/{projectId}/preview/auth-tokenThe Preview tab
GET/api/preview-sessions/statusSwitching sessions in the web app
POST, DELETE/api/projects/{projectId}/preview/viewingThe Preview tab
POST, DELETE/api/projects/{projectId}/chat-sessions/{sessionId}/queue/{queuedMessageId}/editEditing a message Up next in the composer. An API key edits it with kosuke sessions queue update.
POST, DELETE/api/projects/{projectId}/settings/agentic-deploy/queue/{queuedMessageId}/editEditing a Deploy Chat message Up next. An API key edits it with kosuke deploys queue update.
GET/api/projects/{projectId}/chat-sessions/{sessionId}/preview/files/rawImages among a sandbox's files. An API key reads files with kosuke sessions sandbox-files get.
GET/api/projects/{projectId}/chat-sessions/{sessionId}/preview/diff/blobImages in the Changes tab
GET/api/projects/{projectId}/chat-sessions/{sessionId}/agents/{agentId}Opening a subagent in the chat. An API key reads a subagent's whole output with kosuke sessions messages get on a message that holds it.
GET/api/organizations/{workspaceId}/files/{fileId}/contentFiles > Open or Download; an API key gets a download URL with kosuke files get.
PUT/api/organizations/{workspaceId}/files/{fileId}Files > Replace; an API key replaces by path with kosuke files set.
GET/api/user/files/{fileId}/contentYour personal Files > Open or Download; an API key gets a download URL with kosuke files get personal.
PUT/api/user/files/{fileId}Your personal Files > Replace; an API key replaces by path with kosuke files set personal.
GET, POST/api/organizations/{workspaceId}/files/zipFiles > Download a folder or selected items as a zip; an API key downloads each file with kosuke files get.
GET, POST/api/user/files/zipYour personal Files > Download a folder or selected items as a zip; an API key downloads each file with kosuke files get personal.
GET/api/projects/{projectId}/chat-sessions/{sessionId}/files/{fileId}/downloadDownloads in the Files tab. An API key reads a file's text or media URL with kosuke sessions files get.
GET/api/projects/{projectId}/chat-sessions/{sessionId}/artifacts/{artifactId}/downloadThe same download, for installed clients. Deprecated.
GET/api/organizations/{workspaceId}/crons/{cronId}/runs/{runId}/files/{fileId}/downloadDownloads on a Cron Run's page. An API key reads the source text or a media URL with kosuke crons runs files get.
GET/api/organizations/{workspaceId}/crons/{cronId}/runs/{runId}/artifacts/{artifactId}/downloadThe same download, for installed clients. Deprecated.
GET/api/organizations/{workspaceId}/crons/searchThe @ menu in Sensei's composer. An API key finds a cron by name with kosuke crons list --search.
PUT/api/user/analytics-consentYour choice of analytics cookies, in the cookie banner or under Settings > Your Account > Security, Manage
POST/api/product-eventsUsing the web app, which reports the pages you open, Sensei Cards, Previews and GitHub connections to Sensei's own product statistics, unless you declined statistics cookies
GET/api/command-searchSearch in the sidebar or Cmd+K. Searches platform items you can open. An API key uses each item's own list or search command.
POST/api/object-linksLinks to tasks, sessions, Files, Sensei threads and crons in Sensei card text and task descriptions, which show as chips with each name you can read. An API key reads each object with its own get command.
POST/api/spotlight/searchTyping in the desktop app's Spotlight, which also finds workspace and Personal Files by name. An API key searches every workspace with kosuke sessions list --q and kosuke crons list, and never searches Personal Files.
POST/api/spotlight/files/checkOpening a Files result in the desktop app's Spotlight, which checks access again. An API key reads a file with kosuke files get.
GET/api/spotlight/searchTyping in the desktop app's Spotlight, from a panel loaded before the search moved to POST; removed after the next desktop release. An API key searches every workspace with kosuke sessions list --q and kosuke crons list.
GET/api/spotlight/homeOpening the desktop app's Spotlight. An API key reads what waits on you with kosuke sensei cards list.
POST/api/spotlight/intentKept for desktop panels loaded before the current one: it asks no model. Removed after the next desktop release.
POST/api/spotlight/answerThe quick answer on Spotlight's answer card, for a general question. It is not saved anywhere.
GET/api/spotlight/ratesThe exchange rates Spotlight's calculator converts with.
GET/api/devicesSettings, Devices, the list of your Macs. An API key reads whether your Mac is online with kosuke mac status get.
POST/api/devicesSigning in to the desktop app, which connects your Mac. An API key reads whether it is online with kosuke mac status get.
DELETE/api/devices/{deviceId}Signing out of the desktop app, which disconnects your Mac, and Settings, Devices, Remove on a Mac.
PUT/api/devices/{deviceId}/sessionOpening the desktop app while signed in, which tells Sensei which session its Mac holds.
GET/api/devices/{deviceId}/chrome-profilesSettings, Devices, Chrome sign-ins on a Mac: its Chrome profiles and which ones Sensei can use.
POST/api/devices/{deviceId}/chrome-profilesSettings, Devices, Chrome sign-ins: the switch that lets Sensei use a profile or turns it off. Only you change them, so Sensei and an API key cannot.
GET/api/sensei/reels/laterSensei's Deck checks whether you have already confirmed sending a card to Later.
POST/api/sensei/reels/laterSend to Later remembers your first confirmation in Sensei's Deck.
GET, PUT/api/sensei/reels/orderThe Order button in Sensei's Deck: Oldest first or Newest first.

Next steps