---
title: "Retrieve a message"
method: GET
path: "/messages/{messageID}"
tags: ["Messages API"]
---

# Retrieve a message

`GET /messages/{messageID}`

## Request

- Base URL: `https://api.sailresearch.com/v1`
- URL: `https://api.sailresearch.com/v1/messages/{messageID}`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Returns the current status of a queued message. Completed responses include the Anthropic message fields. Use this operation with the X-Sail-Message-Id returned after a non-streaming timeout. Results can expire 10 minutes after [first successful delivery](/webhooks#delivery-behavior).

## Path parameters

- `messageID` string, required

## Response `200`

Current message status or completed message output.

- AnthropicMessageStatus
  - `id` string, required
  - `type` 'message', required
  - `status` 'queued' | 'in_progress' | 'completed' | 'failed' | 'cancelled', required
  - `role` 'assistant'
  - `content` union[]
    - union
      - AnthropicTextBlock
        - `type` 'text', required
        - `text` string, required
        - `cache_control` AnthropicCacheControl: Prompt-cache breakpoint (e.g. { "type": "ephemeral" }). Accepted for Anthropic SDK compatibility and has no effect: Sail caches repeated prompt prefixes automatically, without breakpoints. Cache reads are reported in usage.cache_read_input_tokens.
          - `type` 'ephemeral'
      - AnthropicToolUseBlock: Tool call emitted by the model. Return its outcome as a tool_result block in a follow-up user message.
        - `type` 'tool_use', required
        - `id` string, required
        - `name` string, required
        - `input` object, required
        - `cache_control` AnthropicCacheControl: Prompt-cache breakpoint (e.g. { "type": "ephemeral" }). Accepted for Anthropic SDK compatibility and has no effect: Sail caches repeated prompt prefixes automatically, without breakpoints. Cache reads are reported in usage.cache_read_input_tokens.
          - `type` 'ephemeral'
      - AnthropicThinkingBlock: Extended-thinking reasoning block. The reasoning text is forwarded; an opaque signature is accepted but is not verified or forwarded.
        - `type` 'thinking', required
        - `thinking` string, required
        - `signature` string: Opaque signature accepted for compatibility but not verified or forwarded.
        - `cache_control` AnthropicCacheControl: Prompt-cache breakpoint (e.g. { "type": "ephemeral" }). Accepted for Anthropic SDK compatibility and has no effect: Sail caches repeated prompt prefixes automatically, without breakpoints. Cache reads are reported in usage.cache_read_input_tokens.
          - `type` 'ephemeral'
  - `model` string
  - `stop_reason` 'end_turn' | 'max_tokens' | 'tool_use' | 'stop_sequence' | 'refusal' | 'model_context_window_exceeded'
  - `stop_sequence` string, nullable
  - `usage` AnthropicUsage
    - `input_tokens` integer, required: Prompt tokens not read from cache. The full prompt is input_tokens + cache_read_input_tokens + cache_creation_input_tokens.
    - `cache_creation_input_tokens` integer, required: Always 0. Sail has no separate cache-write charge: prompt tokens not read from cache are counted in input_tokens.
    - `cache_read_input_tokens` integer, required: Prompt tokens read from cache and billed at the cached input rate.
    - `output_tokens` integer, required
    - `service_tier` 'asap' | 'balanced' | 'flex': The completion window Sail selected for this request, including when no window was requested. The legacy request value standard is reported as balanced. Older stored responses may omit this field.
  - `error` MessageStatusError
    - `type` 'invalid_request_error' | 'server_error', required
    - `code` unknown, required
    - `message` string, required
  - `service_tier` 'asap' | 'balanced' | 'flex': The completion window Sail selected for this request, including when no window was requested. The legacy request value standard is reported as balanced. Older stored responses may omit this field.

## Other responses

- `400`: Invalid message ID.
- `401`: Authentication error.
- `404`: Message not found.
- `500`: Server error.

## Changes

- **2026-11-03** `d63ac1749ae7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sailresearch/apis/sail-api/changes/messages/:messageID/get.md)

---

[API](https://skmtc.dev/sailresearch/apis/sail-api.md) - [All operations](https://skmtc.dev/sailresearch/apis/sail-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sailresearch/apis/sail-api/revisions/d63ac1749ae7?raw)
