Studies

Get a study

One study's full read: execution settings (model, system prompt, tool-approval policy, attached servers, share link), the environment it publishes, and the insights envelope over its latest analyzed window.

environmentId and insights depend on the CALLER, not on the study: both need workspace membership, so a share-link visitor receives the settings without them rather than an error. They are ABSENT in that case, never null — null would claim the study publishes no environment, which is never true.

A study that exists but belongs to a different project reads as 404 NOT_FOUND.

Replaces the deprecated getScenario (settings only) and getUserTestingScenario (envelope only).

get/projects/{projectId}/studies/{studyId}

Response

The study.

environmentIdstring nullable

The environment this study publishes. ABSENT — not null — when the caller may not see it, which is the case for a share-link visitor: null would claim the study publishes no environment, which is never true.

insightsobject

Findings aggregated over the latest analyzed window of real visitor sessions. Absent when the caller may not have it, and on a deployment that predates the envelope — the two degrade identically, and absence means not_available, never "no findings".

idstring required
projectIdstring nullable
namestring required
descriptionstring nullable
mode'project_members' | 'invited_only' | 'anyone_with_link' | 'null' nullable

Who can use the study.

hostStylestring nullable

Chat surface style the study renders (e.g. claude, chatgpt).

hostIdstring nullable

The named host the study publishes (hosts and studies are 1:1).

hostNamestring nullable
serverCountinteger required
serverNamesstring[] required
createdAtnumber nullable

Unix epoch milliseconds.

updatedAtnumber nullable

Unix epoch milliseconds.

modelIdstring nullable

Model the study chats with.

systemPromptstring nullable
temperaturenumber nullable
requireToolApprovalboolean required

Changes