> ## Documentation Index
> Fetch the complete documentation index at: https://www.agentworldprotocol.com/llms.txt
> Use this file to discover all available pages before exploring further.

# session.open

> Bind an embodiment, choose a time model, request grants. Agent → World.

<ParamField body="embodiment" type="string">Embodiment id, or omit for an observer session.</ParamField>
<ParamField body="mode" type="string" required>`lockstep` or `streaming`.</ParamField>
<ParamField body="subscribe" type="object[]">Channel requests: `{ channel, rate_hz? }`.</ParamField>
<ParamField body="action_types" type="string[]">Requested grants. Default: all the embodiment offers.</ParamField>
<ParamField body="admin" type="string[]">Requested [administrative operations](/spec/safety/permissions#administrative-mutations): any of `snapshot`, `restore`, `reset`, `tick`. Default: none.</ParamField>
<ParamField body="seed" type="integer">Only if the world advertises `capabilities.seed`.</ParamField>
<ParamField body="takeover" type="boolean">Take over a bound embodiment; requires `transfer_token`.</ParamField>
<ParamField body="transfer_token" type="string">Minted by the current holder via [`session.transfer`](/api-reference/control/session-close) (AWP-EMB-003).</ParamField>
<ParamField body="task" type="object">The language instruction conditioning the agent: `{ content: [ …content blocks… ] }`. Only if the world advertises `capabilities.task` — see [Task](/spec/session/task). Change it mid-session with [task.update](/api-reference/control/task-update).</ParamField>

**Result — `session.ready`:**

```json awp:session-ready theme={null}
{ "session_id": "sess_01", "session_token": "st_9f2a7c1e4b8d6f03", "reconnect_window_ms": 30000, "heartbeat_interval_ms": 5000,
  "granted": { "channels": [ { "channel": "grid_view", "rate_hz": null, "channel_id": 1 } ],
               "action_types": ["move"], "admin": ["tick"], "envelopes": [] },
  "stream_endpoints": [ { "binding": "inline" } ],
  "frame_tree": { "frames": [ { "id": "world", "parent": null } ] },
  "clock_anchor": "2026-08-22T18:00:00Z",
  "tick": 0 }
```

`session_id` names the session everywhere it is referred to and is not a credential (AWP-SES-009); `granted` enumerates exactly what was granted (AWP-NEG-001); `heartbeat_interval_ms` sets the liveness clock (AWP-SAF-001); `tick` is present in lockstep sessions and is followed immediately by one frame per subscribed per-tick channel (AWP-TIM-009). The `session_token` is a credential: never log it unredacted (AWP-AUD-006).

**Errors:** 2001, 2002, 2004 (`AWP_SESSION_EXISTS`: this connection already carries a session), 4001.
