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

# Watch an agent run and its tool activity

> Streams persisted snapshots as SSE. Each snapshot contains the compact run, phase, and tool trace with public inputs and bounded evidence summaries. During finalization an active snapshot can include a bounded draft object whose answer replaces the previous draft and whose state is streaming or revising. Draft text is provisional and excludes citations. The first event restores the current state, including completed runs. Connections rotate after about 25 seconds; reconnect with GET while the run is pending or running. Reconnecting does not start work or incur another run charge. Disconnecting does not cancel durable execution. A terminal snapshot atomically replaces any draft with the validated answer. Internal reasoning, raw provider payloads, and transcript diagnostics are excluded.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/agent/{sessionId}/runs/{runId}/events
openapi: 3.1.0
info:
  title: video2ctx API
  version: 1.0.0
  license:
    name: Apache License 2.0
    identifier: Apache-2.0
  description: >-
    Consumer-facing contract for the hosted video2ctx API. First-party
    application and operator routes are documented separately at
    https://docs.video2ctx.dev/internals/overview.
servers:
  - url: https://api.video2ctx.dev
    description: Hosted video2ctx API
security: []
tags:
  - name: System
    description: Service status and machine-readable documentation.
  - name: Authentication
    description: Better Auth entry points used by the web application.
  - name: Providers
    description: Supported external video providers and their capabilities.
  - name: Discovery
    description: Search, browse, and trend research.
  - name: Videos
    description: Video metadata and evidence.
  - name: Channels
    description: Channel inspection.
  - name: Playlists
    description: Playlist inspection.
  - name: Projects
    description: Private research projects and saved material.
  - name: Research
    description: Imports, jobs, cited answers, comparisons, and reports.
  - name: Agents
    description: >-
      Durable agent runs and results. Feature-flagged; access is restricted to
      verified, allowlisted tester accounts during the initial rollout.
  - name: Exports
    description: Project export creation and download.
  - name: Monitoring
    description: Monitors, notifications, and digest preferences.
  - name: Billing
    description: Plan, credit, and subscription status.
  - name: Account
    description: Account lifecycle operations.
paths:
  /v1/agent/{sessionId}/runs/{runId}/events:
    get:
      tags:
        - Agents
      summary: Watch an agent run and its tool activity
      description: >-
        Streams persisted snapshots as SSE. Each snapshot contains the compact
        run, phase, and tool trace with public inputs and bounded evidence
        summaries. During finalization an active snapshot can include a bounded
        draft object whose answer replaces the previous draft and whose state is
        streaming or revising. Draft text is provisional and excludes citations.
        The first event restores the current state, including completed runs.
        Connections rotate after about 25 seconds; reconnect with GET while the
        run is pending or running. Reconnecting does not start work or incur
        another run charge. Disconnecting does not cancel durable execution. A
        terminal snapshot atomically replaces any draft with the validated
        answer. Internal reasoning, raw provider payloads, and transcript
        diagnostics are excluded.
      operationId: streamAgentRun
      parameters:
        - name: sessionId
          in: path
          required: true
          description: Session UUID returned by agent admission.
          schema:
            type: string
            minLength: 1
        - name: runId
          in: path
          required: true
          description: Agent run UUID returned by agent admission.
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: >-
            SSE events: snapshot (AgentRunProgress JSON), heartbeat (empty
            object), unavailable (message). Replace the previous snapshot; close
            the connection on a terminal run status. Reconnect after EOF for an
            active run.
          content:
            text/event-stream:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - bearerApiKey: []
        - sessionCookie: []
        - cliSession: []
        - apiKey: []
        - demoUser: []
components:
  responses:
    Unauthorized:
      description: Authentication is required.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The caller is not allowed to perform this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ValidationError:
      description: The request failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: An unexpected server error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServiceUnavailable:
      description: An upstream AI or YouTube service is unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              example: QUERY_REQUIRED
            message:
              type: string
            details: {}
            requestId:
              type: string
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Permanent personal API key created in the dashboard. Example: curl -H
        "Authorization: Bearer aty_…" https://your-host/v1/projects
    sessionCookie:
      type: apiKey
      in: cookie
      name: better-auth.session_token
      description: >-
        Better Auth session cookie. A production deployment may use the
        secure-prefixed cookie name; same-origin browser requests send it
        automatically.
    cliSession:
      type: http
      scheme: bearer
      bearerFormat: CLI session
      description: >-
        Short-lived, revocable session issued by the video2ctx device
        authorization flow. The official CLI stores and sends this value; never
        paste it into prompts or logs.
    apiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        Legacy-compatible header for a permanent personal API key. Prefer
        Authorization: Bearer aty_….
    demoUser:
      type: apiKey
      in: header
      name: X-Demo-User
      description: >-
        Local development only. Any stable value selects an isolated demo
        account. Rejected in production.

````