Skip to content

Whether the client's side can see this session

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

releasable: false carries not_releasable_reason — the code a POST would refuse with — so the app can say why before the coach tries. A coach of the team. Every method answers 404 while client access is switched off on the environment; a partner API key and a client’s own account get 403. Releasing (POST) is 402 trial_expired / access_ended on a read-only team, else feature_not_in_plan on a plan without client access; reading the state and withdrawing stay open on every plan.

id
required
string format: uuid
Media typeapplication/json

Whether the client’s side can see a result (ClientRelease).

object
released_at
required

When the result opened to the client’s side; null while it has not, or after a withdrawal.

string format: date-time
nullable
readers
required

The people who read the card now — an accepted grant, consented to the current texts, that the plan and the minors rule leave open: who sees it once released.

Array<string>
releasable
required

False while a session is not completed or has no client, or a report is not ready, has no client or covers other athletes.

boolean
side_unconfirmed
required

A session whose tested side is unconfirmed: never released on its own; its side’s metrics stay withheld.

boolean
not_releasable_reason
required
One of:
  • no_client - no_client
  • not_releasable - not_releasable
  • report_covers_other_athletes - report_covers_other_athletes
  • unassigned_session - unassigned_session
string
Allowed values: no_client not_releasable report_covers_other_athletes unassigned_session

Examples

{
"released_at": "2026-11-02T10:15:00Z",
"readers": [
"Olga Lebedeva"
],
"releasable": true,
"side_unconfirmed": false,
"not_releasable_reason": null
}
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—NotInTheTeam

404 — not in the team

{
"detail": "session_not_found"
}