List thread messages
GET
bearerAuthheader
AuthorizationBearer <token>An API key created in Capy under Settings → API.
threadId*stringafter?stringExclusive forward event-ID cursor from cursor. Without either bound, returns the oldest page.
Length
26 <= length <= 26before?stringExclusive backward event-ID cursor from beforeCursor. Without after, returns the nearest older page.
Length
26 <= length <= 26limit?integerTranscriptPage
application/json- response
items*array<>cursor*|Opaque exclusive event-ID cursor for after. Stable across compaction. Null when no newer events remain. An unchanged cursor means unsettled messages still block forward paging. Retry after they settle.
beforeCursor*|Opaque exclusive event-ID cursor for before. Stable across compaction. Null when no older events remain.
curl -X GET 'https://api.capy.ai/api/v1/threads/string/messages'{ "items": [ { "id": "string", "source": "user", "tool": "string", "feedbackRequest": { "toolCallId": "string", "state": "proposed" }, "calls": [ { "tool": "string", "durationMs": 0 } ], "text": "string", "authorName": "string", "sender": { "id": "string", "relation": "parent" }, "clientKey": "string", "editOf": "string", "model": "string", "callId": "string", "attachments": [ { "file": { "fileId": "string", "name": "string", "mediaType": "string", "sizeBytes": 0, "preview": true, "previewBytes": 0, "width": 0, "height": 0, "pageCount": 1, "sourcePath": "string", "contentSha": "string", "transcript": "string" }, "title": "string" } ], "references": [ { "location": "string", "path": "string", "version": "string", "title": "string", "sizeBytes": 0, "fileId": "string" } ], "createdAt": "string" } ], "cursor": "string", "beforeCursor": "string"}