Returns a lightweight manifest of every user prompt in the thread behind a share link — id, a short preview, and a timestamp — for the whole thread, oldest to newest, independent of message-body pagination.
This is the slug-scoped equivalent of List thread turns, which is ownership-scoped and returns 404 for a share-link recipient. Each message_id matches the id returned by Get Shared Thread Messages, so a client can jump to any turn with that endpoint's around= window fetch — including turns it has not paged in yet. Bodies are never included, so the response stays cheap on a long thread.
Authorization is the same as reading the thread's messages: the slug must resolve for you. Every access level (view, fork, live) may read it — a view-only visitor needs the turn rail as much as a joined participant.
Requires user authentication (Bearer token). An API key has no recipient identity and is rejected with 403.
slug string required
The share-link slug, taken from the share URL.
- turns
array— every user-role prompt in the thread, oldest to newest. Each entry has:- message_id
string— stable message id (msg_…) of the prompt. Matches theidfrom Get Shared Thread Messages. - preview
string— short (~80-character) excerpt of the prompt text. - created_at
string— ISO-8601 UTC timestamp of the prompt.
- message_id
- truncated
boolean—trueonly if the thread has more user turns than the server cap (2000). In that case the newest 2000 are returned (the recent end of the thread, where you navigate) and the oldest are dropped. Effectively alwaysfalsefor real threads — a payload guard, not pagination.
Not paginated: there is no limit, cursor, or window. One call covers the whole thread.
curl -X GET "https://api.aitronos.com/v1/shared-threads/abc123slug/turns" \
-H "Authorization: Bearer YOUR_TOKEN"from aitronos import Aitronos # pip install aitronos-sdk
client = Aitronos(api_key="", token="YOUR_TOKEN")
manifest = client.threads.shared.list_turns(slug="abc123slug")
for turn in manifest.turns:
print(turn.message_id, turn.preview)import requests
response = requests.get(
"https://api.aitronos.com/v1/shared-threads/abc123slug/turns",
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(response.json()["turns"])const response = await fetch(
"https://api.aitronos.com/v1/shared-threads/abc123slug/turns",
{ headers: { Authorization: "Bearer YOUR_TOKEN" } },
);
const manifest = await response.json();
console.log(manifest.turns.length);{
"turns": [
{
"message_id": "msg_bcb0ef5c53d04a70bf49203f0b43ac5c",
"preview": "First question I asked…",
"created_at": "2026-07-16T10:30:54.902122Z"
},
{
"message_id": "msg_638dee6512f14bafa75c6bc1fe10bd59",
"preview": "Follow-up about pricing",
"created_at": "2026-07-16T10:32:42.968571Z"
}
],
"truncated": false
}The same uniform deny as opening the link — it never reveals whether the link or thread exists.
{
"success": false,
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "That share link could not be found.",
"system_message": "Share link unresolved for user",
"type": "client_error",
"status": 404,
"details": {},
"trace_id": "...",
"timestamp": "..."
}
}- Get Shared Thread Messages — Jump to a turn with
around={message_id} - Search Shared Thread Messages — Find a turn anywhere in the thread
- Shared Thread Read State — Restore where you stopped reading
- Get Shared Thread — Open the share link