Skip to main content
POST
Submit Turn

Authorizations

Authorization
string
header
required

Workspace API key as a bearer token: Authorization: Bearer ish_sk_live_.... Keys are workspace-scoped machine principals minted in Settings > Developers (shown once at mint). Scopes: sessions:run (create a session, submit turns, close), sessions:read (read the session and its decision trace), environments:read and environments:write (manage the workspace's registered environments), tasks:read and tasks:write (manage the workspace's registered tasks), people:read and people:write (the people the workspace can run a session for), and usage:read (the workspace's own consumption, spend limits and rate-limit budgets). A key is minted with sessions:run, sessions:read, and tasks:read by default; every other scope must be requested, people:read and usage:read included. An ish user access token also works on the same header for personal scripts.

Path Parameters

session_id
string<uuid>
required

Body

application/json
observation
ObservationBlock · object[]
required

Human-sensory observation blocks (image now; error carries execution feedback). New block type values may be added. Open union: new values may be added over time; clients must tolerate unknown values rather than failing on them.

Minimum array length: 1
turn_index
integer
required
Required range: x >= 0
valid_actions
DeclaredAction · object[]
required
frame_age_ms
integer | null
Required range: x >= 0

Response

Successful Response

decision
TurnDecisionView · object
required

What the person decided this turn, and how it felt.

action_name names the action to execute, and is null when there is nothing to run: the person found no action that fits, or judged that none was needed. comment, sentiment and felt_intensity are the experiential half and are always present, including on a turn with no action. status says whether they intend to keep going.

intent, resolution and unmet_expectation are populated only when the session runs in intent decision mode; they are null in direct mode.

session_status
enum<string>
required

Session status after this turn. Open union: new values may be added over time; clients must tolerate unknown values rather than failing on them.

Available options:
open,
completed,
gave_up,
closed,
max_turns,
spend_cap_reached,
balance_exhausted
turn_id
string<uuid>
required
turn_index
integer
required
usage
Usage · object
required