Skip to content

REST API

KinBot exposes a REST API used by the web UI and available for external integrations. All endpoints are under /api/ and require authentication unless noted otherwise.

Authenticate using either:

  • API key header: X-API-Key: <your-api-key>
  • Session cookie set during login

Auth routes (/api/auth/*) are handled by Better Auth and don’t require pre-authentication.

MethodEndpointDescription
GET/api/kinsList all Kins
POST/api/kinsCreate a new Kin
GET/api/kins/:idGet Kin details
PATCH/api/kins/:idUpdate a Kin
DELETE/api/kins/:idDelete a Kin
GET/api/kins/:id/toolsList available tools (grouped by domain)
GET/api/kins/:id/context-usageGet context window usage
POST/api/kins/:id/avatarUpload avatar (multipart)
POST/api/kins/:id/avatar/generateGenerate avatar with AI
POST/api/kins/avatar/previewPreview generated avatar
POST/api/kins/generate-configAI-generate Kin config from description
GET/api/kins/:id/exportExport Kin as archive
POST/api/kins/importImport Kin from archive
MethodEndpointDescription
GET/api/kins/:kinId/messagesGet conversation history
POST/api/kins/:kinId/messagesSend a message to a Kin
MethodEndpointDescription
GET/api/kins/:kinId/messages/:messageId/reactionsList reactions on a message
POST/api/kins/:kinId/messages/:messageId/reactionsAdd or toggle a reaction
MethodEndpointDescription
GET/api/kins/:id/compacting/snapshotsList compacting snapshots
POST/api/kins/:id/compacting/runTrigger manual compacting
POST/api/kins/:id/compacting/purgePurge compacting data
POST/api/kins/:id/compacting/rollbackRollback to a snapshot

Memories can be accessed via Kin-scoped routes or global maintenance routes.

MethodEndpointDescription
GET/api/kins/:id/memoriesList memories for a Kin
POST/api/kins/:id/memoriesCreate a memory
PATCH/api/kins/:id/memories/:memoryIdUpdate a memory
DELETE/api/kins/:id/memories/:memoryIdDelete a memory
MethodEndpointDescription
GET/api/memoriesList all memories (cross-Kin)
POST/api/memories/backfill-importanceBackfill importance scores
POST/api/memories/consolidateRun memory consolidation
POST/api/memories/reembedRe-embed all memories

Kin-scoped knowledge base (RAG document sources).

MethodEndpointDescription
GET/api/kins/:kinId/knowledgeList knowledge sources
POST/api/kins/:kinId/knowledgeAdd a knowledge source
GET/api/kins/:kinId/knowledge/searchSearch knowledge
GET/api/kins/:kinId/knowledge/:sourceIdGet source details
DELETE/api/kins/:kinId/knowledge/:sourceIdDelete a source
POST/api/kins/:kinId/knowledge/:sourceId/reprocessReprocess a source

Channels are managed globally (not scoped to a Kin).

MethodEndpointDescription
GET/api/channelsList all channels
POST/api/channelsCreate a channel
GET/api/channels/pending-countGet pending message counts
GET/api/channels/:idGet channel details
PATCH/api/channels/:idUpdate a channel
DELETE/api/channels/:idDelete a channel
POST/api/channels/:id/activateActivate a channel
POST/api/channels/:id/deactivateDeactivate a channel
POST/api/channels/:id/testTest channel configuration
GET/api/channels/:id/user-mappingsList user mappings
POST/api/channels/:id/user-mappings/:mapId/approveApprove a user mapping

Platform-specific webhook endpoints (no auth required, verified by platform signature):

MethodEndpointDescription
POST/api/channels/telegram/:channelIdTelegram webhook
POST/api/channels/slack/webhook/:channelIdSlack Events API
GET/POST/api/channels/whatsapp/webhook/:channelIdWhatsApp verification & webhook
POST/api/channels/signal/webhook/:channelIdSignal webhook
MethodEndpointDescription
GET/api/mini-appsList all mini-apps
POST/api/mini-appsCreate a mini-app
GET/api/mini-apps/:idGet mini-app details
PATCH/api/mini-apps/:idUpdate a mini-app
DELETE/api/mini-apps/:idDelete a mini-app
GET/api/mini-apps/by-slug/:kinId/:slugGet mini-app by Kin + slug
GET/api/mini-apps/gallery/browseBrowse mini-app gallery
POST/api/mini-apps/:id/generate-iconGenerate an icon with AI
MethodEndpointDescription
GET/api/mini-apps/:id/filesList app files
GET/api/mini-apps/:id/files/*Read a file
PUT/api/mini-apps/:id/files/*Write a file
DELETE/api/mini-apps/:id/files/*Delete a file
MethodEndpointDescription
GET/api/mini-apps/:id/storageList all keys
GET/api/mini-apps/:id/storage/:keyGet a value
PUT/api/mini-apps/:id/storage/:keySet a value
DELETE/api/mini-apps/:id/storage/:keyDelete a key
DELETE/api/mini-apps/:id/storageClear all storage
MethodEndpointDescription
GET/api/mini-apps/:id/snapshotsList snapshots
POST/api/mini-apps/:id/snapshotsCreate a snapshot
POST/api/mini-apps/:id/snapshots/:version/rollbackRollback to snapshot
MethodEndpointDescription
POST/api/mini-apps/:id/httpProxy HTTP request to app backend
GET/api/mini-apps/:id/eventsSSE stream from app backend
GET/api/mini-apps/:id/memories/searchSearch mini-app memories
POST/api/mini-apps/:id/memoriesCreate a mini-app memory
MethodEndpointDescription
GET/api/mini-apps/:id/serveServe mini-app HTML
GET/api/mini-apps/:id/static/*Serve static assets
MethodEndpointDescription
GET/api/mini-apps/sdk/kinbot-sdk.jsSDK JavaScript
GET/api/mini-apps/sdk/kinbot-react.jsReact bindings
GET/api/mini-apps/sdk/kinbot-components.jsComponent library
GET/api/mini-apps/sdk/kinbot-sdk.cssSDK stylesheet
GET/api/mini-apps/sdk/*.d.tsTypeScript declarations

Ephemeral conversation sessions for quick interactions.

All session responses include an expiresAt field (Unix timestamp in ms, or null). Sending a message to an expired session returns 409 SESSION_EXPIRED.

MethodEndpointDescription
GET/api/kins/:kinId/quick-sessionsList sessions for a Kin
POST/api/kins/:kinId/quick-sessionsCreate a session
MethodEndpointDescription
GET/api/quick-sessions/:idGet session with messages
POST/api/quick-sessions/:id/messagesSend a message
POST/api/quick-sessions/:id/messages/stopStop AI generation
POST/api/quick-sessions/:id/closeClose a session

Sub-tasks spawned by Kins (inter-Kin delegation, subtasks). Tasks support concurrency groups — tasks in the same group are limited to a max number of parallel executions, with excess tasks queued and auto-promoted.

MethodEndpointDescription
GET/api/tasksList all tasks
GET/api/tasks/:idGet task details with messages
POST/api/tasks/:id/cancelCancel a running task
POST/api/tasks/:id/force-promoteForce-start a queued task (ignoring concurrency limit)
MethodEndpointDescription
GET/api/pluginsList installed plugins
POST/api/pluginsInstall a plugin
PATCH/api/plugins/:idUpdate plugin config
DELETE/api/plugins/:idUninstall a plugin

See Plugin API for the full plugin store and registry routes.

MethodEndpointDescription
GET/api/providersList providers with status
POST/api/providersConfigure a provider
PATCH/api/providers/:idUpdate provider config
DELETE/api/providers/:idRemove provider config
POST/api/providers/:id/testTest provider connection

See Providers for the full provider reference.

MethodEndpointDescription
GET/api/contactsList contacts
POST/api/contactsCreate a contact
GET/api/contacts/:idGet contact details
PATCH/api/contacts/:idUpdate a contact
DELETE/api/contacts/:idDelete a contact
POST/api/contacts/:id/identifiersAdd an identifier
PATCH/api/contacts/:id/identifiers/:identifierIdUpdate an identifier
DELETE/api/contacts/:id/identifiers/:identifierIdRemove an identifier
GET/api/contacts/:id/platform-idsList platform IDs
POST/api/contacts/:id/platform-idsAdd a platform ID
DELETE/api/contacts/:id/platform-ids/:pidIdRemove a platform ID
POST/api/contacts/:id/notesAdd a note
PATCH/api/contacts/:id/notes/:noteIdUpdate a note
DELETE/api/contacts/:id/notes/:noteIdDelete a note
MethodEndpointDescription
GET/api/mcp-serversList MCP server configs
POST/api/mcp-serversAdd an MCP server
PATCH/api/mcp-servers/:idUpdate MCP server
POST/api/mcp-servers/:id/approveApprove an MCP server
DELETE/api/mcp-servers/:idRemove MCP server

Cron jobs are managed globally (not scoped to a Kin).

MethodEndpointDescription
GET/api/cronsList cron jobs
POST/api/cronsCreate a cron job
PATCH/api/crons/:idUpdate a cron job
POST/api/crons/:id/triggerTrigger a job immediately
POST/api/crons/:id/approveApprove a pending job
DELETE/api/crons/:idDelete a cron job

Webhooks are managed globally.

MethodEndpointDescription
GET/api/webhooksList webhooks
POST/api/webhooksCreate a webhook
PATCH/api/webhooks/:idUpdate a webhook
DELETE/api/webhooks/:idDelete a webhook
GET/api/webhooks/:id/logsGet webhook execution logs
POST/api/webhooks/:id/regenerate-tokenRegenerate webhook token
POST/api/webhooks/:id/test-filterTest a payload filter against a sample payload
POST/api/webhooks/:id/suggest-fieldsExtract field path suggestions from the last received payload
MethodEndpointDescription
POST/api/webhooks/incoming/:webhookIdReceive an incoming webhook (rate-limited)

Secure storage for secrets and sensitive data.

MethodEndpointDescription
GET/api/vaultList vaults
POST/api/vaultCreate a vault
PATCH/api/vault/:idUpdate a vault
DELETE/api/vault/:idDelete a vault
MethodEndpointDescription
GET/api/vault/entriesList entries
POST/api/vault/entriesCreate an entry
GET/api/vault/entries/:idGet entry details
PATCH/api/vault/entries/:idUpdate an entry
DELETE/api/vault/entries/:idDelete an entry
MethodEndpointDescription
GET/api/vault/entries/:id/attachmentsList attachments
POST/api/vault/entries/:id/attachmentsUpload attachment
GET/api/vault/attachments/:idDownload attachment
DELETE/api/vault/attachments/:idDelete attachment
MethodEndpointDescription
GET/api/vault/typesList vault types
POST/api/vault/typesCreate a type
PATCH/api/vault/types/:idUpdate a type
DELETE/api/vault/types/:idDelete a type

Shared file hosting with optional expiration and passwords.

MethodEndpointDescription
GET/api/file-storageList stored files
POST/api/file-storageUpload a file (multipart)
GET/api/file-storage/:idDownload a file
PATCH/api/file-storage/:idUpdate file metadata
DELETE/api/file-storage/:idDelete a file

Internal file uploads (used by messages).

MethodEndpointDescription
POST/api/files/uploadUpload a file (multipart)
MethodEndpointDescription
GET/api/notificationsList notifications
GET/api/notifications/unread-countGet unread count
PATCH/api/notifications/:id/readMark as read
POST/api/notifications/mark-all-readMark all as read
DELETE/api/notifications/:idDelete a notification

Pending approval prompts (e.g. tool use confirmations).

MethodEndpointDescription
GET/api/prompts/pendingList pending prompts
POST/api/prompts/:id/respondRespond to a prompt
MethodEndpointDescription
GET/api/usersList users
GET/api/users/mentionablesList mentionable users
DELETE/api/users/:idDelete a user
MethodEndpointDescription
GET/api/invitationsList invitations
POST/api/invitationsCreate an invitation
DELETE/api/invitations/:idDelete an invitation
GET/api/invitations/:token/validateValidate an invitation token
MethodEndpointDescription
GET/api/settings/global-promptGet global system prompt
PUT/api/settings/global-promptUpdate global prompt
GET/api/settings/modelsGet model configuration
PUT/api/settings/extraction-modelSet memory extraction model
PUT/api/settings/embedding-modelSet embedding model
GET/api/settings/search-providerGet search provider config
PUT/api/settings/search-providerUpdate search provider
GET/api/settings/hubGet Hub settings
PUT/api/settings/hubUpdate Hub settings
GET/api/settings/compacting-thresholdGet compacting threshold percent
PUT/api/settings/compacting-thresholdSet compacting threshold percent (50-95)
MethodEndpointDescription
GET/api/meGet current user info
PATCH/api/meUpdate profile
POST/api/me/avatarUpload avatar (multipart)

Public access to shared files (no auth required, token-based).

MethodEndpointDescription
GET/s/:tokenView shared content
POST/s/:tokenAccess password-protected share
MethodEndpointDescription
GET/api/version-checkGet cached version info (current version, latest, update available, release notes). Returns isUpdateAvailable: false if disabled
POST/api/version-check/checkForce a fresh version check (admin only). Returns 400 if version check is disabled
POST/api/version-check/updateSelf-update: runs git pull + bun install and restarts (admin only, non-Docker). Returns 400 in Docker mode
MethodEndpointDescription
GET/api/sseSSE event stream (see SSE Events)