API REFERENCE
Get Session Chat
On this page
/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 --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 --request GET \
--url 'https://recoup-api.vercel.app/api/sessions/{sessionId}/chats/{chatId}'Parameters
Path parameters
sessionIdstringrequiredThe id of the parent session.
chatIdstringrequiredThe id of the chat being fetched.
Responses
200Chat retrieved successfully.+
application/json
chatobjectrequiredProperties for chat
idstringrequiredChat id (nanoid).
sessionIdstringrequiredOwning session id.
titlestringrequiredDisplay title for the chat. The initial chat created with a session is titled New chat.
modelIdstringrequiredAI Gateway model identifier the chat is configured to use (e.g. openai/gpt-5.4).
activeStreamIdstringnullableId of an in-flight assistant stream, if one is active.
lastAssistantMessageAtstringnullableTimestamp of the most recent assistant message in this chat.
format: date-time
createdAtstringrequiredformat: date-time
updatedAtstringrequiredformat: date-time
isStreamingbooleanrequiredTrue when chat.activeStreamId is non-null.
messagesarray<object>requiredPersisted 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
idstringrequiredMessage id.
rolestring · enumrequiredValues: "user", "assistant"
partsarray<object>requiredOrdered 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 · enumrequiredAlways "error" for error responses.
Values: "error"
errorstringrequiredHuman-readable error message.
403Forbidden — the authenticated account does not own this session.+
application/json
statusstring · enumrequiredAlways "error" for error responses.
Values: "error"
errorstringrequiredHuman-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 · enumrequiredAlways "error" for error responses.
Values: "error"
errorstringrequiredHuman-readable error message.
Full specification
Download the OpenAPI file for complete schemas, constraints, and examples.
Download sessions.jsonView operation source
{
"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"
}
}
}
}
}
}