Skip to content

What the conversation shared

GET
/api/clients/{id}/thread/shared/
curl --request GET \
--url http://localhost:8000/api/clients/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/thread/shared/ \
--header 'Authorization: Bearer <token>'

The cards messages carried and the links in their words, newest first, for the conversation’s details. Deleted messages drop out.

A coach of the card’s team. Every route answers 404 while client access is switched off on the environment, and 404 client_not_found for a card of another team; a partner API key and a client’s own account get 403. Reading stays open on every plan; posting and editing are 402 on a read-only team or a plan without client access; deleting one’s own message is not. 429 past the account’s rate (chat_read 240/min for reads, chat_post 30/min for writes).

id
required
string format: uuid
lang
string

The cards’ language: en · ru · es.

units
string

metric (default) · imperial.

Media typeapplication/json

GET …/thread/shared/ (ThreadShared), newest first.

object
references
required
Array<object>
object
message_id
required
string format: uuid
created_at
required
string format: date-time
reference
required
One of: discriminator: kind

kind: session — a whole session.

object
placeholder
required

True: kind alone — the card cannot be shown to this reader (or its subject is gone).

boolean
kind
required

The discriminator.

  • session - session
string
Allowed values: session
session_id
string format: uuid
activity
string
title
string
recorded_at
string format: date-time
thumbnail_url
string
nullable
links
required
Array<object>
object
message_id
required
string format: uuid
created_at
required
string format: date-time
url
required
string
author_name
required
string

Examples

ExampleShared
{
"references": [
{
"message_id": "3f2a1b0c-0000-4000-8000-0000000000d3",
"created_at": "2026-11-02T10:16:00Z",
"reference": {
"kind": "session",
"placeholder": false,
"session_id": "5e2b9c41-7d3a-4f80-9b6e-1c0d2e3f4a51",
"activity": "running",
"title": "Treadmill check",
"recorded_at": "2026-11-02T09:40:00Z",
"thumbnail_url": null
}
}
],
"links": [
{
"message_id": "3f2a1b0c-0000-4000-8000-0000000000d3",
"created_at": "2026-11-02T10:16:00Z",
"url": "https://example.com/drill",
"author_name": "Kim Larsen"
}
]
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Example generated

{
"detail": "example"
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Examples

Example403—AClient'sOwnAccount

403 — a client's own account

{
"detail": "client_account"
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Examples

Example404—NotACardOfTheTeam

404 — not a card of the team

{
"detail": "client_not_found"
}
Media typeapplication/json
object
detail
required

429 — throttled: this account’s (or address’s) rate for the route is used up; try again after wait seconds, which Retry-After repeats. A route with a limit of its own answers its own code instead, documented there.

string
wait

With throttled: whole seconds until the next request can pass.

integer
nullable

Example generated

{
"detail": "example",
"wait": 1
}