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

# Open a live view of an internal tester

> A ticket to watch one current internal tester's devices live (D120, spec 16): open `url` as a WebSocket within 60 seconds. The view closes 30 minutes after it opens unless the viewer renews it with a fresh ticket ({"type":"renew","ticket":…}). Any member of the project's organization. For a person: the console session or the CLI signed in as you (apsio login); never a project token or an agent (person_required, spec 16.7). Audited as live.view.start; at most 30 a minute per person in a project (429 with Retry-After). Send `Content-Type: application/json`.



## OpenAPI

````yaml /api-reference/openapi.json post /projects/{projectId}/live/tickets
openapi: 3.1.0
info:
  title: Apsio API
  version: 0.1.0
  description: >-
    Read API v0: your projects, release health and comparisons, missing symbols,
    issues, sessions, vitals, cohort comparisons, performance (app start,
    screens, hangs, MetricKit) and network endpoints and traces for one project.
    Authenticate with a project token as a bearer token, with an OAuth access
    token from Apsio's authorization server (MCP clients), or, from the console,
    with the session cookie of a member of the project's organization.
servers:
  - url: https://api.apsio.io/v1
security: []
paths:
  /projects/{projectId}/live/tickets:
    post:
      summary: Open a live view of an internal tester
      description: >-
        A ticket to watch one current internal tester's devices live (D120, spec
        16): open `url` as a WebSocket within 60 seconds. The view closes 30
        minutes after it opens unless the viewer renews it with a fresh ticket
        ({"type":"renew","ticket":…}). Any member of the project's organization.
        For a person: the console session or the CLI signed in as you (apsio
        login); never a project token or an agent (person_required, spec 16.7).
        Audited as live.view.start; at most 30 a minute per person in a project
        (429 with Retry-After). Send `Content-Type: application/json`.
      parameters:
        - schema:
            type: string
            pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
            example: 0192f3a4-0000-7000-8000-00000000a101
          required: true
          name: projectId
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tester_id:
                  type: string
                  pattern: >-
                    ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
                  description: The internal tester (live-testers).
                device:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: >-
                    Instead of tester_id: one device's install id
                    (app.installation.id) or user hash. The server finds the
                    current tester whose match is that device's; none answers as
                    an unknown tester_id. The value is never kept, logged or
                    answered; the audit records only that the ticket was asked
                    by device.
      responses:
        '200':
          description: The ticket.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LiveTicket'
        '400':
          description: The request is not valid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: No valid bearer token or console session.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Not allowed: the sandbox; a project token or an agent
            (person_required); for commands, a member (owners and admins only).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No such project, or no current internal tester with this id in it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '410':
          description: >-
            The project or its organization is being deleted (`erasing`):
            nothing more to read; do not retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '415':
          description: The body is not JSON.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Over a rate limit (the caller's, the client address's, or the
            plan's); Retry-After says when to retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Live inspection is not set up here.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearer: []
components:
  schemas:
    LiveTicket:
      type: object
      properties:
        ticket:
          type: string
          description: Opaque; valid for 60 seconds.
        url:
          type: string
          description: The WebSocket URL of the live view, ticket included.
          example: wss://live.apsio.cloud/v1/live/view?ticket=7b2276…
        expires_at:
          type: string
          example: '2026-10-28T12:01:00.000Z'
      required:
        - ticket
        - url
        - expires_at
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: invalid_request
            message:
              type: string
            subject:
              type: string
              enum:
                - organization
                - project
              description: >-
                With `erasing` (410) only: what is being deleted, the
                organization or the project.
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: >-
        A project token (apsio_pt_v0...), which reads exactly one project, or an
        OAuth access token issued for the API, which reads what its user can.
        Access tokens issued for Apsio's MCP server are accepted only from the
        MCP server itself.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.