openapi: 3.1.1 info: title: opencode description: opencode api version: 1.0.0 paths: /global/health: get: operationId: global.health summary: Get health description: Get health information about the OpenCode server. responses: '200': description: Health information content: application/json: schema: type: object properties: healthy: type: boolean const: true version: type: string required: - healthy - version x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.global.health({ ... }) /global/event: get: operationId: global.event summary: Get global events description: Subscribe to global events from the OpenCode system using server-sent events. responses: '200': description: Event stream content: text/event-stream: schema: $ref: '#/components/schemas/GlobalEvent' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.global.event({ ... }) /global/dispose: post: operationId: global.dispose summary: Dispose instance description: Clean up and dispose all OpenCode instances, releasing all resources. responses: '200': description: Global disposed content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.global.dispose({ ... }) /project: get: operationId: project.list parameters: - in: query name: directory schema: type: string summary: List all projects description: Get a list of projects that have been opened with OpenCode. responses: '200': description: List of projects content: application/json: schema: type: array items: $ref: '#/components/schemas/Project' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.project.list({ ... }) /project/current: get: operationId: project.current parameters: - in: query name: directory schema: type: string summary: Get current project description: Retrieve the currently active project that OpenCode is working with. responses: '200': description: Current project information content: application/json: schema: $ref: '#/components/schemas/Project' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.project.current({ ... }) /project/{projectID}: patch: operationId: project.update parameters: - in: query name: directory schema: type: string - in: path name: projectID schema: type: string required: true summary: Update project description: Update project properties such as name, icon and color. responses: '200': description: Updated project information content: application/json: schema: $ref: '#/components/schemas/Project' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: name: type: string icon: type: object properties: url: type: string color: type: string x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.project.update({ ... }) /pty: get: operationId: pty.list parameters: - in: query name: directory schema: type: string summary: List PTY sessions description: Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode. responses: '200': description: List of sessions content: application/json: schema: type: array items: $ref: '#/components/schemas/Pty' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.pty.list({ ... }) post: operationId: pty.create parameters: - in: query name: directory schema: type: string summary: Create PTY session description: Create a new pseudo-terminal (PTY) session for running shell commands and processes. responses: '200': description: Created session content: application/json: schema: $ref: '#/components/schemas/Pty' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: command: type: string args: type: array items: type: string cwd: type: string title: type: string env: type: object propertyNames: type: string additionalProperties: type: string x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.pty.create({ ... }) /pty/{ptyID}: get: operationId: pty.get parameters: - in: query name: directory schema: type: string - in: path name: ptyID schema: type: string required: true summary: Get PTY session description: Retrieve detailed information about a specific pseudo-terminal (PTY) session. responses: '200': description: Session info content: application/json: schema: $ref: '#/components/schemas/Pty' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.pty.get({ ... }) put: operationId: pty.update parameters: - in: query name: directory schema: type: string - in: path name: ptyID schema: type: string required: true summary: Update PTY session description: Update properties of an existing pseudo-terminal (PTY) session. responses: '200': description: Updated session content: application/json: schema: $ref: '#/components/schemas/Pty' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: title: type: string size: type: object properties: rows: type: number cols: type: number required: - rows - cols x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.pty.update({ ... }) delete: operationId: pty.remove parameters: - in: query name: directory schema: type: string - in: path name: ptyID schema: type: string required: true summary: Remove PTY session description: Remove and terminate a specific pseudo-terminal (PTY) session. responses: '200': description: Session removed content: application/json: schema: type: boolean '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.pty.remove({ ... }) /pty/{ptyID}/connect: get: operationId: pty.connect parameters: - in: query name: directory schema: type: string - in: path name: ptyID schema: type: string required: true summary: Connect to PTY session description: Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time. responses: '200': description: Connected session content: application/json: schema: type: boolean '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.pty.connect({ ... }) /config: get: operationId: config.get parameters: - in: query name: directory schema: type: string summary: Get configuration description: Retrieve the current OpenCode configuration settings and preferences. responses: '200': description: Get config info content: application/json: schema: $ref: '#/components/schemas/Config' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.config.get({ ... }) patch: operationId: config.update parameters: - in: query name: directory schema: type: string summary: Update configuration description: Update OpenCode configuration settings and preferences. responses: '200': description: Successfully updated config content: application/json: schema: $ref: '#/components/schemas/Config' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: $ref: '#/components/schemas/Config' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.config.update({ ... }) /experimental/tool/ids: get: operationId: tool.ids parameters: - in: query name: directory schema: type: string summary: List tool IDs description: Get a list of all available tool IDs, including both built-in tools and dynamically registered tools. responses: '200': description: Tool IDs content: application/json: schema: $ref: '#/components/schemas/ToolIDs' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tool.ids({ ... }) /experimental/tool: get: operationId: tool.list parameters: - in: query name: directory schema: type: string - in: query name: provider schema: type: string required: true - in: query name: model schema: type: string required: true summary: List tools description: Get a list of available tools with their JSON schema parameters for a specific provider and model combination. responses: '200': description: Tools content: application/json: schema: $ref: '#/components/schemas/ToolList' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tool.list({ ... }) /instance/dispose: post: operationId: instance.dispose parameters: - in: query name: directory schema: type: string summary: Dispose instance description: Clean up and dispose the current OpenCode instance, releasing all resources. responses: '200': description: Instance disposed content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.instance.dispose({ ... }) /path: get: operationId: path.get parameters: - in: query name: directory schema: type: string summary: Get paths description: Retrieve the current working directory and related path information for the OpenCode instance. responses: '200': description: Path content: application/json: schema: $ref: '#/components/schemas/Path' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.path.get({ ... }) /vcs: get: operationId: vcs.get parameters: - in: query name: directory schema: type: string summary: Get VCS info description: Retrieve version control system (VCS) information for the current project, such as git branch. responses: '200': description: VCS info content: application/json: schema: $ref: '#/components/schemas/VcsInfo' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.vcs.get({ ... }) /session: get: operationId: session.list parameters: - in: query name: directory schema: type: string summary: List sessions description: Get a list of all OpenCode sessions, sorted by most recently updated. responses: '200': description: List of sessions content: application/json: schema: type: array items: $ref: '#/components/schemas/Session' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.list({ ... }) post: operationId: session.create parameters: - in: query name: directory schema: type: string summary: Create session description: Create a new OpenCode session for interacting with AI assistants and managing conversations. responses: '200': description: Successfully created session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: parentID: type: string pattern: ^ses.* title: type: string permission: $ref: '#/components/schemas/PermissionRuleset' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.create({ ... }) /session/status: get: operationId: session.status parameters: - in: query name: directory schema: type: string summary: Get session status description: Retrieve the current status of all sessions, including active, idle, and completed states. responses: '200': description: Get session status content: application/json: schema: type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/SessionStatus' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.status({ ... }) /session/{sessionID}: get: operationId: session.get parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string pattern: ^ses.* required: true summary: Get session description: Retrieve detailed information about a specific OpenCode session. tags: - Session responses: '200': description: Get session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.get({ ... }) delete: operationId: session.delete parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string pattern: ^ses.* required: true summary: Delete session description: Delete a session and permanently remove all associated data, including messages and history. responses: '200': description: Successfully deleted session content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.delete({ ... }) patch: operationId: session.update parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true summary: Update session description: Update properties of an existing session, such as title or other metadata. responses: '200': description: Successfully updated session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: title: type: string time: type: object properties: archived: type: number x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.update({ ... }) /session/{sessionID}/children: get: operationId: session.children parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string pattern: ^ses.* required: true summary: Get session children tags: - Session description: Retrieve all child sessions that were forked from the specified parent session. responses: '200': description: List of children content: application/json: schema: type: array items: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.children({ ... }) /session/{sessionID}/todo: get: operationId: session.todo parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Get session todos description: Retrieve the todo list associated with a specific session, showing tasks and action items. responses: '200': description: Todo list content: application/json: schema: type: array items: $ref: '#/components/schemas/Todo' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.todo({ ... }) /session/{sessionID}/init: post: operationId: session.init parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Initialize session description: Analyze the current application and create an AGENTS.md file with project-specific agent configurations. responses: '200': description: '200' content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: modelID: type: string providerID: type: string messageID: type: string pattern: ^msg.* required: - modelID - providerID - messageID x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.init({ ... }) /session/{sessionID}/fork: post: operationId: session.fork parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string pattern: ^ses.* required: true summary: Fork session description: Create a new session by forking an existing session at a specific message point. responses: '200': description: '200' content: application/json: schema: $ref: '#/components/schemas/Session' requestBody: content: application/json: schema: type: object properties: messageID: type: string pattern: ^msg.* x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.fork({ ... }) /session/{sessionID}/abort: post: operationId: session.abort parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true summary: Abort session description: Abort an active session and stop any ongoing AI processing or command execution. responses: '200': description: Aborted session content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.abort({ ... }) /session/{sessionID}/share: post: operationId: session.share parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true summary: Share session description: Create a shareable link for a session, allowing others to view the conversation. responses: '200': description: Successfully shared session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.share({ ... }) delete: operationId: session.unshare parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string pattern: ^ses.* required: true summary: Unshare session description: Remove the shareable link for a session, making it private again. responses: '200': description: Successfully unshared session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.unshare({ ... }) /session/{sessionID}/diff: get: operationId: session.diff parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID - in: query name: messageID schema: type: string pattern: ^msg.* summary: Get session diff description: Get all file changes (diffs) made during this session. responses: '200': description: List of diffs content: application/json: schema: type: array items: $ref: '#/components/schemas/FileDiff' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.diff({ ... }) /session/{sessionID}/summarize: post: operationId: session.summarize parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Summarize session description: Generate a concise summary of the session using AI compaction to preserve key information. responses: '200': description: Summarized session content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: providerID: type: string modelID: type: string auto: default: false type: boolean required: - providerID - modelID x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.summarize({ ... }) /session/{sessionID}/message: get: operationId: session.messages parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID - in: query name: limit schema: type: number summary: Get session messages description: Retrieve all messages in a session, including user prompts and AI responses. responses: '200': description: List of messages content: application/json: schema: type: array items: type: object properties: info: $ref: '#/components/schemas/Message' parts: type: array items: $ref: '#/components/schemas/Part' required: - info - parts '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.messages({ ... }) post: operationId: session.prompt parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Send message description: Create and send a new message to a session, streaming the AI response. responses: '200': description: Created message content: application/json: schema: type: object properties: info: $ref: '#/components/schemas/AssistantMessage' parts: type: array items: $ref: '#/components/schemas/Part' required: - info - parts '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: messageID: type: string pattern: ^msg.* model: type: object properties: providerID: type: string modelID: type: string required: - providerID - modelID agent: type: string noReply: type: boolean tools: description: '@deprecated tools and permissions have been merged, you can set permissions on the session itself now' type: object propertyNames: type: string additionalProperties: type: boolean system: type: string variant: type: string parts: type: array items: anyOf: - $ref: '#/components/schemas/TextPartInput' - $ref: '#/components/schemas/FilePartInput' - $ref: '#/components/schemas/AgentPartInput' - $ref: '#/components/schemas/SubtaskPartInput' required: - parts x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.prompt({ ... }) /session/{sessionID}/message/{messageID}: get: operationId: session.message parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID - in: path name: messageID schema: type: string required: true description: Message ID summary: Get message description: Retrieve a specific message from a session by its message ID. responses: '200': description: Message content: application/json: schema: type: object properties: info: $ref: '#/components/schemas/Message' parts: type: array items: $ref: '#/components/schemas/Part' required: - info - parts '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.message({ ... }) /session/{sessionID}/message/{messageID}/part/{partID}: delete: operationId: part.delete parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID - in: path name: messageID schema: type: string required: true description: Message ID - in: path name: partID schema: type: string required: true description: Part ID description: Delete a part from a message responses: '200': description: Successfully deleted part content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.part.delete({ ... }) patch: operationId: part.update parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID - in: path name: messageID schema: type: string required: true description: Message ID - in: path name: partID schema: type: string required: true description: Part ID description: Update a part in a message responses: '200': description: Successfully updated part content: application/json: schema: $ref: '#/components/schemas/Part' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: $ref: '#/components/schemas/Part' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.part.update({ ... }) /session/{sessionID}/prompt_async: post: operationId: session.prompt_async parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Send async message description: Create and send a new message to a session asynchronously, starting the session if needed and returning immediately. responses: '204': description: Prompt accepted '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: messageID: type: string pattern: ^msg.* model: type: object properties: providerID: type: string modelID: type: string required: - providerID - modelID agent: type: string noReply: type: boolean tools: description: '@deprecated tools and permissions have been merged, you can set permissions on the session itself now' type: object propertyNames: type: string additionalProperties: type: boolean system: type: string variant: type: string parts: type: array items: anyOf: - $ref: '#/components/schemas/TextPartInput' - $ref: '#/components/schemas/FilePartInput' - $ref: '#/components/schemas/AgentPartInput' - $ref: '#/components/schemas/SubtaskPartInput' required: - parts x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.prompt_async({ ... }) /session/{sessionID}/command: post: operationId: session.command parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Send command description: Send a new command to a session for execution by the AI assistant. responses: '200': description: Created message content: application/json: schema: type: object properties: info: $ref: '#/components/schemas/AssistantMessage' parts: type: array items: $ref: '#/components/schemas/Part' required: - info - parts '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: messageID: type: string pattern: ^msg.* agent: type: string model: type: string arguments: type: string command: type: string variant: type: string required: - arguments - command x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.command({ ... }) /session/{sessionID}/shell: post: operationId: session.shell parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true description: Session ID summary: Run shell command description: Execute a shell command within the session context and return the AI's response. responses: '200': description: Created message content: application/json: schema: $ref: '#/components/schemas/AssistantMessage' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: agent: type: string model: type: object properties: providerID: type: string modelID: type: string required: - providerID - modelID command: type: string required: - agent - command x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.shell({ ... }) /session/{sessionID}/revert: post: operationId: session.revert parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true summary: Revert message description: Revert a specific message in a session, undoing its effects and restoring the previous state. responses: '200': description: Updated session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: messageID: type: string pattern: ^msg.* partID: type: string pattern: ^prt.* required: - messageID x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.revert({ ... }) /session/{sessionID}/unrevert: post: operationId: session.unrevert parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true summary: Restore reverted messages description: Restore all previously reverted messages in a session. responses: '200': description: Updated session content: application/json: schema: $ref: '#/components/schemas/Session' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.session.unrevert({ ... }) /session/{sessionID}/permissions/{permissionID}: post: operationId: permission.respond parameters: - in: query name: directory schema: type: string - in: path name: sessionID schema: type: string required: true - in: path name: permissionID schema: type: string required: true summary: Respond to permission deprecated: true description: Approve or deny a permission request from the AI assistant. responses: '200': description: Permission processed successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: response: type: string enum: - once - always - reject required: - response x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.permission.respond({ ... }) /permission/{requestID}/reply: post: operationId: permission.reply parameters: - in: query name: directory schema: type: string - in: path name: requestID schema: type: string required: true summary: Respond to permission request description: Approve or deny a permission request from the AI assistant. responses: '200': description: Permission processed successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: reply: type: string enum: - once - always - reject required: - reply x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.permission.reply({ ... }) /permission: get: operationId: permission.list parameters: - in: query name: directory schema: type: string summary: List pending permissions description: Get all pending permission requests across all sessions. responses: '200': description: List of pending permissions content: application/json: schema: type: array items: $ref: '#/components/schemas/PermissionRequest' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.permission.list({ ... }) /command: get: operationId: command.list parameters: - in: query name: directory schema: type: string summary: List commands description: Get a list of all available commands in the OpenCode system. responses: '200': description: List of commands content: application/json: schema: type: array items: $ref: '#/components/schemas/Command' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.command.list({ ... }) /config/providers: get: operationId: config.providers parameters: - in: query name: directory schema: type: string summary: List config providers description: Get a list of all configured AI providers and their default models. responses: '200': description: List of providers content: application/json: schema: type: object properties: providers: type: array items: $ref: '#/components/schemas/Provider' default: type: object propertyNames: type: string additionalProperties: type: string required: - providers - default x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.config.providers({ ... }) /provider: get: operationId: provider.list parameters: - in: query name: directory schema: type: string summary: List providers description: Get a list of all available AI providers, including both available and connected ones. responses: '200': description: List of providers content: application/json: schema: type: object properties: all: type: array items: type: object properties: api: type: string name: type: string env: type: array items: type: string id: type: string npm: type: string models: type: object propertyNames: type: string additionalProperties: type: object properties: id: type: string name: type: string family: type: string release_date: type: string attachment: type: boolean reasoning: type: boolean temperature: type: boolean tool_call: type: boolean interleaved: anyOf: - type: boolean const: true - type: object properties: field: type: string enum: - reasoning_content - reasoning_details required: - field additionalProperties: false cost: type: object properties: input: type: number output: type: number cache_read: type: number cache_write: type: number context_over_200k: type: object properties: input: type: number output: type: number cache_read: type: number cache_write: type: number required: - input - output required: - input - output limit: type: object properties: context: type: number output: type: number required: - context - output modalities: type: object properties: input: type: array items: type: string enum: - text - audio - image - video - pdf output: type: array items: type: string enum: - text - audio - image - video - pdf required: - input - output experimental: type: boolean status: type: string enum: - alpha - beta - deprecated options: type: object propertyNames: type: string additionalProperties: {} headers: type: object propertyNames: type: string additionalProperties: type: string provider: type: object properties: npm: type: string required: - npm variants: type: object propertyNames: type: string additionalProperties: type: object propertyNames: type: string additionalProperties: {} required: - id - name - release_date - attachment - reasoning - temperature - tool_call - limit - options required: - name - env - id - models default: type: object propertyNames: type: string additionalProperties: type: string connected: type: array items: type: string required: - all - default - connected x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.provider.list({ ... }) /provider/auth: get: operationId: provider.auth parameters: - in: query name: directory schema: type: string summary: Get provider auth methods description: Retrieve available authentication methods for all AI providers. responses: '200': description: Provider auth methods content: application/json: schema: type: object propertyNames: type: string additionalProperties: type: array items: $ref: '#/components/schemas/ProviderAuthMethod' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.provider.auth({ ... }) /provider/{providerID}/oauth/authorize: post: operationId: provider.oauth.authorize parameters: - in: query name: directory schema: type: string - in: path name: providerID schema: type: string required: true description: Provider ID summary: OAuth authorize description: Initiate OAuth authorization for a specific AI provider to get an authorization URL. responses: '200': description: Authorization URL and method content: application/json: schema: $ref: '#/components/schemas/ProviderAuthAuthorization' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: method: description: Auth method index type: number required: - method x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.provider.oauth.authorize({ ... }) /provider/{providerID}/oauth/callback: post: operationId: provider.oauth.callback parameters: - in: query name: directory schema: type: string - in: path name: providerID schema: type: string required: true description: Provider ID summary: OAuth callback description: Handle the OAuth callback from a provider after user authorization. responses: '200': description: OAuth callback processed successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: method: description: Auth method index type: number code: description: OAuth authorization code type: string required: - method x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.provider.oauth.callback({ ... }) /find: get: operationId: find.text parameters: - in: query name: directory schema: type: string - in: query name: pattern schema: type: string required: true summary: Find text description: Search for text patterns across files in the project using ripgrep. responses: '200': description: Matches content: application/json: schema: type: array items: type: object properties: path: type: object properties: text: type: string required: - text lines: type: object properties: text: type: string required: - text line_number: type: number absolute_offset: type: number submatches: type: array items: type: object properties: match: type: object properties: text: type: string required: - text start: type: number end: type: number required: - match - start - end required: - path - lines - line_number - absolute_offset - submatches x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.find.text({ ... }) /find/file: get: operationId: find.files parameters: - in: query name: directory schema: type: string - in: query name: query schema: type: string required: true - in: query name: dirs schema: type: string enum: - 'true' - 'false' - in: query name: type schema: type: string enum: - file - directory - in: query name: limit schema: type: integer minimum: 1 maximum: 200 summary: Find files description: Search for files or directories by name or pattern in the project directory. responses: '200': description: File paths content: application/json: schema: type: array items: type: string x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.find.files({ ... }) /find/symbol: get: operationId: find.symbols parameters: - in: query name: directory schema: type: string - in: query name: query schema: type: string required: true summary: Find symbols description: Search for workspace symbols like functions, classes, and variables using LSP. responses: '200': description: Symbols content: application/json: schema: type: array items: $ref: '#/components/schemas/Symbol' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.find.symbols({ ... }) /file: get: operationId: file.list parameters: - in: query name: directory schema: type: string - in: query name: path schema: type: string required: true summary: List files description: List files and directories in a specified path. responses: '200': description: Files and directories content: application/json: schema: type: array items: $ref: '#/components/schemas/FileNode' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.file.list({ ... }) /file/content: get: operationId: file.read parameters: - in: query name: directory schema: type: string - in: query name: path schema: type: string required: true summary: Read file description: Read the content of a specified file. responses: '200': description: File content content: application/json: schema: $ref: '#/components/schemas/FileContent' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.file.read({ ... }) /file/status: get: operationId: file.status parameters: - in: query name: directory schema: type: string summary: Get file status description: Get the git status of all files in the project. responses: '200': description: File status content: application/json: schema: type: array items: $ref: '#/components/schemas/File' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.file.status({ ... }) /log: post: operationId: app.log parameters: - in: query name: directory schema: type: string summary: Write log description: Write a log entry to the server logs with specified level and metadata. responses: '200': description: Log entry written successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: service: description: Service name for the log entry type: string level: description: Log level type: string enum: - debug - info - error - warn message: description: Log message type: string extra: description: Additional metadata for the log entry type: object propertyNames: type: string additionalProperties: {} required: - service - level - message x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.app.log({ ... }) /agent: get: operationId: app.agents parameters: - in: query name: directory schema: type: string summary: List agents description: Get a list of all available AI agents in the OpenCode system. responses: '200': description: List of agents content: application/json: schema: type: array items: $ref: '#/components/schemas/Agent' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.app.agents({ ... }) /mcp: get: operationId: mcp.status parameters: - in: query name: directory schema: type: string summary: Get MCP status description: Get the status of all Model Context Protocol (MCP) servers. responses: '200': description: MCP server status content: application/json: schema: type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/MCPStatus' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.status({ ... }) post: operationId: mcp.add parameters: - in: query name: directory schema: type: string summary: Add MCP server description: Dynamically add a new Model Context Protocol (MCP) server to the system. responses: '200': description: MCP server added successfully content: application/json: schema: type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/MCPStatus' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: name: type: string config: anyOf: - $ref: '#/components/schemas/McpLocalConfig' - $ref: '#/components/schemas/McpRemoteConfig' required: - name - config x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.add({ ... }) /mcp/{name}/auth: post: operationId: mcp.auth.start parameters: - in: query name: directory schema: type: string - schema: type: string in: path name: name required: true summary: Start MCP OAuth description: Start OAuth authentication flow for a Model Context Protocol (MCP) server. responses: '200': description: OAuth flow started content: application/json: schema: type: object properties: authorizationUrl: description: URL to open in browser for authorization type: string required: - authorizationUrl '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.auth.start({ ... }) delete: operationId: mcp.auth.remove parameters: - in: query name: directory schema: type: string - schema: type: string in: path name: name required: true summary: Remove MCP OAuth description: Remove OAuth credentials for an MCP server responses: '200': description: OAuth credentials removed content: application/json: schema: type: object properties: success: type: boolean const: true required: - success '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.auth.remove({ ... }) /mcp/{name}/auth/callback: post: operationId: mcp.auth.callback parameters: - in: query name: directory schema: type: string - schema: type: string in: path name: name required: true summary: Complete MCP OAuth description: Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code. responses: '200': description: OAuth authentication completed content: application/json: schema: $ref: '#/components/schemas/MCPStatus' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' requestBody: content: application/json: schema: type: object properties: code: description: Authorization code from OAuth callback type: string required: - code x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.auth.callback({ ... }) /mcp/{name}/auth/authenticate: post: operationId: mcp.auth.authenticate parameters: - in: query name: directory schema: type: string - schema: type: string in: path name: name required: true summary: Authenticate MCP OAuth description: Start OAuth flow and wait for callback (opens browser) responses: '200': description: OAuth authentication completed content: application/json: schema: $ref: '#/components/schemas/MCPStatus' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.auth.authenticate({ ... }) /mcp/{name}/connect: post: operationId: mcp.connect parameters: - in: query name: directory schema: type: string - in: path name: name schema: type: string required: true description: Connect an MCP server responses: '200': description: MCP server connected successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.connect({ ... }) /mcp/{name}/disconnect: post: operationId: mcp.disconnect parameters: - in: query name: directory schema: type: string - in: path name: name schema: type: string required: true description: Disconnect an MCP server responses: '200': description: MCP server disconnected successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.mcp.disconnect({ ... }) /lsp: get: operationId: lsp.status parameters: - in: query name: directory schema: type: string summary: Get LSP status description: Get LSP server status responses: '200': description: LSP server status content: application/json: schema: type: array items: $ref: '#/components/schemas/LSPStatus' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.lsp.status({ ... }) /formatter: get: operationId: formatter.status parameters: - in: query name: directory schema: type: string summary: Get formatter status description: Get formatter status responses: '200': description: Formatter status content: application/json: schema: type: array items: $ref: '#/components/schemas/FormatterStatus' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.formatter.status({ ... }) /tui/append-prompt: post: operationId: tui.appendPrompt parameters: - in: query name: directory schema: type: string summary: Append TUI prompt description: Append prompt to the TUI responses: '200': description: Prompt processed successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: text: type: string required: - text x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.appendPrompt({ ... }) /tui/open-help: post: operationId: tui.openHelp parameters: - in: query name: directory schema: type: string summary: Open help dialog description: Open the help dialog in the TUI to display user assistance information. responses: '200': description: Help dialog opened successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.openHelp({ ... }) /tui/open-sessions: post: operationId: tui.openSessions parameters: - in: query name: directory schema: type: string summary: Open sessions dialog description: Open the session dialog responses: '200': description: Session dialog opened successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.openSessions({ ... }) /tui/open-themes: post: operationId: tui.openThemes parameters: - in: query name: directory schema: type: string summary: Open themes dialog description: Open the theme dialog responses: '200': description: Theme dialog opened successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.openThemes({ ... }) /tui/open-models: post: operationId: tui.openModels parameters: - in: query name: directory schema: type: string summary: Open models dialog description: Open the model dialog responses: '200': description: Model dialog opened successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.openModels({ ... }) /tui/submit-prompt: post: operationId: tui.submitPrompt parameters: - in: query name: directory schema: type: string summary: Submit TUI prompt description: Submit the prompt responses: '200': description: Prompt submitted successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.submitPrompt({ ... }) /tui/clear-prompt: post: operationId: tui.clearPrompt parameters: - in: query name: directory schema: type: string summary: Clear TUI prompt description: Clear the prompt responses: '200': description: Prompt cleared successfully content: application/json: schema: type: boolean x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.clearPrompt({ ... }) /tui/execute-command: post: operationId: tui.executeCommand parameters: - in: query name: directory schema: type: string summary: Execute TUI command description: Execute a TUI command (e.g. agent_cycle) responses: '200': description: Command executed successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: type: object properties: command: type: string required: - command x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.executeCommand({ ... }) /tui/show-toast: post: operationId: tui.showToast parameters: - in: query name: directory schema: type: string summary: Show TUI toast description: Show a toast notification in the TUI responses: '200': description: Toast notification shown successfully content: application/json: schema: type: boolean requestBody: content: application/json: schema: type: object properties: title: type: string message: type: string variant: type: string enum: - info - success - warning - error duration: description: Duration in milliseconds default: 5000 type: number required: - message - variant x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.showToast({ ... }) /tui/publish: post: operationId: tui.publish parameters: - in: query name: directory schema: type: string summary: Publish TUI event description: Publish a TUI event responses: '200': description: Event published successfully content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: anyOf: - $ref: '#/components/schemas/Event.tui.prompt.append' - $ref: '#/components/schemas/Event.tui.command.execute' - $ref: '#/components/schemas/Event.tui.toast.show' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.publish({ ... }) /tui/control/next: get: operationId: tui.control.next parameters: - in: query name: directory schema: type: string summary: Get next TUI request description: Retrieve the next TUI (Terminal User Interface) request from the queue for processing. responses: '200': description: Next TUI request content: application/json: schema: type: object properties: path: type: string body: {} required: - path - body x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.control.next({ ... }) /tui/control/response: post: operationId: tui.control.response parameters: - in: query name: directory schema: type: string summary: Submit TUI response description: Submit a response to the TUI request queue to complete a pending request. responses: '200': description: Response submitted successfully content: application/json: schema: type: boolean requestBody: content: application/json: schema: {} x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.tui.control.response({ ... }) /auth/{providerID}: put: operationId: auth.set parameters: - in: query name: directory schema: type: string - in: path name: providerID schema: type: string required: true summary: Set auth credentials description: Set authentication credentials responses: '200': description: Successfully set authentication credentials content: application/json: schema: type: boolean '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/BadRequestError' requestBody: content: application/json: schema: $ref: '#/components/schemas/Auth' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.auth.set({ ... }) /event: get: operationId: event.subscribe parameters: - in: query name: directory schema: type: string summary: Subscribe to events description: Get events responses: '200': description: Event stream content: text/event-stream: schema: $ref: '#/components/schemas/Event' x-codeSamples: - lang: js source: |- import { createOpencodeClient } from "@opencode-ai/sdk const client = createOpencodeClient() await client.event.subscribe({ ... }) components: schemas: Event.installation.updated: type: object properties: type: type: string const: installation.updated properties: type: object properties: version: type: string required: - version required: - type - properties Event.installation.update-available: type: object properties: type: type: string const: installation.update-available properties: type: object properties: version: type: string required: - version required: - type - properties Project: type: object properties: id: type: string worktree: type: string vcs: type: string const: git name: type: string icon: type: object properties: url: type: string color: type: string time: type: object properties: created: type: number updated: type: number initialized: type: number required: - created - updated required: - id - worktree - time Event.project.updated: type: object properties: type: type: string const: project.updated properties: $ref: '#/components/schemas/Project' required: - type - properties Event.server.instance.disposed: type: object properties: type: type: string const: server.instance.disposed properties: type: object properties: directory: type: string required: - directory required: - type - properties Event.lsp.client.diagnostics: type: object properties: type: type: string const: lsp.client.diagnostics properties: type: object properties: serverID: type: string path: type: string required: - serverID - path required: - type - properties Event.lsp.updated: type: object properties: type: type: string const: lsp.updated properties: type: object properties: {} required: - type - properties FileDiff: type: object properties: file: type: string before: type: string after: type: string additions: type: number deletions: type: number required: - file - before - after - additions - deletions UserMessage: type: object properties: id: type: string sessionID: type: string role: type: string const: user time: type: object properties: created: type: number required: - created summary: type: object properties: title: type: string body: type: string diffs: type: array items: $ref: '#/components/schemas/FileDiff' required: - diffs agent: type: string model: type: object properties: providerID: type: string modelID: type: string required: - providerID - modelID system: type: string tools: type: object propertyNames: type: string additionalProperties: type: boolean variant: type: string required: - id - sessionID - role - time - agent - model ProviderAuthError: type: object properties: name: type: string const: ProviderAuthError data: type: object properties: providerID: type: string message: type: string required: - providerID - message required: - name - data UnknownError: type: object properties: name: type: string const: UnknownError data: type: object properties: message: type: string required: - message required: - name - data MessageOutputLengthError: type: object properties: name: type: string const: MessageOutputLengthError data: type: object properties: {} required: - name - data MessageAbortedError: type: object properties: name: type: string const: MessageAbortedError data: type: object properties: message: type: string required: - message required: - name - data APIError: type: object properties: name: type: string const: APIError data: type: object properties: message: type: string statusCode: type: number isRetryable: type: boolean responseHeaders: type: object propertyNames: type: string additionalProperties: type: string responseBody: type: string metadata: type: object propertyNames: type: string additionalProperties: type: string required: - message - isRetryable required: - name - data AssistantMessage: type: object properties: id: type: string sessionID: type: string role: type: string const: assistant time: type: object properties: created: type: number completed: type: number required: - created error: anyOf: - $ref: '#/components/schemas/ProviderAuthError' - $ref: '#/components/schemas/UnknownError' - $ref: '#/components/schemas/MessageOutputLengthError' - $ref: '#/components/schemas/MessageAbortedError' - $ref: '#/components/schemas/APIError' parentID: type: string modelID: type: string providerID: type: string mode: type: string agent: type: string path: type: object properties: cwd: type: string root: type: string required: - cwd - root summary: type: boolean cost: type: number tokens: type: object properties: input: type: number output: type: number reasoning: type: number cache: type: object properties: read: type: number write: type: number required: - read - write required: - input - output - reasoning - cache finish: type: string required: - id - sessionID - role - time - parentID - modelID - providerID - mode - agent - path - cost - tokens Message: anyOf: - $ref: '#/components/schemas/UserMessage' - $ref: '#/components/schemas/AssistantMessage' Event.message.updated: type: object properties: type: type: string const: message.updated properties: type: object properties: info: $ref: '#/components/schemas/Message' required: - info required: - type - properties Event.message.removed: type: object properties: type: type: string const: message.removed properties: type: object properties: sessionID: type: string messageID: type: string required: - sessionID - messageID required: - type - properties TextPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: text text: type: string synthetic: type: boolean ignored: type: boolean time: type: object properties: start: type: number end: type: number required: - start metadata: type: object propertyNames: type: string additionalProperties: {} required: - id - sessionID - messageID - type - text ReasoningPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: reasoning text: type: string metadata: type: object propertyNames: type: string additionalProperties: {} time: type: object properties: start: type: number end: type: number required: - start required: - id - sessionID - messageID - type - text - time FilePartSourceText: type: object properties: value: type: string start: type: integer minimum: -9007199254740991 maximum: 9007199254740991 end: type: integer minimum: -9007199254740991 maximum: 9007199254740991 required: - value - start - end FileSource: type: object properties: text: $ref: '#/components/schemas/FilePartSourceText' type: type: string const: file path: type: string required: - text - type - path Range: type: object properties: start: type: object properties: line: type: number character: type: number required: - line - character end: type: object properties: line: type: number character: type: number required: - line - character required: - start - end SymbolSource: type: object properties: text: $ref: '#/components/schemas/FilePartSourceText' type: type: string const: symbol path: type: string range: $ref: '#/components/schemas/Range' name: type: string kind: type: integer minimum: -9007199254740991 maximum: 9007199254740991 required: - text - type - path - range - name - kind FilePartSource: anyOf: - $ref: '#/components/schemas/FileSource' - $ref: '#/components/schemas/SymbolSource' FilePart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: file mime: type: string filename: type: string url: type: string source: $ref: '#/components/schemas/FilePartSource' required: - id - sessionID - messageID - type - mime - url ToolStatePending: type: object properties: status: type: string const: pending input: type: object propertyNames: type: string additionalProperties: {} raw: type: string required: - status - input - raw ToolStateRunning: type: object properties: status: type: string const: running input: type: object propertyNames: type: string additionalProperties: {} title: type: string metadata: type: object propertyNames: type: string additionalProperties: {} time: type: object properties: start: type: number required: - start required: - status - input - time ToolStateCompleted: type: object properties: status: type: string const: completed input: type: object propertyNames: type: string additionalProperties: {} output: type: string title: type: string metadata: type: object propertyNames: type: string additionalProperties: {} time: type: object properties: start: type: number end: type: number compacted: type: number required: - start - end attachments: type: array items: $ref: '#/components/schemas/FilePart' required: - status - input - output - title - metadata - time ToolStateError: type: object properties: status: type: string const: error input: type: object propertyNames: type: string additionalProperties: {} error: type: string metadata: type: object propertyNames: type: string additionalProperties: {} time: type: object properties: start: type: number end: type: number required: - start - end required: - status - input - error - time ToolState: anyOf: - $ref: '#/components/schemas/ToolStatePending' - $ref: '#/components/schemas/ToolStateRunning' - $ref: '#/components/schemas/ToolStateCompleted' - $ref: '#/components/schemas/ToolStateError' ToolPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: tool callID: type: string tool: type: string state: $ref: '#/components/schemas/ToolState' metadata: type: object propertyNames: type: string additionalProperties: {} required: - id - sessionID - messageID - type - callID - tool - state StepStartPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: step-start snapshot: type: string required: - id - sessionID - messageID - type StepFinishPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: step-finish reason: type: string snapshot: type: string cost: type: number tokens: type: object properties: input: type: number output: type: number reasoning: type: number cache: type: object properties: read: type: number write: type: number required: - read - write required: - input - output - reasoning - cache required: - id - sessionID - messageID - type - reason - cost - tokens SnapshotPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: snapshot snapshot: type: string required: - id - sessionID - messageID - type - snapshot PatchPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: patch hash: type: string files: type: array items: type: string required: - id - sessionID - messageID - type - hash - files AgentPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: agent name: type: string source: type: object properties: value: type: string start: type: integer minimum: -9007199254740991 maximum: 9007199254740991 end: type: integer minimum: -9007199254740991 maximum: 9007199254740991 required: - value - start - end required: - id - sessionID - messageID - type - name RetryPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: retry attempt: type: number error: $ref: '#/components/schemas/APIError' time: type: object properties: created: type: number required: - created required: - id - sessionID - messageID - type - attempt - error - time CompactionPart: type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: compaction auto: type: boolean required: - id - sessionID - messageID - type - auto Part: anyOf: - $ref: '#/components/schemas/TextPart' - type: object properties: id: type: string sessionID: type: string messageID: type: string type: type: string const: subtask prompt: type: string description: type: string agent: type: string command: type: string required: - id - sessionID - messageID - type - prompt - description - agent - $ref: '#/components/schemas/ReasoningPart' - $ref: '#/components/schemas/FilePart' - $ref: '#/components/schemas/ToolPart' - $ref: '#/components/schemas/StepStartPart' - $ref: '#/components/schemas/StepFinishPart' - $ref: '#/components/schemas/SnapshotPart' - $ref: '#/components/schemas/PatchPart' - $ref: '#/components/schemas/AgentPart' - $ref: '#/components/schemas/RetryPart' - $ref: '#/components/schemas/CompactionPart' Event.message.part.updated: type: object properties: type: type: string const: message.part.updated properties: type: object properties: part: $ref: '#/components/schemas/Part' delta: type: string required: - part required: - type - properties Event.message.part.removed: type: object properties: type: type: string const: message.part.removed properties: type: object properties: sessionID: type: string messageID: type: string partID: type: string required: - sessionID - messageID - partID required: - type - properties PermissionRequest: type: object properties: id: type: string pattern: ^per.* sessionID: type: string pattern: ^ses.* permission: type: string patterns: type: array items: type: string metadata: type: object propertyNames: type: string additionalProperties: {} always: type: array items: type: string tool: type: object properties: messageID: type: string callID: type: string required: - messageID - callID required: - id - sessionID - permission - patterns - metadata - always Event.permission.asked: type: object properties: type: type: string const: permission.asked properties: $ref: '#/components/schemas/PermissionRequest' required: - type - properties Event.permission.replied: type: object properties: type: type: string const: permission.replied properties: type: object properties: sessionID: type: string requestID: type: string reply: type: string enum: - once - always - reject required: - sessionID - requestID - reply required: - type - properties SessionStatus: anyOf: - type: object properties: type: type: string const: idle required: - type - type: object properties: type: type: string const: retry attempt: type: number message: type: string next: type: number required: - type - attempt - message - next - type: object properties: type: type: string const: busy required: - type Event.session.status: type: object properties: type: type: string const: session.status properties: type: object properties: sessionID: type: string status: $ref: '#/components/schemas/SessionStatus' required: - sessionID - status required: - type - properties Event.session.idle: type: object properties: type: type: string const: session.idle properties: type: object properties: sessionID: type: string required: - sessionID required: - type - properties Event.session.compacted: type: object properties: type: type: string const: session.compacted properties: type: object properties: sessionID: type: string required: - sessionID required: - type - properties Event.file.edited: type: object properties: type: type: string const: file.edited properties: type: object properties: file: type: string required: - file required: - type - properties Todo: type: object properties: content: description: Brief description of the task type: string status: description: 'Current status of the task: pending, in_progress, completed, cancelled' type: string priority: description: 'Priority level of the task: high, medium, low' type: string id: description: Unique identifier for the todo item type: string required: - content - status - priority - id Event.todo.updated: type: object properties: type: type: string const: todo.updated properties: type: object properties: sessionID: type: string todos: type: array items: $ref: '#/components/schemas/Todo' required: - sessionID - todos required: - type - properties Event.tui.prompt.append: type: object properties: type: type: string const: tui.prompt.append properties: type: object properties: text: type: string required: - text required: - type - properties Event.tui.command.execute: type: object properties: type: type: string const: tui.command.execute properties: type: object properties: command: anyOf: - type: string enum: - session.list - session.new - session.share - session.interrupt - session.compact - session.page.up - session.page.down - session.half.page.up - session.half.page.down - session.first - session.last - prompt.clear - prompt.submit - agent.cycle - type: string required: - command required: - type - properties Event.tui.toast.show: type: object properties: type: type: string const: tui.toast.show properties: type: object properties: title: type: string message: type: string variant: type: string enum: - info - success - warning - error duration: description: Duration in milliseconds default: 5000 type: number required: - message - variant required: - type - properties Event.mcp.tools.changed: type: object properties: type: type: string const: mcp.tools.changed properties: type: object properties: server: type: string required: - server required: - type - properties Event.command.executed: type: object properties: type: type: string const: command.executed properties: type: object properties: name: type: string sessionID: type: string pattern: ^ses.* arguments: type: string messageID: type: string pattern: ^msg.* required: - name - sessionID - arguments - messageID required: - type - properties PermissionAction: type: string enum: - allow - deny - ask PermissionRule: type: object properties: permission: type: string pattern: type: string action: $ref: '#/components/schemas/PermissionAction' required: - permission - pattern - action PermissionRuleset: type: array items: $ref: '#/components/schemas/PermissionRule' Session: type: object properties: id: type: string pattern: ^ses.* projectID: type: string directory: type: string parentID: type: string pattern: ^ses.* summary: type: object properties: additions: type: number deletions: type: number files: type: number diffs: type: array items: $ref: '#/components/schemas/FileDiff' required: - additions - deletions - files share: type: object properties: url: type: string required: - url title: type: string version: type: string time: type: object properties: created: type: number updated: type: number compacting: type: number archived: type: number required: - created - updated permission: $ref: '#/components/schemas/PermissionRuleset' revert: type: object properties: messageID: type: string partID: type: string snapshot: type: string diff: type: string required: - messageID required: - id - projectID - directory - title - version - time Event.session.created: type: object properties: type: type: string const: session.created properties: type: object properties: info: $ref: '#/components/schemas/Session' required: - info required: - type - properties Event.session.updated: type: object properties: type: type: string const: session.updated properties: type: object properties: info: $ref: '#/components/schemas/Session' required: - info required: - type - properties Event.session.deleted: type: object properties: type: type: string const: session.deleted properties: type: object properties: info: $ref: '#/components/schemas/Session' required: - info required: - type - properties Event.session.diff: type: object properties: type: type: string const: session.diff properties: type: object properties: sessionID: type: string diff: type: array items: $ref: '#/components/schemas/FileDiff' required: - sessionID - diff required: - type - properties Event.session.error: type: object properties: type: type: string const: session.error properties: type: object properties: sessionID: type: string error: anyOf: - $ref: '#/components/schemas/ProviderAuthError' - $ref: '#/components/schemas/UnknownError' - $ref: '#/components/schemas/MessageOutputLengthError' - $ref: '#/components/schemas/MessageAbortedError' - $ref: '#/components/schemas/APIError' required: - type - properties Event.file.watcher.updated: type: object properties: type: type: string const: file.watcher.updated properties: type: object properties: file: type: string event: anyOf: - type: string const: add - type: string const: change - type: string const: unlink required: - file - event required: - type - properties Event.vcs.branch.updated: type: object properties: type: type: string const: vcs.branch.updated properties: type: object properties: branch: type: string required: - type - properties Pty: type: object properties: id: type: string pattern: ^pty.* title: type: string command: type: string args: type: array items: type: string cwd: type: string status: type: string enum: - running - exited pid: type: number required: - id - title - command - args - cwd - status - pid Event.pty.created: type: object properties: type: type: string const: pty.created properties: type: object properties: info: $ref: '#/components/schemas/Pty' required: - info required: - type - properties Event.pty.updated: type: object properties: type: type: string const: pty.updated properties: type: object properties: info: $ref: '#/components/schemas/Pty' required: - info required: - type - properties Event.pty.exited: type: object properties: type: type: string const: pty.exited properties: type: object properties: id: type: string pattern: ^pty.* exitCode: type: number required: - id - exitCode required: - type - properties Event.pty.deleted: type: object properties: type: type: string const: pty.deleted properties: type: object properties: id: type: string pattern: ^pty.* required: - id required: - type - properties Event.server.connected: type: object properties: type: type: string const: server.connected properties: type: object properties: {} required: - type - properties Event.global.disposed: type: object properties: type: type: string const: global.disposed properties: type: object properties: {} required: - type - properties Event: anyOf: - $ref: '#/components/schemas/Event.installation.updated' - $ref: '#/components/schemas/Event.installation.update-available' - $ref: '#/components/schemas/Event.project.updated' - $ref: '#/components/schemas/Event.server.instance.disposed' - $ref: '#/components/schemas/Event.lsp.client.diagnostics' - $ref: '#/components/schemas/Event.lsp.updated' - $ref: '#/components/schemas/Event.message.updated' - $ref: '#/components/schemas/Event.message.removed' - $ref: '#/components/schemas/Event.message.part.updated' - $ref: '#/components/schemas/Event.message.part.removed' - $ref: '#/components/schemas/Event.permission.asked' - $ref: '#/components/schemas/Event.permission.replied' - $ref: '#/components/schemas/Event.session.status' - $ref: '#/components/schemas/Event.session.idle' - $ref: '#/components/schemas/Event.session.compacted' - $ref: '#/components/schemas/Event.file.edited' - $ref: '#/components/schemas/Event.todo.updated' - $ref: '#/components/schemas/Event.tui.prompt.append' - $ref: '#/components/schemas/Event.tui.command.execute' - $ref: '#/components/schemas/Event.tui.toast.show' - $ref: '#/components/schemas/Event.mcp.tools.changed' - $ref: '#/components/schemas/Event.command.executed' - $ref: '#/components/schemas/Event.session.created' - $ref: '#/components/schemas/Event.session.updated' - $ref: '#/components/schemas/Event.session.deleted' - $ref: '#/components/schemas/Event.session.diff' - $ref: '#/components/schemas/Event.session.error' - $ref: '#/components/schemas/Event.file.watcher.updated' - $ref: '#/components/schemas/Event.vcs.branch.updated' - $ref: '#/components/schemas/Event.pty.created' - $ref: '#/components/schemas/Event.pty.updated' - $ref: '#/components/schemas/Event.pty.exited' - $ref: '#/components/schemas/Event.pty.deleted' - $ref: '#/components/schemas/Event.server.connected' - $ref: '#/components/schemas/Event.global.disposed' GlobalEvent: type: object properties: directory: type: string payload: $ref: '#/components/schemas/Event' required: - directory - payload BadRequestError: type: object properties: data: {} errors: type: array items: type: object propertyNames: type: string additionalProperties: {} success: type: boolean const: false required: - data - errors - success NotFoundError: type: object properties: name: type: string const: NotFoundError data: type: object properties: message: type: string required: - message required: - name - data KeybindsConfig: description: Custom keybind configurations type: object properties: leader: description: Leader key for keybind combinations default: ctrl+x type: string app_exit: description: Exit the application default: ctrl+c,ctrl+d,q type: string editor_open: description: Open external editor default: e type: string theme_list: description: List available themes default: t type: string sidebar_toggle: description: Toggle sidebar default: b type: string scrollbar_toggle: description: Toggle session scrollbar default: none type: string username_toggle: description: Toggle username visibility default: none type: string status_view: description: View status default: s type: string session_export: description: Export session to editor default: x type: string session_new: description: Create a new session default: n type: string session_list: description: List all sessions default: l type: string session_timeline: description: Show session timeline default: g type: string session_fork: description: Fork session from message default: none type: string session_rename: description: Rename session default: none type: string session_share: description: Share current session default: none type: string session_unshare: description: Unshare current session default: none type: string session_interrupt: description: Interrupt current session default: escape type: string session_compact: description: Compact the session default: c type: string messages_page_up: description: Scroll messages up by one page default: pageup type: string messages_page_down: description: Scroll messages down by one page default: pagedown type: string messages_half_page_up: description: Scroll messages up by half page default: ctrl+alt+u type: string messages_half_page_down: description: Scroll messages down by half page default: ctrl+alt+d type: string messages_first: description: Navigate to first message default: ctrl+g,home type: string messages_last: description: Navigate to last message default: ctrl+alt+g,end type: string messages_next: description: Navigate to next message default: none type: string messages_previous: description: Navigate to previous message default: none type: string messages_last_user: description: Navigate to last user message default: none type: string messages_copy: description: Copy message default: y type: string messages_undo: description: Undo message default: u type: string messages_redo: description: Redo message default: r type: string messages_toggle_conceal: description: Toggle code block concealment in messages default: h type: string tool_details: description: Toggle tool details visibility default: none type: string model_list: description: List available models default: m type: string model_cycle_recent: description: Next recently used model default: f2 type: string model_cycle_recent_reverse: description: Previous recently used model default: shift+f2 type: string model_cycle_favorite: description: Next favorite model default: none type: string model_cycle_favorite_reverse: description: Previous favorite model default: none type: string command_list: description: List available commands default: ctrl+p type: string agent_list: description: List agents default: a type: string agent_cycle: description: Next agent default: tab type: string agent_cycle_reverse: description: Previous agent default: shift+tab type: string variant_cycle: description: Cycle model variants default: ctrl+t type: string input_clear: description: Clear input field default: ctrl+c type: string input_paste: description: Paste from clipboard default: ctrl+v type: string input_submit: description: Submit input default: return type: string input_newline: description: Insert newline in input default: shift+return,ctrl+return,alt+return,ctrl+j type: string input_move_left: description: Move cursor left in input default: left,ctrl+b type: string input_move_right: description: Move cursor right in input default: right,ctrl+f type: string input_move_up: description: Move cursor up in input default: up type: string input_move_down: description: Move cursor down in input default: down type: string input_select_left: description: Select left in input default: shift+left type: string input_select_right: description: Select right in input default: shift+right type: string input_select_up: description: Select up in input default: shift+up type: string input_select_down: description: Select down in input default: shift+down type: string input_line_home: description: Move to start of line in input default: ctrl+a type: string input_line_end: description: Move to end of line in input default: ctrl+e type: string input_select_line_home: description: Select to start of line in input default: ctrl+shift+a type: string input_select_line_end: description: Select to end of line in input default: ctrl+shift+e type: string input_visual_line_home: description: Move to start of visual line in input default: alt+a type: string input_visual_line_end: description: Move to end of visual line in input default: alt+e type: string input_select_visual_line_home: description: Select to start of visual line in input default: alt+shift+a type: string input_select_visual_line_end: description: Select to end of visual line in input default: alt+shift+e type: string input_buffer_home: description: Move to start of buffer in input default: home type: string input_buffer_end: description: Move to end of buffer in input default: end type: string input_select_buffer_home: description: Select to start of buffer in input default: shift+home type: string input_select_buffer_end: description: Select to end of buffer in input default: shift+end type: string input_delete_line: description: Delete line in input default: ctrl+shift+d type: string input_delete_to_line_end: description: Delete to end of line in input default: ctrl+k type: string input_delete_to_line_start: description: Delete to start of line in input default: ctrl+u type: string input_backspace: description: Backspace in input default: backspace,shift+backspace type: string input_delete: description: Delete character in input default: ctrl+d,delete,shift+delete type: string input_undo: description: Undo in input default: ctrl+-,super+z type: string input_redo: description: Redo in input default: ctrl+.,super+shift+z type: string input_word_forward: description: Move word forward in input default: alt+f,alt+right,ctrl+right type: string input_word_backward: description: Move word backward in input default: alt+b,alt+left,ctrl+left type: string input_select_word_forward: description: Select word forward in input default: alt+shift+f,alt+shift+right type: string input_select_word_backward: description: Select word backward in input default: alt+shift+b,alt+shift+left type: string input_delete_word_forward: description: Delete word forward in input default: alt+d,alt+delete,ctrl+delete type: string input_delete_word_backward: description: Delete word backward in input default: ctrl+w,ctrl+backspace,alt+backspace type: string history_previous: description: Previous history item default: up type: string history_next: description: Next history item default: down type: string session_child_cycle: description: Next child session default: right type: string session_child_cycle_reverse: description: Previous child session default: left type: string session_parent: description: Go to parent session default: up type: string terminal_suspend: description: Suspend terminal default: ctrl+z type: string terminal_title_toggle: description: Toggle terminal title default: none type: string tips_toggle: description: Toggle tips on home screen default: h type: string additionalProperties: false LogLevel: description: Log level type: string enum: - DEBUG - INFO - WARN - ERROR ServerConfig: description: Server configuration for opencode serve and web commands type: object properties: port: description: Port to listen on type: integer exclusiveMinimum: 0 maximum: 9007199254740991 hostname: description: Hostname to listen on type: string mdns: description: Enable mDNS service discovery type: boolean cors: description: Additional domains to allow for CORS type: array items: type: string additionalProperties: false PermissionActionConfig: type: string enum: - ask - allow - deny PermissionObjectConfig: type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/PermissionActionConfig' PermissionRuleConfig: anyOf: - $ref: '#/components/schemas/PermissionActionConfig' - $ref: '#/components/schemas/PermissionObjectConfig' PermissionConfig: anyOf: - type: object properties: read: $ref: '#/components/schemas/PermissionRuleConfig' edit: $ref: '#/components/schemas/PermissionRuleConfig' glob: $ref: '#/components/schemas/PermissionRuleConfig' grep: $ref: '#/components/schemas/PermissionRuleConfig' list: $ref: '#/components/schemas/PermissionRuleConfig' bash: $ref: '#/components/schemas/PermissionRuleConfig' task: $ref: '#/components/schemas/PermissionRuleConfig' external_directory: $ref: '#/components/schemas/PermissionRuleConfig' todowrite: $ref: '#/components/schemas/PermissionActionConfig' todoread: $ref: '#/components/schemas/PermissionActionConfig' webfetch: $ref: '#/components/schemas/PermissionActionConfig' websearch: $ref: '#/components/schemas/PermissionActionConfig' codesearch: $ref: '#/components/schemas/PermissionActionConfig' lsp: $ref: '#/components/schemas/PermissionRuleConfig' doom_loop: $ref: '#/components/schemas/PermissionActionConfig' additionalProperties: $ref: '#/components/schemas/PermissionRuleConfig' - $ref: '#/components/schemas/PermissionActionConfig' AgentConfig: type: object properties: model: type: string temperature: type: number top_p: type: number prompt: type: string tools: description: "@deprecated Use 'permission' field instead" type: object propertyNames: type: string additionalProperties: type: boolean disable: type: boolean description: description: Description of when to use the agent type: string mode: type: string enum: - subagent - primary - all options: type: object propertyNames: type: string additionalProperties: {} color: description: 'Hex color code for the agent (e.g., #FF5733)' type: string pattern: ^#[0-9a-fA-F]{6}$ steps: description: Maximum number of agentic iterations before forcing text-only response type: integer exclusiveMinimum: 0 maximum: 9007199254740991 maxSteps: description: "@deprecated Use 'steps' field instead." type: integer exclusiveMinimum: 0 maximum: 9007199254740991 permission: $ref: '#/components/schemas/PermissionConfig' additionalProperties: {} ProviderConfig: type: object properties: api: type: string name: type: string env: type: array items: type: string id: type: string npm: type: string models: type: object propertyNames: type: string additionalProperties: type: object properties: id: type: string name: type: string family: type: string release_date: type: string attachment: type: boolean reasoning: type: boolean temperature: type: boolean tool_call: type: boolean interleaved: anyOf: - type: boolean const: true - type: object properties: field: type: string enum: - reasoning_content - reasoning_details required: - field additionalProperties: false cost: type: object properties: input: type: number output: type: number cache_read: type: number cache_write: type: number context_over_200k: type: object properties: input: type: number output: type: number cache_read: type: number cache_write: type: number required: - input - output required: - input - output limit: type: object properties: context: type: number output: type: number required: - context - output modalities: type: object properties: input: type: array items: type: string enum: - text - audio - image - video - pdf output: type: array items: type: string enum: - text - audio - image - video - pdf required: - input - output experimental: type: boolean status: type: string enum: - alpha - beta - deprecated options: type: object propertyNames: type: string additionalProperties: {} headers: type: object propertyNames: type: string additionalProperties: type: string provider: type: object properties: npm: type: string required: - npm variants: description: Variant-specific configuration type: object propertyNames: type: string additionalProperties: type: object properties: disabled: description: Disable this variant for the model type: boolean additionalProperties: {} whitelist: type: array items: type: string blacklist: type: array items: type: string options: type: object properties: apiKey: type: string baseURL: type: string enterpriseUrl: description: GitHub Enterprise URL for copilot authentication type: string setCacheKey: description: Enable promptCacheKey for this provider (default false) type: boolean timeout: description: Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout. anyOf: - description: Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout. type: integer exclusiveMinimum: 0 maximum: 9007199254740991 - description: Disable timeout for this provider entirely. type: boolean const: false additionalProperties: {} additionalProperties: false McpLocalConfig: type: object properties: type: description: Type of MCP server connection type: string const: local command: description: Command and arguments to run the MCP server type: array items: type: string environment: description: Environment variables to set when running the MCP server type: object propertyNames: type: string additionalProperties: type: string enabled: description: Enable or disable the MCP server on startup type: boolean timeout: description: Timeout in ms for fetching tools from the MCP server. Defaults to 5000 (5 seconds) if not specified. type: integer exclusiveMinimum: 0 maximum: 9007199254740991 required: - type - command additionalProperties: false McpOAuthConfig: type: object properties: clientId: description: OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted. type: string clientSecret: description: OAuth client secret (if required by the authorization server) type: string scope: description: OAuth scopes to request during authorization type: string additionalProperties: false McpRemoteConfig: type: object properties: type: description: Type of MCP server connection type: string const: remote url: description: URL of the remote MCP server type: string enabled: description: Enable or disable the MCP server on startup type: boolean headers: description: Headers to send with the request type: object propertyNames: type: string additionalProperties: type: string oauth: description: OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection. anyOf: - $ref: '#/components/schemas/McpOAuthConfig' - type: boolean const: false timeout: description: Timeout in ms for fetching tools from the MCP server. Defaults to 5000 (5 seconds) if not specified. type: integer exclusiveMinimum: 0 maximum: 9007199254740991 required: - type - url additionalProperties: false LayoutConfig: description: '@deprecated Always uses stretch layout.' type: string enum: - auto - stretch Config: type: object properties: $schema: description: JSON schema reference for configuration validation type: string theme: description: Theme name to use for the interface type: string keybinds: $ref: '#/components/schemas/KeybindsConfig' logLevel: $ref: '#/components/schemas/LogLevel' tui: description: TUI specific settings type: object properties: scroll_speed: description: TUI scroll speed type: number minimum: 0.001 scroll_acceleration: description: Scroll acceleration settings type: object properties: enabled: description: Enable scroll acceleration type: boolean required: - enabled diff_style: description: "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column" type: string enum: - auto - stacked server: $ref: '#/components/schemas/ServerConfig' command: description: Command configuration, see https://opencode.ai/docs/commands type: object propertyNames: type: string additionalProperties: type: object properties: template: type: string description: type: string agent: type: string model: type: string subtask: type: boolean required: - template watcher: type: object properties: ignore: type: array items: type: string plugin: type: array items: type: string snapshot: type: boolean share: description: Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing type: string enum: - manual - auto - disabled autoshare: description: "@deprecated Use 'share' field instead. Share newly created sessions automatically" type: boolean autoupdate: description: Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications anyOf: - type: boolean - type: string const: notify disabled_providers: description: Disable providers that are loaded automatically type: array items: type: string enabled_providers: description: When set, ONLY these providers will be enabled. All other providers will be ignored type: array items: type: string model: description: Model to use in the format of provider/model, eg anthropic/claude-2 type: string small_model: description: Small model to use for tasks like title generation in the format of provider/model type: string default_agent: description: Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid. type: string username: description: Custom username to display in conversations instead of system username type: string mode: description: '@deprecated Use `agent` field instead.' type: object properties: build: $ref: '#/components/schemas/AgentConfig' plan: $ref: '#/components/schemas/AgentConfig' additionalProperties: $ref: '#/components/schemas/AgentConfig' agent: description: Agent configuration, see https://opencode.ai/docs/agent type: object properties: plan: $ref: '#/components/schemas/AgentConfig' build: $ref: '#/components/schemas/AgentConfig' general: $ref: '#/components/schemas/AgentConfig' explore: $ref: '#/components/schemas/AgentConfig' title: $ref: '#/components/schemas/AgentConfig' summary: $ref: '#/components/schemas/AgentConfig' compaction: $ref: '#/components/schemas/AgentConfig' additionalProperties: $ref: '#/components/schemas/AgentConfig' provider: description: Custom provider configurations and model overrides type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/ProviderConfig' mcp: description: MCP (Model Context Protocol) server configurations type: object propertyNames: type: string additionalProperties: anyOf: - $ref: '#/components/schemas/McpLocalConfig' - $ref: '#/components/schemas/McpRemoteConfig' formatter: anyOf: - type: boolean const: false - type: object propertyNames: type: string additionalProperties: type: object properties: disabled: type: boolean command: type: array items: type: string environment: type: object propertyNames: type: string additionalProperties: type: string extensions: type: array items: type: string lsp: anyOf: - type: boolean const: false - type: object propertyNames: type: string additionalProperties: anyOf: - type: object properties: disabled: type: boolean const: true required: - disabled - type: object properties: command: type: array items: type: string extensions: type: array items: type: string disabled: type: boolean env: type: object propertyNames: type: string additionalProperties: type: string initialization: type: object propertyNames: type: string additionalProperties: {} required: - command instructions: description: Additional instruction files or patterns to include type: array items: type: string layout: $ref: '#/components/schemas/LayoutConfig' permission: $ref: '#/components/schemas/PermissionConfig' tools: type: object propertyNames: type: string additionalProperties: type: boolean enterprise: type: object properties: url: description: Enterprise URL type: string compaction: type: object properties: auto: description: 'Enable automatic compaction when context is full (default: true)' type: boolean prune: description: 'Enable pruning of old tool outputs (default: true)' type: boolean experimental: type: object properties: hook: type: object properties: file_edited: type: object propertyNames: type: string additionalProperties: type: array items: type: object properties: command: type: array items: type: string environment: type: object propertyNames: type: string additionalProperties: type: string required: - command session_completed: type: array items: type: object properties: command: type: array items: type: string environment: type: object propertyNames: type: string additionalProperties: type: string required: - command chatMaxRetries: description: Number of retries for chat completions on failure type: number disable_paste_summary: type: boolean batch_tool: description: Enable the batch tool type: boolean openTelemetry: description: Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag) type: boolean primary_tools: description: Tools that should only be available to primary agents. type: array items: type: string continue_loop_on_deny: description: Continue the agent loop when a tool call is denied type: boolean mcp_timeout: description: Timeout in milliseconds for model context protocol (MCP) requests type: integer exclusiveMinimum: 0 maximum: 9007199254740991 additionalProperties: false ToolIDs: type: array items: type: string ToolListItem: type: object properties: id: type: string description: type: string parameters: {} required: - id - description - parameters ToolList: type: array items: $ref: '#/components/schemas/ToolListItem' Path: type: object properties: home: type: string state: type: string config: type: string worktree: type: string directory: type: string required: - home - state - config - worktree - directory VcsInfo: type: object properties: branch: type: string required: - branch TextPartInput: type: object properties: id: type: string type: type: string const: text text: type: string synthetic: type: boolean ignored: type: boolean time: type: object properties: start: type: number end: type: number required: - start metadata: type: object propertyNames: type: string additionalProperties: {} required: - type - text FilePartInput: type: object properties: id: type: string type: type: string const: file mime: type: string filename: type: string url: type: string source: $ref: '#/components/schemas/FilePartSource' required: - type - mime - url AgentPartInput: type: object properties: id: type: string type: type: string const: agent name: type: string source: type: object properties: value: type: string start: type: integer minimum: -9007199254740991 maximum: 9007199254740991 end: type: integer minimum: -9007199254740991 maximum: 9007199254740991 required: - value - start - end required: - type - name SubtaskPartInput: type: object properties: id: type: string type: type: string const: subtask prompt: type: string description: type: string agent: type: string command: type: string required: - type - prompt - description - agent Command: type: object properties: name: type: string description: type: string agent: type: string model: type: string mcp: type: boolean template: anyOf: - type: string - type: string subtask: type: boolean hints: type: array items: type: string required: - name - template - hints Model: type: object properties: id: type: string providerID: type: string api: type: object properties: id: type: string url: type: string npm: type: string required: - id - url - npm name: type: string family: type: string capabilities: type: object properties: temperature: type: boolean reasoning: type: boolean attachment: type: boolean toolcall: type: boolean input: type: object properties: text: type: boolean audio: type: boolean image: type: boolean video: type: boolean pdf: type: boolean required: - text - audio - image - video - pdf output: type: object properties: text: type: boolean audio: type: boolean image: type: boolean video: type: boolean pdf: type: boolean required: - text - audio - image - video - pdf interleaved: anyOf: - type: boolean - type: object properties: field: type: string enum: - reasoning_content - reasoning_details required: - field required: - temperature - reasoning - attachment - toolcall - input - output - interleaved cost: type: object properties: input: type: number output: type: number cache: type: object properties: read: type: number write: type: number required: - read - write experimentalOver200K: type: object properties: input: type: number output: type: number cache: type: object properties: read: type: number write: type: number required: - read - write required: - input - output - cache required: - input - output - cache limit: type: object properties: context: type: number output: type: number required: - context - output status: type: string enum: - alpha - beta - deprecated - active options: type: object propertyNames: type: string additionalProperties: {} headers: type: object propertyNames: type: string additionalProperties: type: string release_date: type: string variants: type: object propertyNames: type: string additionalProperties: type: object propertyNames: type: string additionalProperties: {} required: - id - providerID - api - name - capabilities - cost - limit - status - options - headers - release_date Provider: type: object properties: id: type: string name: type: string source: type: string enum: - env - config - custom - api env: type: array items: type: string key: type: string options: type: object propertyNames: type: string additionalProperties: {} models: type: object propertyNames: type: string additionalProperties: $ref: '#/components/schemas/Model' required: - id - name - source - env - options - models ProviderAuthMethod: type: object properties: type: anyOf: - type: string const: oauth - type: string const: api label: type: string required: - type - label ProviderAuthAuthorization: type: object properties: url: type: string method: anyOf: - type: string const: auto - type: string const: code instructions: type: string required: - url - method - instructions Symbol: type: object properties: name: type: string kind: type: number location: type: object properties: uri: type: string range: $ref: '#/components/schemas/Range' required: - uri - range required: - name - kind - location FileNode: type: object properties: name: type: string path: type: string absolute: type: string type: type: string enum: - file - directory ignored: type: boolean required: - name - path - absolute - type - ignored FileContent: type: object properties: type: type: string const: text content: type: string diff: type: string patch: type: object properties: oldFileName: type: string newFileName: type: string oldHeader: type: string newHeader: type: string hunks: type: array items: type: object properties: oldStart: type: number oldLines: type: number newStart: type: number newLines: type: number lines: type: array items: type: string required: - oldStart - oldLines - newStart - newLines - lines index: type: string required: - oldFileName - newFileName - hunks encoding: type: string const: base64 mimeType: type: string required: - type - content File: type: object properties: path: type: string added: type: integer minimum: -9007199254740991 maximum: 9007199254740991 removed: type: integer minimum: -9007199254740991 maximum: 9007199254740991 status: type: string enum: - added - deleted - modified required: - path - added - removed - status Agent: type: object properties: name: type: string description: type: string mode: type: string enum: - subagent - primary - all native: type: boolean hidden: type: boolean topP: type: number temperature: type: number color: type: string permission: $ref: '#/components/schemas/PermissionRuleset' model: type: object properties: modelID: type: string providerID: type: string required: - modelID - providerID prompt: type: string options: type: object propertyNames: type: string additionalProperties: {} steps: type: integer exclusiveMinimum: 0 maximum: 9007199254740991 required: - name - mode - permission - options MCPStatusConnected: type: object properties: status: type: string const: connected required: - status MCPStatusDisabled: type: object properties: status: type: string const: disabled required: - status MCPStatusFailed: type: object properties: status: type: string const: failed error: type: string required: - status - error MCPStatusNeedsAuth: type: object properties: status: type: string const: needs_auth required: - status MCPStatusNeedsClientRegistration: type: object properties: status: type: string const: needs_client_registration error: type: string required: - status - error MCPStatus: anyOf: - $ref: '#/components/schemas/MCPStatusConnected' - $ref: '#/components/schemas/MCPStatusDisabled' - $ref: '#/components/schemas/MCPStatusFailed' - $ref: '#/components/schemas/MCPStatusNeedsAuth' - $ref: '#/components/schemas/MCPStatusNeedsClientRegistration' LSPStatus: type: object properties: id: type: string name: type: string root: type: string status: anyOf: - type: string const: connected - type: string const: error required: - id - name - root - status FormatterStatus: type: object properties: name: type: string extensions: type: array items: type: string enabled: type: boolean required: - name - extensions - enabled OAuth: type: object properties: type: type: string const: oauth refresh: type: string access: type: string expires: type: number enterpriseUrl: type: string required: - type - refresh - access - expires ApiAuth: type: object properties: type: type: string const: api key: type: string required: - type - key WellKnownAuth: type: object properties: type: type: string const: wellknown key: type: string token: type: string required: - type - key - token Auth: anyOf: - $ref: '#/components/schemas/OAuth' - $ref: '#/components/schemas/ApiAuth' - $ref: '#/components/schemas/WellKnownAuth'