---
title: "Subscribe to events"
method: GET
path: "/api/event"
tags: ["event"]
---

# Subscribe to events

`GET /api/event`

## Request

- Base URL: `https://opencode.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://opencode.ai/api/event`
- Auth: none required

Subscribe to native events and plugin RPC events across all server locations. Volatile by contract: a slow consumer overflows and fails the stream, and events during disconnection are missed.

## Query parameters

- `types` union: Only send events of these types, plus the initial server.connected event. When omitted, all events are sent.
  - 'location.shutdown' | 'models-dev.refreshed' | 'credential.updated' | 'credential.switched' | 'integration.updated' | 'provider.updated' | 'model.updated' | 'agent.updated' | 'session.created' | 'session.agent.selected' | 'session.model.selected' | 'session.moved' | 'session.renamed' | 'session.metadata.updated' | 'session.permissions' | 'session.viewed' | 'session.archived' | 'session.unarchived' | 'session.usage.updated' | 'session.deleted' | 'session.forked' | 'session.inbox.delivered' | 'session.inbox.enqueued' | 'session.inbox.cancelled' | 'session.inbox.delivery.changed' | 'session.execution.started' | 'session.execution.succeeded' | 'session.execution.failed' | 'session.execution.interrupted' | 'session.instructions.updated' | 'session.synthetic' | 'session.skill.activated' | 'session.shell.started' | 'session.shell.ended' | 'session.step.started' | 'session.step.streamed' | 'session.step.ended' | 'session.step.failed' | 'session.text.started' | 'session.text.delta' | 'session.text.ended' | 'session.reasoning.started' | 'session.reasoning.delta' | 'session.reasoning.ended' | 'session.tool.input.started' | 'session.tool.input.delta' | 'session.tool.input.ended' | 'session.tool.called' | 'session.tool.progress' | 'session.tool.success' | 'session.tool.failed' | 'session.retry.scheduled' | 'session.compaction.started' | 'session.compaction.delta' | 'session.compaction.ended' | 'session.compaction.failed' | 'session.revert.staged' | 'session.revert.cleared' | 'session.revert.committed' | 'filesystem.changed' | 'reference.updated' | 'permission.asked' | 'permission.replied' | 'plugin.updated' | 'project.updated' | 'worktree.updated' | 'worktree.resolved' | 'command.updated' | 'config.updated' | 'skill.updated' | 'pty.created' | 'pty.updated' | 'pty.exited' | 'pty.deleted' | 'persistent-pty.added' | 'persistent-pty.removed' | 'shell.created' | 'shell.exited' | 'shell.deleted' | 'form.created' | 'form.replied' | 'form.cancelled' | 'websearch.updated' | 'session.status' | 'session.idle' | 'tui.prompt.append' | 'tui.command.execute' | 'tui.toast.show' | 'tui.session.select' | 'installation.updated' | 'installation.update-available' | 'vcs.branch.updated' | 'mcp.status.changed' | 'mcp.resources.changed'
  - string
  - union[]
    - union
      - 'location.shutdown' | 'models-dev.refreshed' | 'credential.updated' | 'credential.switched' | 'integration.updated' | 'provider.updated' | 'model.updated' | 'agent.updated' | 'session.created' | 'session.agent.selected' | 'session.model.selected' | 'session.moved' | 'session.renamed' | 'session.metadata.updated' | 'session.permissions' | 'session.viewed' | 'session.archived' | 'session.unarchived' | 'session.usage.updated' | 'session.deleted' | 'session.forked' | 'session.inbox.delivered' | 'session.inbox.enqueued' | 'session.inbox.cancelled' | 'session.inbox.delivery.changed' | 'session.execution.started' | 'session.execution.succeeded' | 'session.execution.failed' | 'session.execution.interrupted' | 'session.instructions.updated' | 'session.synthetic' | 'session.skill.activated' | 'session.shell.started' | 'session.shell.ended' | 'session.step.started' | 'session.step.streamed' | 'session.step.ended' | 'session.step.failed' | 'session.text.started' | 'session.text.delta' | 'session.text.ended' | 'session.reasoning.started' | 'session.reasoning.delta' | 'session.reasoning.ended' | 'session.tool.input.started' | 'session.tool.input.delta' | 'session.tool.input.ended' | 'session.tool.called' | 'session.tool.progress' | 'session.tool.success' | 'session.tool.failed' | 'session.retry.scheduled' | 'session.compaction.started' | 'session.compaction.delta' | 'session.compaction.ended' | 'session.compaction.failed' | 'session.revert.staged' | 'session.revert.cleared' | 'session.revert.committed' | 'filesystem.changed' | 'reference.updated' | 'permission.asked' | 'permission.replied' | 'plugin.updated' | 'project.updated' | 'worktree.updated' | 'worktree.resolved' | 'command.updated' | 'config.updated' | 'skill.updated' | 'pty.created' | 'pty.updated' | 'pty.exited' | 'pty.deleted' | 'persistent-pty.added' | 'persistent-pty.removed' | 'shell.created' | 'shell.exited' | 'shell.deleted' | 'form.created' | 'form.replied' | 'form.cancelled' | 'websearch.updated' | 'session.status' | 'session.idle' | 'tui.prompt.append' | 'tui.command.execute' | 'tui.toast.show' | 'tui.session.select' | 'installation.updated' | 'installation.update-available' | 'vcs.branch.updated' | 'mcp.status.changed' | 'mcp.resources.changed'
      - string

## Response `200`

Success

## Other responses

- `400`: InvalidRequestError
- `401`: UnauthorizedError

## Changes

> 50 revisions in range; 1 not diffed.

- **2026-10-26** `0d6f02c9b1ff`: 1 info
  - added the new optional `query` request parameter `types`

[Operation history](https://skmtc.dev/kaaass/apis/opencode/changes/api/event/get.md)

---

[API](https://skmtc.dev/kaaass/apis/opencode.md) - [All operations](https://skmtc.dev/kaaass/apis/opencode/llms.txt) - [OpenAPI document](https://skmtc.dev/kaaass/apis/opencode/revisions/4e083d954707?raw)
