Provides API endpoints related to session
Summary
Functions
delete /session/{sessionID}/message/{messageID}/part/{partID}
patch /session/{sessionID}/message/{messageID}/part/{partID}
Respond to permission
Abort session
Get session children
Send command
Create session
Delete session
Delete message
Get message diff
Fork session
Get session
Initialize session
List sessions
Get session messages
Send message
Send async message
Revert message
Share session
Run shell command
Get session status
Summarize session
Get session todos
Restore reverted messages
Unshare session
Update session
Types
@type session_command_200_json_resp() :: %{ info: OpenCode.Generated.AssistantMessage.t(), parts: [ OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t() ] }
@type session_message_200_json_resp() :: %{ info: OpenCode.Generated.AssistantMessage.t() | OpenCode.Generated.UserMessage.t(), parts: [ OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t() ] }
@type session_messages_200_json_resp() :: %{ info: OpenCode.Generated.AssistantMessage.t() | OpenCode.Generated.UserMessage.t(), parts: [ OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t() ] }
@type session_prompt_200_json_resp() :: %{ info: OpenCode.Generated.AssistantMessage.t(), parts: [ OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t() ] }
@type session_shell_200_json_resp() :: %{ info: OpenCode.Generated.AssistantMessage.t() | OpenCode.Generated.UserMessage.t(), parts: [ OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t() ] }
@type t() :: %OpenCode.Generated.Session{ agent: String.t() | nil, directory: String.t(), id: String.t(), model: OpenCode.Generated.SessionModel.t() | nil, parent_id: String.t() | nil, path: String.t() | nil, permission: [OpenCode.Generated.PermissionRule.t()] | nil, project_id: String.t(), revert: OpenCode.Generated.SessionRevert.t() | nil, share: OpenCode.Generated.SessionShare.t() | nil, slug: String.t(), summary: OpenCode.Generated.SessionSummary.t() | nil, time: OpenCode.Generated.SessionTime.t(), title: String.t(), version: String.t(), workspace_id: String.t() | nil }
Functions
@spec part_delete( sessionID :: String.t(), messageID :: String.t(), partID :: String.t(), opts :: keyword() ) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
delete /session/{sessionID}/message/{messageID}/part/{partID}
Delete a part from a message.
Options
directoryworkspace
@spec part_update( sessionID :: String.t(), messageID :: String.t(), partID :: String.t(), body :: OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t(), opts :: keyword() ) :: {:ok, OpenCode.Generated.AgentPart.t() | OpenCode.Generated.CompactionPart.t() | OpenCode.Generated.FilePart.t() | OpenCode.Generated.PatchPart.t() | OpenCode.Generated.ReasoningPart.t() | OpenCode.Generated.RetryPart.t() | OpenCode.Generated.SnapshotPart.t() | OpenCode.Generated.StepFinishPart.t() | OpenCode.Generated.StepStartPart.t() | OpenCode.Generated.SubtaskPart.t() | OpenCode.Generated.TextPart.t() | OpenCode.Generated.ToolPart.t()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
patch /session/{sessionID}/message/{messageID}/part/{partID}
Update a part in a message.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec permission_respond( sessionID :: String.t(), permissionID :: String.t(), body :: map(), opts :: keyword() ) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Respond to permission
Approve or deny a permission request from the AI assistant.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_abort(sessionID :: String.t(), opts :: keyword()) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Abort session
Abort an active session and stop any ongoing AI processing or command execution.
Options
directoryworkspace
@spec session_children(sessionID :: String.t(), opts :: keyword()) :: {:ok, [t()]} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Get session children
Retrieve all child sessions that were forked from the specified parent session.
Options
directoryworkspace
@spec session_command(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, session_command_200_json_resp()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Send command
Send a new command to a session for execution by the AI assistant.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_create(body :: map(), opts :: keyword()) :: {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t()}
Create session
Create a new OpenCode session for interacting with AI assistants and managing conversations.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_delete(sessionID :: String.t(), opts :: keyword()) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Delete session
Delete a session and permanently remove all associated data, including messages and history.
Options
directoryworkspace
@spec session_delete_message( sessionID :: String.t(), messageID :: String.t(), opts :: keyword() ) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Delete message
Permanently delete a specific message and all of its parts from a session without reverting file changes.
Options
directoryworkspace
@spec session_diff(sessionID :: String.t(), opts :: keyword()) :: {:ok, [OpenCode.Generated.SnapshotFileDiff.t()]} | :error
Get message diff
Get the file changes (diff) that resulted from a specific user message in the session.
Options
directoryworkspacemessageID
@spec session_fork(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Fork session
Create a new session by forking an existing session at a specific message point.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_get(sessionID :: String.t(), opts :: keyword()) :: {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Get session
Retrieve detailed information about a specific OpenCode session.
Options
directoryworkspace
@spec session_init(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Initialize session
Analyze the current application and create an AGENTS.md file with project-specific agent configurations.
Options
directoryworkspace
Request Body
Content Types: application/json
List sessions
Get a list of all OpenCode sessions, sorted by most recently updated.
Options
directoryworkspacescopepathrootsstartsearchlimit
@spec session_message( sessionID :: String.t(), messageID :: String.t(), opts :: keyword() ) :: {:ok, session_message_200_json_resp()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Get message
Retrieve a specific message from a session by its message ID.
Options
directoryworkspace
@spec session_messages(sessionID :: String.t(), opts :: keyword()) :: {:ok, [session_messages_200_json_resp()]} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Get session messages
Retrieve all messages in a session, including user prompts and AI responses.
Options
directoryworkspacelimitbefore
@spec session_prompt(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, session_prompt_200_json_resp()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Send message
Create and send a new message to a session, streaming the AI response.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_prompt_async(sessionID :: String.t(), body :: map(), opts :: keyword()) :: :ok | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Send async message
Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_revert(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Revert message
Revert a specific message in a session, undoing its effects and restoring the previous state.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_shell(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, session_shell_200_json_resp()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Run shell command
Execute a shell command within the session context and return the AI's response.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_status(opts :: keyword()) :: {:ok, map()} | {:error, OpenCode.Generated.BadRequestError.t()}
Get session status
Retrieve the current status of all sessions, including active, idle, and completed states.
Options
directoryworkspace
@spec session_summarize(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, boolean()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Summarize session
Generate a concise summary of the session using AI compaction to preserve key information.
Options
directoryworkspace
Request Body
Content Types: application/json
@spec session_todo(sessionID :: String.t(), opts :: keyword()) :: {:ok, [OpenCode.Generated.Todo.t()]} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Get session todos
Retrieve the todo list associated with a specific session, showing tasks and action items.
Options
directoryworkspace
@spec session_unrevert(sessionID :: String.t(), opts :: keyword()) :: {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Restore reverted messages
Restore all previously reverted messages in a session.
Options
directoryworkspace
@spec session_update(sessionID :: String.t(), body :: map(), opts :: keyword()) :: {:ok, t()} | {:error, OpenCode.Generated.BadRequestError.t() | OpenCode.Generated.NotFoundError.t()}
Update session
Update properties of an existing session, such as title or other metadata.
Options
directoryworkspace
Request Body
Content Types: application/json