Advance your read cursor to now for a live-shared thread you joined — the slug-scoped twin of the owner mark-read endpoint, for a participant who joined the thread but does not own it.
The owner mark-read route (POST /v1/threads/{id}/read) is ownership-scoped and returns 404 for a joiner. Use this endpoint instead: it advances the joiner's read cursor server-side so the shared-chat unread count clears durably — it stays reset across devices and reloads, rather than clearing only in the local UI. The read cursor is keyed on (user, thread) and is shared with owner reads, so this and the owner endpoint remain consistent.
Authorized by the joiner's live-share grant on the slug. A view or fork slug returns 403; an unknown, unauthorized, or expired link returns 404. The call is idempotent.
Requires user authentication (Bearer token).
slug string required
The share-link slug, from the share URL. The link must be a live link.
- success
boolean— alwaystruewhen the read cursor was advanced.
curl -X POST "https://api.aitronos.com/v1/shared-threads/abc123slug/read" \
-H "Authorization: Bearer YOUR_TOKEN"from aitronos import Aitronos
client = Aitronos(api_key="", token="YOUR_TOKEN")
result = client.threads.shared.mark_read(slug="abc123slug")
print(result.success)import requests
response = requests.post(
"https://api.aitronos.com/v1/shared-threads/abc123slug/read",
headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(response.json()["success"])const response = await fetch(
"https://api.aitronos.com/v1/shared-threads/abc123slug/read",
{
method: "POST",
headers: { Authorization: "Bearer YOUR_TOKEN" },
},
);
const result = await response.json();
console.log(result.success);{
"success": true
}{
"success": false,
"error": {
"code": "INSUFFICIENT_PERMISSIONS",
"message": "You do not have permission to perform this action.",
"system_message": "This share link does not grant live co-working access",
"type": "authorization_error",
"status": 403,
"details": { "link_id": "tslnk_...", "access_level": "view" },
"trace_id": "...",
"timestamp": "..."
}
}{
"success": false,
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "The requested resource could not be found.",
"system_message": "Share link not found",
"type": "client_error",
"status": 404,
"details": {},
"trace_id": "...",
"timestamp": "..."
}
}- Shared Thread Read State — Mark read up to a specific message, and get the unread count + divider anchor
- Join Shared Thread — Join the live-shared thread first
- Shared Thread Reactions — React to messages as a joiner
- Shared Thread Presence — Heartbeat your presence on the thread
- Live Shared Thread — The real-time stream for the shared thread