# Perplexity Computer — Dashboard, Task Runs, Artifacts, Sharing "Perplexity Computer" is Perplexity's long-running agent product that lives under `https://www.perplexity.ai/computer/*`. It runs multi-step research/build tasks in a cloud sandbox and produces a plan (Todo), tool invocations, and file artifacts (charts, PDFs, code). Distinct from regular Perplexity Search/chat — don't confuse the URL paths. You must be signed in before the harness can drive it. Computer is a paid feature; tasks consume credits, and stalled tasks show an "Insufficient credits" banner until the user tops up. ## URL patterns - Dashboard / task list: `https://www.perplexity.ai/computer/tasks` - Task detail (run page): `https://www.perplexity.ai/computer/tasks/-` - `` is a kebab-case auto-summary of the prompt (typically 3–6 words from the title). - `` is a 22-char base62-ish opaque id (character set includes letters, digits, `-`, and `_`). - The full last segment is `-` joined with a `-`; there's no separator character beyond that. To recover the id, parse with `URL` and take the last 22 chars of the pathname's final segment — **never slice the raw href**, because query/hash (e.g. `?view=thread`) will corrupt the result: ```python # JS: new URL(href).pathname.split('/').filter(Boolean).pop().slice(-22) # Python: urlparse(href).path.rstrip('/').rsplit('/', 1)[-1][-22:] ``` - Connectors: `https://www.perplexity.ai/computer/connectors` - Custom skills: `https://www.perplexity.ai/computer/skills` - Public share: the same task URL with `?view=thread` appended (e.g. `https://www.perplexity.ai/computer/tasks/-?view=thread`). There is **no separate `/share/` path** — the access level is toggled server-side and the `view=thread` query just opens the thread view for unauthenticated viewers. The task title in the top bar (`

` region) is the human-readable prompt summary; the URL slug is the kebab-cased version. Always key tasks by the id (last 22 chars of the URL) — slug and title both drift across Perplexity releases. ## Background: wire format Task state is **not** in `window.__NEXT_DATA__` on the task detail page (`__NEXT_DATA__` is `null`), and the page does **not** fire any `api.perplexity.ai`-style fetches on load — task content hydrates from an inline RSC payload / streaming response. A `wss://suggest.perplexity.ai/suggest/ws` WebSocket opens on the dashboard but only carries the typeahead suggestions for the composer; it is not the task stream. If you need the wire format for task streaming, install the fetch + WebSocket hooks from the Debugging section while submitting a new task — the streaming transport opens lazily on submit. Browser DOM extraction (below) is the supported path. ## Dashboard: `/computer/tasks` The task list is a CSS-grid table with proper ARIA roles — these are the most durable selectors on the whole product. | Target | Selector | Notes | | --- | --- | --- | | Task row | `div[role="row"]` in the main content | Each row is `tabindex="0"` and clickable (not an ``). Click anywhere on the row to open the task. | | Task cell | `div[role="cell"]` inside a row | Columns: title + slug, relative date ("6d ago"), status. | | Start-a-task composer | `[data-ask-input-container]` | Unique on the page. Contains the Lexical editor. | | Composer editor | `[data-lexical-editor="true"]` inside the container | `contenteditable="true"`. Focus + `type_text()` via CDP — **not** a `