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

# phone_task_status

> Get an immediate, non-blocking snapshot of a task.

Returns the task's current state right away: `status`, `terminal`, `step_count`, `result`, and `error`. Use it for a point-in-time check - for waiting, use [`phone_task_monitor`](/api-reference/tools/phone-task-monitor) instead of polling this in a loop.

Read-only: it never changes task state.

## Parameters

<ParamField body="task_id" type="string" required>
  The task to inspect.
</ParamField>

<ParamField body="include_steps" type="boolean">
  Include the task's recorded steps (screenshots, thinking) in the payload.
</ParamField>

<ParamField body="since_step" type="integer">
  Return only steps newer than this step number.
</ParamField>

## Response

<ResponseField name="status" type="string">
  One of four states:

  | Status      | Meaning                                                          |
  | ----------- | ---------------------------------------------------------------- |
  | `pending`   | Accepted by the server and waiting for the phone.                |
  | `running`   | The phone has started executing the task.                        |
  | `paused`    | Execution is suspended and can be resumed on the same `task_id`. |
  | `completed` | The task reached a terminal outcome.                             |
</ResponseField>

<ResponseField name="terminal" type="string">
  Set when `status` is `completed`. See the
  [terminal outcomes table](/guides/concepts/task-lifecycle#terminal-outcomes).
</ResponseField>

<ResponseField name="step_count" type="integer">
  Number of steps recorded so far.
</ResponseField>

<ResponseField name="result" type="string">
  The task's answer, when it completed with `terminal: "ok"`.
</ResponseField>

<ResponseField name="error" type="object">
  Present on tasks that ended in error or need input. On a
  `needs_user_control` task, `error.control_type` and `error.prompt` describe
  what the phone needs.

  <Note>
    This task-level `error` object is part of the status payload. It is
    distinct from the JSON-RPC `error` envelope, which appears only when a
    tool call itself fails.
  </Note>
</ResponseField>

## Related

* [`phone_task_monitor`](/api-reference/tools/phone-task-monitor) - the right tool for waiting
* [Task lifecycle](/guides/concepts/task-lifecycle) - states and outcomes in depth
