---
title: "Get session message"
method: GET
path: "/api/session/{sessionID}/message/{messageID}"
tags: ["session"]
---

# Get session message

`GET /api/session/{sessionID}/message/{messageID}`

## Request

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

Retrieve one projected message owned by the Session.

## Path parameters

- `sessionID` string, required
- `messageID` string, required

## Response `200`

Success

- object
  - `data` union, required
    - SessionMessageAgentSelected
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `type` 'agent-switched', required
      - `agent` string, required
      - `previous` string
    - SessionMessageModelSelected
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `type` 'model-switched', required
      - `model` ModelRef, required
        - `id` string, required
        - `providerID` string, required
        - `variant` string
      - `previous` ModelRef
        - `id` string, required
        - `providerID` string, required
        - `variant` string
    - SessionMessageLocationSwitched
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `type` 'location-switched', required
      - `projectID` string
      - `subpath` string
      - `location` LocationPublicRef, required
        - `directory` string, required
      - `previous` object, nullable
        - `location` LocationPublicRef, required
          - `directory` string, required
        - `projectID` string
        - `subpath` string
    - SessionMessageUser
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `text` string, required
      - `files` PromptFileAttachment[]
        - `data` string, required
        - `mime` string, required
        - `source` union, required
          - object
            - `type` 'inline', required
          - object
            - `type` 'uri', required
            - `uri` string, required
        - `name` string
        - `description` string
        - `mention` PromptMention
          - `start` number, required
          - `end` number, required
          - `text` string, required
      - `agents` PromptAgentAttachment[]
        - `name` string, required
        - `mention` PromptMention
          - `start` number, required
          - `end` number, required
          - `text` string, required
      - `skills` PromptSkillAttachment[]
        - `id` string, required
        - `name` string, required
        - `text` string
        - `mention` PromptMention
          - `start` number, required
          - `end` number, required
          - `text` string, required
      - `type` 'user', required
    - SessionMessageSynthetic
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `text` string, required
      - `description` string
      - `type` 'synthetic', required
    - SessionMessageSystem
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `type` 'system', required
      - `text` string, required
      - `description` string
    - SessionMessageSkill
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `type` 'skill', required
      - `skill` string, required
      - `name` string, required
      - `text` string, required
    - SessionMessageShell
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
        - `completed` number
      - `type` 'shell', required
      - `shellID` string, required
      - `command` string, required
      - `status` 'running' | 'exited' | 'timeout' | 'killed', required
      - `exit` union
        - number
        - 'Infinity' | '-Infinity' | 'NaN'
      - `output` object
        - `output` string, required
        - `cursor` integer, required
        - `size` integer, required
        - `truncated` boolean, required
    - SessionMessageAssistant
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
        - `streamed` number
        - `completed` number
      - `type` 'assistant', required
      - `agent` string, required
      - `model` ModelRef, required
        - `id` string, required
        - `providerID` string, required
        - `variant` string
      - `content` union[], required
        - union
          - SessionMessageAssistantText
            - `type` 'text', required
            - `text` string, required
            - `native` SessionMessageNative
          - SessionMessageAssistantReasoning
            - `type` 'reasoning', required
            - `text` string, required
            - `native` SessionMessageNative1
            - `time` object
              - …
          - SessionMessageAssistantTool
            - `type` 'tool', required
            - `id` string, required
            - `name` string, required
            - `executed` boolean
            - `native` SessionMessageNative2
            - `state` union, required
              - …
            - `time` object, required
              - …
      - `snapshot` object
        - `start` string
        - `end` string
        - `files` RelativePath[]
      - `finish` 'stop' | 'length' | 'tool-calls' | 'content-filter' | 'error' | 'unknown'
      - `rawFinish` string
      - `native` SessionMessageNative3
      - `cost` number
      - `tokens` TokenUsageInfo
        - `input` number, required
        - `output` number, required
        - `reasoning` number, required
        - `cache` object, required
          - `read` number, required
          - `write` number, required
      - `error` SessionStructuredError
        - `type` string, required
        - `message` string, required
        - `status` integer
        - `response` object
          - `body` string, required
        - `retryAfterMs` integer
      - `retry` SessionMessageAssistantRetry
        - `attempt` integer, required
        - `at` number, required
        - `error` SessionStructuredError, required
          - `type` string, required
          - `message` string, required
          - `status` integer
          - `response` object
            - `body` string, required
          - `retryAfterMs` integer
    - union
      - SessionMessageCompactionRunning
        - `type` 'compaction', required
        - `id` string, required
        - `metadata` object
        - `time` object, required
          - `created` number, required
        - `status` 'running', required
        - `reason` 'auto' | 'manual', required
        - `summary` string, required
      - SessionMessageCompactionCompleted
        - `type` 'compaction', required
        - `id` string, required
        - `metadata` object
        - `time` object, required
          - `created` number, required
        - `status` 'completed', required
        - `reason` 'auto' | 'manual', required
        - `model` ModelRef
          - `id` string, required
          - `providerID` string, required
          - `variant` string
        - `native` SessionMessageNative4
        - `summary` string, required
        - `cost` number
        - `tokens` TokenUsageInfo
          - `input` number, required
          - `output` number, required
          - `reasoning` number, required
          - `cache` object, required
            - `read` number, required
            - `write` number, required
      - SessionMessageCompactionFailed
        - `type` 'compaction', required
        - `id` string, required
        - `metadata` object
        - `time` object, required
          - `created` number, required
        - `status` 'failed', required
        - `reason` 'auto' | 'manual', required
        - `error` SessionStructuredError, required
          - `type` string, required
          - `message` string, required
          - `status` integer
          - `response` object
            - `body` string, required
          - `retryAfterMs` integer
        - `cost` number
        - `tokens` TokenUsageInfo
          - `input` number, required
          - `output` number, required
          - `reasoning` number, required
          - `cache` object, required
            - `read` number, required
            - `write` number, required
    - SessionMessageIdle
      - `id` string, required
      - `metadata` object
      - `time` object, required
        - `created` number, required
      - `type` 'idle', required
      - `outcome` 'succeeded' | 'failed' | 'interrupted', required
      - `error` SessionStructuredError
        - `type` string, required
        - `message` string, required
        - `status` integer
        - `response` object
          - `body` string, required
        - `retryAfterMs` integer

