# Get Shared Thread Turns

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](/api-reference/threads/list-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](/api-reference/shared-threads/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.

## Authentication

Requires **user** authentication (Bearer token). An API key has no recipient identity and is rejected with `403`.

## Path Parameters

**`slug`** string required

The share-link slug, taken from the share URL.

## Returns

- **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 the `id` from [Get Shared Thread Messages](/api-reference/shared-threads/get-shared-thread-messages).
  - **preview** `string` — short (~80-character) excerpt of the prompt text.
  - **created_at** `string` — ISO-8601 UTC timestamp of the prompt.
- **truncated** `boolean` — `true` only 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 always `false` for real threads — a payload guard, not pagination.


Not paginated: there is no `limit`, cursor, or window. One call covers the whole thread.

## Code Examples

### cURL


```bash
curl -X GET "https://api.aitronos.com/v1/shared-threads/abc123slug/turns" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

### Python SDK


```python
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)
```

### Python (requests)


```python
import requests

response = requests.get(
    "https://api.aitronos.com/v1/shared-threads/abc123slug/turns",
    headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(response.json()["turns"])
```

### JavaScript


```javascript
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);
```

## Response Examples

### Success (200)


```json
{
  "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
}
```

### Error — unknown / unauthorized link (404)

The same uniform deny as opening the link — it never reveals whether the link or thread exists.


```json
{
  "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": "..."
  }
}
```

## Related Resources

- [Get Shared Thread Messages](/api-reference/shared-threads/get-shared-thread-messages) — Jump to a turn with `around={message_id}`
- [Search Shared Thread Messages](/api-reference/shared-threads/search-shared-thread-messages) — Find a turn anywhere in the thread
- [Shared Thread Read State](/api-reference/shared-threads/shared-thread-read-state) — Restore where you stopped reading
- [Get Shared Thread](/api-reference/shared-threads/get-shared-thread) — Open the share link