RecoupGet a free auditFree audit

API REFERENCE

Get Session Chat

On this page
GET/api/sessions/{sessionId}/chats/{chatId}

Returns the chat's persisted UI message stream plus its current streaming state so callers can hydrate or refresh a chat view. messages is an array of parts payloads — one per chat_messages row — ordered by created_at ascending (ties broken by id). isStreaming is derived from activeStreamId.

Authentication

x-api-key in header

BearerAuth bearer

Request

cURL
curl --request GET \
  --url 'https://api.recoupable.dev/api/sessions/YOUR_SESSION_ID/chats/YOUR_CHAT_ID' \
  --header 'x-api-key: YOUR_API_KEY'

Replace the YOUR_ placeholders with your values. Required query parameters are included; optional parameters are listed below.

Try it

Fill in the fields, send the request from your browser, and read the live response. The curl below updates as you type.

Kept in this browser tab only and cleared when it closes.

cURL for this request
curl --request GET \
  --url 'https://recoup-api.vercel.app/api/sessions/{sessionId}/chats/{chatId}'

Parameters

Path parameters

sessionIdstringrequired

The id of the parent session.

chatIdstringrequired

The id of the chat being fetched.

Responses

200Chat retrieved successfully.

application/json

chatobjectrequired
Properties for chat
idstringrequired

Chat id (nanoid).

sessionIdstringrequired

Owning session id.

titlestringrequired

Display title for the chat. The initial chat created with a session is titled New chat.

modelIdstringrequired

AI Gateway model identifier the chat is configured to use (e.g. openai/gpt-5.4).

activeStreamIdstringnullable

Id of an in-flight assistant stream, if one is active.

lastAssistantMessageAtstringnullable

Timestamp of the most recent assistant message in this chat.

format: date-time

createdAtstringrequired

format: date-time

updatedAtstringrequired

format: date-time

isStreamingbooleanrequired

True when chat.activeStreamId is non-null.

messagesarray<object>required

Persisted UI message stream — one serialized UIMessage per chat_messages row, ordered by created_at ascending (ties broken by id). Each item is the full message object, not a bare parts array.

Item properties for messages
idstringrequired

Message id.

rolestring · enumrequired

Values: "user", "assistant"

partsarray<object>required

Ordered message parts (text, tool calls, data parts, etc.).

Item properties for parts

object

Additional properties

Additional keys are allowed.

Additional properties

Additional keys are allowed.

401Unauthorized — invalid or missing API key / Bearer token.

application/json

statusstring · enumrequired

Always "error" for error responses.

Values: "error"

errorstringrequired

Human-readable error message.

403Forbidden — the authenticated account does not own this session.

application/json

statusstring · enumrequired

Always "error" for error responses.

Values: "error"

errorstringrequired

Human-readable error message.

404Not found — no session exists with the given id, the chat does not exist, or the chat belongs to a different session.

application/json

statusstring · enumrequired

Always "error" for error responses.

Values: "error"

errorstringrequired

Human-readable error message.

Full specification

Download the OpenAPI file for complete schemas, constraints, and examples.

Download sessions.json
View operation source
json
{
  "summary": "Get session chat",
  "description": "Returns the chat's persisted UI message stream plus its current streaming state so callers can hydrate or refresh a chat view. `messages` is an array of `parts` payloads — one per `chat_messages` row — ordered by `created_at` ascending (ties broken by id). `isStreaming` is derived from `activeStreamId`.",
  "parameters": [
    {
      "name": "sessionId",
      "in": "path",
      "required": true,
      "description": "The id of the parent session.",
      "schema": {
        "type": "string"
      }
    },
    {
      "name": "chatId",
      "in": "path",
      "required": true,
      "description": "The id of the chat being fetched.",
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "Chat retrieved successfully.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SessionChatResponse"
          }
        }
      }
    },
    "401": {
      "description": "Unauthorized — invalid or missing API key / Bearer token.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "403": {
      "description": "Forbidden — the authenticated account does not own this session.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    },
    "404": {
      "description": "Not found — no session exists with the given id, the chat does not exist, or the chat belongs to a different session.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/Error"
          }
        }
      }
    }
  }
}