## Other responses

- `400`: InvalidRequestError
- `401`: UnauthorizedError
- `404`: SessionNotFoundError | MessageNotFoundError

## Changes

> 50 revisions in range; 1 not diffed.

- **2026-10-24** `1c30ec162e7f`: 1 warning
  - removed the optional property `data/anyOf[#/components/schemas/Session.Message.Assistant]/allowance` from the response with the `200` status
- **2026-10-24** `231ec98d2d97`: 1 info
  - added the optional property `data/anyOf[#/components/schemas/Session.Message.Assistant]/allowance` to the response with the `200` status
- **2026-10-21** `7709eeb4cfb8`: 5 info
  - added the optional property `data/anyOf[#/components/schemas/Session.Message.Assistant]/content/items/anyOf[#/components/schemas/Session.Message.Assistant.Tool]/state/anyOf[#/components/schemas/Session.Message.ToolState.Error]/error/retryAfterMs` to the response with the `200` status
  - added the optional property `data/anyOf[#/components/schemas/Session.Message.Assistant]/error/retryAfterMs` to the response with the `200` status
  - added the optional property `data/anyOf[#/components/schemas/Session.Message.Assistant]/retry/error/retryAfterMs` to the response with the `200` status
  - added the optional property `data/anyOf[#/components/schemas/Session.Message.Compaction]/anyOf[#/components/schemas/Session.Message.Compaction.Failed]/error/retryAfterMs` to the response with the `200` status
  - …1 more
- …earlier changes not shown

[Operation history](https://skmtc.dev/kaaass/apis/opencode/changes/api/session/:sessionID/message/:messageID/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)
