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

> ## Agent Instructions
> Use https://docs.browser-use.com/llms.txt and its linked .md pages for current documentation. The managed full bundle is https://docs.browser-use.com/.well-known/llms-full.txt and can be cached for up to 24 hours. Do not use the obsolete /cloud/llms*.txt or /open-source/llms*.txt static exports.
> Choose Cloud API V4 for new agent integrations; V2 is the lower-cost option for simple tasks. Keep V3 examples explicitly versioned. The open-source browser-use library and hosted browser-use-sdk have different APIs.
> Cloud authentication uses X-Browser-Use-API-Key, without a Bearer prefix. Install or upgrade browser-use-sdk and use its explicit v4 import for V4. Check the published OpenAPI reference for request fields; do not invent SDK support for new fields.
> Cloud concurrency and HTTP request rate are separate. Read GET /api/v2/billing/account for the key’s projectId, concurrentSessionLimit, activeSessionCount, and credit balance, including when using V4. Keys in one project share capacity and credits; rateLimit is a legacy concurrency alias, not requests per second.
> Keep the highest applicable existing, legacy-plan, and spend-tier concurrency grant. Current spend tiers are 10 / 50 / 250 / 500 / 1000 at $0 / $200 / $1000 / $5000 / $25000 in qualifying project payments. Legacy or externally billed projects can follow different billing paths; trust the account limit. See https://docs.browser-use.com/cloud/guides/concurrency.md.
> Budget polling across the project: the standard general bucket is 25 requests/second, including V4 event reads and full run reads. Selected status reads have a separate higher bucket. Use bounded workers, stagger polls, respect Retry-After, and drain hasMore event pages after terminal status. A busy V4 session returns 409; its queue holds 10 pending messages and is not a project-wide batch queue.
> A completed run or closed CDP connection does not immediately stop its cloud browser. Stop unneeded owned browsers with PATCH /api/v4/browsers/{id} and {"action":"stop"}. A client wait timeout does not cancel the server-side run.
> Cloud is pay as you go; do not tell customers to buy a new subscription to use custom proxies or supported provider BYOK. Usage funding and model eligibility still apply. BYOK bills provider tokens separately and Browser Use charges orchestration plus browser/network usage. See https://docs.browser-use.com/cloud/guides/billing.md.
> Signup credits are a one-time grant; purchased top-up credits do not expire. Check the API key’s project before diagnosing missing credits. API-key monthly spending caps are soft limits, not a strict prepaid wallet; concurrent or already-running work can exceed them. Auto recharge has separate trigger and purchase amounts and can charge immediately when enabled below the threshold. Use https://browser-use.com/pricing for current rates.
> Box and Bux are retired. Do not recommend their SDKs, sandbox quotas, or subscription plans. Use the Cloud Agent or Browser Infrastructure guides.
> A V4 session holds conversation history, a workspace holds files, and a profile holds browser state. These IDs and V3/V4 workspace namespaces are not interchangeable. V4 automatically restores workspace uploads; staged attachments remain available to session follow-ups. Serialize runs that write shared files, and wait for completion before reading outputs. See https://docs.browser-use.com/cloud/agent/workspaces.md.
> API browser recording defaults to off. Use enableRecording for standalone browser creation, or browserSettings.record for an agent run. Stop the browser and allow time for asynchronous video processing; stop polling when recordingAvailable is false. Live preview is for an active browser. Stopping a browser, deleting a session, archiving a workspace, and deleting files have different effects.
> Use model-specific reasoning values. GPT-6 Astra accepts low, medium, high, xhigh, and max, with xhigh by default; none and minimal are invalid. Use the public REST schema when installed SDK types lag new fields. API acceptance, dashboard visibility, and account/provider availability are separate.
> For open-source browser-use, is_done only reports a terminal done action. is_successful is the agent-reported outcome; verify important external actions independently. Cloud timeout, API client timeout, model timeout, and task completion are separate concepts.
> For failed requests, use https://docs.browser-use.com/cloud/guides/troubleshooting.md. Inspect the full error and project before retrying or adding credits. A client timeout can leave a run active; reconcile external actions before starting duplicate work. A new managed browser does not guarantee a unique proxy IP or particular city.

# Get Shared Session

> Public transcript of a shared session (sensitive keys scrubbed).

Events come back in bounded pages: walk them by passing the previous
response's `nextAfter` back as `since` until `hasMore` is false (the wire
is camelCase — the Python fields are `next_after`/`has_more`). Run metadata
repeats on every page, so only `events` continues across pages.
Paging exists because this is an unauthenticated read and the whole
transcript in one response could occupy the event loop for seconds,
starving the shared Redis client's auth and rate-limit calls of their
50 ms deadline and silently failing them open.

