Create a session
Create & read
Create a session
Launch a new agent run.
POST
Create a session
Creates a new session that runs an agent against the given task. When a slot is available the session starts in
pending status and transitions to running once the agent launches. A create above your concurrency limit is accepted as queued and starts automatically when a slot frees up (set queue: false to get a 429 instead).
Returns the created Session object with status pending or queued.
Headers
Optional idempotency key (max 255 characters). Safe retry within 24 hours: reusing the same key with a different body returns
422.Request body
Either a catalog identifier (string, e.g. Inline agent, with environments nested under it:See Browser for its config and fields.
"h/web-surfer-flash") or an inline Agent object. An inline agent must include its own environments (at most one per kind), unless it is a pure manager that only delegates to subagents; the session resolves only agent and reads everything else (environments, skills, subagents) from there.Using a catalog id (environments come from the agent’s stored spec):Initial messages queued before the agent’s first step. Usually a single user message describing the task; a plain string is accepted as shorthand for one user message.Each message object has:
type(string, optional):"user_message", the default.message(string): The instruction or task description.images(array, optional): Base64 data URIs to attach (e.g.data:image/png;base64,...).caller_id(string, optional): Identifies the message sender. Defaults touser; leave it unset for normal user input.
Cap on the number of steps the agent may take, where each step is one decide-and-act cycle. On reaching the cap the agent is asked to produce a final answer from what it has so far (it is not hard-killed), so you still get a structured result. Omit it to run uncapped.
Cap on wall-clock seconds. On reaching the cap, like
max_steps, the agent is asked for a final answer rather than terminated abruptly. Omit it to run uncapped.Switches between one-shot and interactive. Leave it
null for a one-shot task: the session ends as soon as the agent answers. Set it (in seconds) to keep the session open for follow-up messages: after each answer the session enters the idle status and waits this long for your next message before terminating.Minutes after the session finishes before it is automatically deleted, along with its events and screenshots. Defaults to 30 days. Set
null to keep the session forever.Minutes after the session finishes before its screenshots are deleted, so you can expire visual data sooner than the session record. Defaults to 30 days. Set
null to keep screenshots for the session’s lifetime.When you are at your concurrency limit, accept this session into a queue (status
queued) instead of rejecting it with 429. Queued sessions don’t count against your quota and start automatically, oldest first, as running sessions finish. Ideal for batch workloads: fire N tasks, then collect results via webhooks. Set false to fail fast with 429 when at capacity.Tag for grouping related sessions. You can later query all sessions with
GET /sessions?group_id=....ID of a parent session, for multi-agent orchestration. The parent’s status endpoint will include this session in its
subagent_session_ids list. Child sessions never queue: at capacity the create fails with 429 even when queue is true, because queueing a child behind its own parent’s slot would deadlock the parent.Per-run tweaks applied after the agent (and its environments, skills, and subagents) are resolved, so you can adjust a catalog agent for a single run without editing its stored spec. Keys are dotted paths into the request; list members are addressed with an explicit
[field=value] selector. Each value is validated against the field its path targets, so an unknown path or a wrong type is rejected with 422 at creation.Common uses: point the browser at a different start URL, or ask a catalog agent for structured output by overriding its answer_format.Response
Unique session identifier.
The original session request body.
Session status object with
status: "pending" for a newly created session, or "queued" when the create was accepted above your concurrency limit.Link to the session’s Agent View page for live viewing and replay.
ISO 8601 timestamp.
Examples
Basic session
Reference a catalog agent; its stored spec supplies the environments:Response
With idempotency key
With an inline agent and explicit browser environment
Pass an inlineAgent instead of a catalog id when you want to override the environments (or any other field) on a per-session basis. Environments must be nested under agent.