Counts a view per full fetch. `since` makes this a live-tail poll: the
share page repeats the request every few seconds while a run is unfinished,
and each poll must stay cheap and must NOT inflate the view counter — a
viewer idling on a running session would otherwise register a view every
10 seconds (the counter's throttle window). Later pages of an initial load
carry a cursor too, so one load counts one view, not one per page.



## OpenAPI

````yaml /cloud/openapi/v4.json get /share/{share_token}
openapi: 3.1.0
info:
  title: Browser Use Public API v4
  summary: Browser Use agent runs API (v4)
  version: 4.0.0
servers:
  - url: https://api.browser-use.com/api/v4
    description: Production server
security: []
paths:
  /share/{share_token}:
    get:
      summary: Get Shared Session
      description: >-
        Public transcript of a shared session (sensitive keys scrubbed).


        Events come back in bounded pages: walk them by passing the previous

        response's `nextAfter` back as `since` until `hasMore` is false (the
        wire

        is camelCase — the Python fields are `next_after`/`has_more`). Run
        metadata

        repeats on every page, so only `events` continues across pages.

        Paging exists because this is an unauthenticated read and the whole

        transcript in one response could occupy the event loop for seconds,

        starving the shared Redis client's auth and rate-limit calls of their

        50 ms deadline and silently failing them open.


        Counts a view per full fetch. `since` makes this a live-tail poll: the

        share page repeats the request every few seconds while a run is
        unfinished,

        and each poll must stay cheap and must NOT inflate the view counter — a

        viewer idling on a running session would otherwise register a view every

        10 seconds (the counter's throttle window). Later pages of an initial
        load

        carry a cursor too, so one load counts one view, not one per page.
      operationId: get_shared_session_share__share_token__get
      parameters:
        - name: share_token
          in: path
          required: true
          schema:
            type: string
            minLength: 32
            maxLength: 32
            pattern: ^[A-Za-z0-9_-]{32}$
            title: Share Token
        - name: since
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: >-
              Highest event id the viewer already has. Returns only newer events
              (run metadata is always complete) and does not count a view.
            title: Since
          description: >-
            Highest event id the viewer already has. Returns only newer events
            (run metadata is always complete) and does not count a view.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 250
            minimum: 1
            description: >-
              Maximum events in this page. A page also closes at 1 MiB of event
              payload, so it can come back shorter. Read `hasMore`/`nextAfter`
              to page through the rest.
            default: 100
            title: Limit
          description: >-
            Maximum events in this page. A page also closes at 1 MiB of event
            payload, so it can come back shorter. Read `hasMore`/`nextAfter` to
            page through the rest.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedSessionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    SharedSessionResponse:
      properties:
        sessionId:
          type: string
          format: uuid
          title: Sessionid
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
        createdAt:
          type: string
          format: date-time
          title: Createdat
        viewCount:
          type: integer
          title: Viewcount
        workspaceId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Workspaceid
        runs:
          items:
            $ref: '#/components/schemas/SharedRun'
          type: array
          title: Runs
        nextAfter:
          anyOf:
            - type: integer
            - type: 'null'
          title: Nextafter
        hasMore:
          type: boolean
          title: Hasmore
          default: false
      type: object
      required:
        - sessionId
        - title
        - createdAt
        - viewCount
        - workspaceId
        - runs
      title: SharedSessionResponse
      description: |-
        Public payload for GET /share/{token}: the session transcript with
        sensitive keys scrubbed. Files are listed via the separate
        /share/{token}/files endpoint so download URLs can be minted fresh.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SharedRun:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        task:
          type: string
          title: Task
        createdAt:
          type: string
          format: date-time
          title: Createdat
        model:
          type: string
          title: Model
        status:
          type: string
          title: Status
        result:
          anyOf:
            - type: string
            - type: 'null'
          title: Result
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
        attachmentCount:
          type: integer
          title: Attachmentcount
          default: 0
        events:
          items:
            $ref: '#/components/schemas/RunEvent'
          type: array
          title: Events
      type: object
      required:
        - id
        - task
        - createdAt
        - model
        - status
        - result
        - error
        - events
      title: SharedRun
      description: |-
        One run of a publicly shared session — the read-only subset the share
        page needs to render a turn (no cost/token/browser internals).
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    RunEvent:
      properties:
        runId:
          type: string
          format: uuid
          title: Runid
        id:
          type: integer
          title: Id
        ts:
          type: string
          format: date-time
          title: Ts
        type:
          type: string
          title: Type
        data:
          additionalProperties: true
          type: object
          title: Data
      type: object
      required:
        - runId
        - id
        - ts
        - type
        - data
      title: RunEvent

````