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

# Ask the agent about comments

> The account's owner only, from the site's page. Hands 1 to 10 open comments, each at the version the owner saw, to the owner's agent as one job: with to operator (the default), done by one operator turn in the site's conversation; with to agent, sent to the owner's local agent session listening on the site (the board's listener), which claims it by pulling it within 2 minutes and keeps it while it renews it at least every 20 minutes (only its comment pull, board, create, reply, resolve and changes to the site's files or releases renew it; pull the job again during long work), else Operator takes it over. Asking changes no comment. A comment an unsettled job already holds is refused with `already_asked`; an asked comment needs the owner's answer first.



## OpenAPI

````yaml https://www.cool.computer/openapi.json post /api/computers/{id}/comments/ask
openapi: 3.1.0
info:
  title: Cool Computers API
  version: 1.0.0
  description: >-
    Create and operate reachable computers. Each computer keeps a stable
    name.cool.computer address, persistent files, and agent-ready command
    execution. REST requests use UTC-aligned one-minute limits: 600 requests per
    account identified by a recognized valid account bearer credential, a
    separate 600-request budget per computer-scoped credential, or 60 requests
    per source IP otherwise. Read-only GETs answered from API state spend a
    separate read budget reported as account-read or computer-read, so status
    polling cannot exhaust the budget that protects work and mutations. To bound
    authentication-provider traffic, at most 60 first-seen bearer values are
    checked per source IP in a minute; recognized valid credentials use their
    account or computer policy. Successful bearer authentication is reused for
    at most five seconds; transient provider failures are not cached. Revoking a
    credential through this API (POST /api/auth/logout or DELETE
    /api/api-keys/{id}) drops that reuse in every serving process, so the
    revoked credential is refused from the next request on; only if that
    announcement fails does another process keep admitting it, for at most five
    seconds. JSON request bodies must be sent with Content-Type:
    application/json; any other body answers 415 unsupported_media_type. A
    request that gives a published site its own VM (POST /api/computers/{id}/vm,
    POST /api/computers/{id}/service/run, or a publish whose cool.json declares
    run) answers with a Cool-Notice header saying that the site now runs there
    and cool.json no longer applies; exec, terminals, the port proxy and
    exposure never give one and answer 409 needs_vm on a site with no VM. Every
    error is an application/problem+json object whose type links to
    https://cool.computer/docs/api-reference/errors; a malformed body names the
    unknown field, the wrong type, or the byte where the JSON breaks. Non-exempt
    API responses include the structured RateLimit and RateLimit-Policy fields;
    request admission 429 responses use code api_request_rate_exceeded and also
    include Retry-After. Health, OpenAPI, webhooks, callbacks, SSE, and
    WebSocket endpoints are exempt from the REST request budget. Authenticated
    SSE connection attempts remain subject to the authentication safeguards and
    can receive the same typed 429 response.
servers:
  - url: https://api.cool.computer
    description: Canonical API origin
security: []
tags:
  - name: Authentication
    description: Obtain and manage bearer credentials.
  - name: Billing
    description: Inspect and manage the account's no-card trial or Pro plan.
  - name: Computers
    description: Create, inspect, and delete resident computers.
  - name: Execution
    description: Run commands on a computer.
  - name: Files
    description: Read and change a computer's persistent files.
  - name: Publishing
    description: >-
      Publish files to a computer's URL as immutable releases, with no VM. To
      show something, publish the files; to run something, give the site its own
      VM with POST /api/computers/{id}/vm or start a service with POST
      /api/computers/{id}/service/run, then use exec, terminals and services.
  - name: Services
    description: >-
      Manage processes and select the HTTP port exposed at a computer's stable
      address.
  - name: Email
    description: Read and send mail through a computer's inbox.
  - name: Comments
    description: >-
      Comments people leave on a computer's page, unless its owner switched
      comments off: the owner, the people it is shared with and, when the
      computer is public, any signed-in person. A comment is content; the
      owner's agents (Operator, or any agent with the owner's credential) pull
      the open comments and answer them, and the owner hands chosen comments as
      a job with POST /api/computers/{id}/comments/ask to Operator, or to the
      owner's own coding agent while it listens on the site with POST
      /api/computers/{id}/comments/watch (one listening session per site; it
      claims the job by pulling it, and Operator takes the job over when it goes
      quiet).
  - name: Network
    description: Control a computer's public visibility and outbound network policy.
  - name: Sharing
    description: Invite people to use a computer without granting owner controls.
  - name: Domains
    description: >-
      Serve a computer at a hostname you control, such as app.example.com,
      beside its own address.
  - name: Public
    description: Unauthenticated discovery endpoints.
  - name: Secrets
    description: Inspect secret sets and their audit history; values are never returned.
  - name: Integrations
    description: Connect, inspect and revoke outside service accounts.
  - name: GitHub
    description: Work with repository workspaces using the connected user account.
  - name: Messaging
    description: >-
      Connect Telegram, Slack or WhatsApp so direct messages, and mentions of
      the Slack app in a channel, become chat turns.
  - name: Terminals
    description: Inspect a computer's terminal sessions.
  - name: Operator
    description: Read the operator agent's conversations, turns, and events.
  - name: Feedback
    description: >-
      Tell the Cool Computers team what works and what does not, with or without
      an account.
externalDocs:
  description: Cool Computers agent registration guide
  url: https://www.cool.computer/auth.md
paths:
  /api/computers/{id}/comments/ask:
    post:
      tags:
        - Comments
      summary: Ask the agent about comments
      description: >-
        The account's owner only, from the site's page. Hands 1 to 10 open
        comments, each at the version the owner saw, to the owner's agent as one
        job: with to operator (the default), done by one operator turn in the
        site's conversation; with to agent, sent to the owner's local agent
        session listening on the site (the board's listener), which claims it by
        pulling it within 2 minutes and keeps it while it renews it at least
        every 20 minutes (only its comment pull, board, create, reply, resolve
        and changes to the site's files or releases renew it; pull the job again
        during long work), else Operator takes it over. Asking changes no
        comment. A comment an unsettled job already holds is refused with
        `already_asked`; an asked comment needs the owner's answer first.
      operationId: askComputerComments
      parameters:
        - $ref: '#/components/parameters/ComputerID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AskCommentsRequest'
      responses:
        '201':
          description: The job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentJob'
        '400':
          description: >-
            Bad Request. `invalid_comment`: ask about 1 to 10 open comments,
            each once, with the version you saw, and send agent exactly when to
            is agent.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: >-
            Forbidden. `not_your_comment`: only the site's owner can ask the
            agent.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '404':
          description: >-
            Not Found. `comments_off`: comments are off for the computer.
            `comment_not_found`: a comment was deleted; read the board again.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: >-
            Conflict. `comment_changed`: a comment changed since you saw it;
            read the board again. `already_asked`: the agent is already working
            on a comment. `agent_not_listening`: to agent, but the agent named
            is not the one listening on the site (or none is), or the site has a
            VM; read the board again, or send it to Operator.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '429':
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
          description: >-
            Too Many Requests. `agent_busy`: the agent already has as many turns
            waiting as it takes; nothing was queued, so wait for some of its
            queued work to finish, then ask again. `api_request_rate_exceeded`:
            the account request limit; wait for Retry-After seconds.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          $ref: '#/components/responses/InternalServerError'
        default:
          $ref: '#/components/responses/Problem'
      security:
        - bearerAuth: []
components:
  parameters:
    ComputerID:
      name: id
      in: path
      required: true
      description: >-
        The computer's name, such as agent-atlas, or its id (cmp_…). Every
        caller may use either, the computer's own runtime token included.
      schema:
        type: string
        minLength: 1
        example: agent-atlas
  schemas:
    AskCommentsRequest:
      type: object
      additionalProperties: false
      required:
        - comments
      properties:
        comments:
          type: array
          minItems: 1
          maxItems: 10
          items:
            $ref: '#/components/schemas/CommentRef'
          description: >-
            Open comments, each at the version you saw, that no running job
            holds.
        to:
          type: string
          enum:
            - operator
            - agent
          default: operator
          description: >-
            Who does the job: Operator, or the owner's local agent session the
            board names as listener.
        agent:
          type: string
          maxLength: 64
          description: >-
            With to agent, and only then: the board's listener.agent, the agent
            the owner was shown. A different agent listening now, or none, is
            409 agent_not_listening.
    CommentJob:
      type: object
      additionalProperties: false
      required:
        - id
        - state
        - comments
        - created_at
      description: >-
        Comments the owner asked the agent to handle, done by one operator turn
        and the turns that continue its work. Asking changes no comment; the
        agent answers each comment as it acts.
      properties:
        id:
          type: string
          pattern: ^cjob_[0-9a-f]{24}$
        state:
          type: string
          enum:
            - queued
            - working
            - settled
          description: >-
            queued until a turn of its work starts, working until all of its
            work (the turn and the turns that continue it) ended, then settled.
        outcome:
          type: string
          enum:
            - done
            - partial
            - stopped
            - cancelled
          description: >-
            Present once settled: done when the agent answered every comment,
            partial when some, stopped when none, cancelled when someone stopped
            one of its turns.
        comments:
          type: array
          items:
            $ref: '#/components/schemas/CommentRef'
          description: The comments asked about, at the versions asked.
        agent:
          type: string
          maxLength: 64
          description: >-
            Present for a job sent to the owner's local agent session: the label
            its watch gave. Kept after Operator took the job over.
        took_over:
          type: boolean
          description: >-
            Present and true when the local agent session went quiet and
            Operator took the job over.
        created_at:
          type: string
          format: date-time
    Problem:
      type: object
      additionalProperties: false
      required:
        - type
        - title
        - status
        - code
        - detail
      properties:
        type:
          type: string
          format: uri
          description: >-
            https://cool.computer/docs/api-reference/errors, the page that
            explains every code.
        title:
          type: string
        status:
          type: integer
          minimum: 400
          maximum: 599
        code:
          type: string
          pattern: ^[a-z0-9_]+$
        detail:
          type: string
        resolution:
          type: string
        context:
          type: object
          additionalProperties: true
        suggestions:
          type: array
          items:
            type: string
          maxItems: 3
          description: >-
            Values to send instead. With name_taken: up to three free names made
            from the requested one, the first with a random suffix; each was
            free when the answer was made.
    CommentRef:
      type: object
      additionalProperties: false
      required:
        - id
        - version
      properties:
        id:
          type: string
          minLength: 1
        version:
          type: integer
          minimum: 1
  responses:
    Unauthorized:
      headers:
        RateLimit:
          $ref: '#/components/headers/RateLimit'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      description: Unauthorized.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    InternalServerError:
      headers:
        RateLimit:
          $ref: '#/components/headers/RateLimit'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      description: Internal Server Error.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    Problem:
      headers:
        RateLimit:
          $ref: '#/components/headers/RateLimit'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
      description: >-
        A machine-readable API error with a stable code and recovery
        instruction.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  headers:
    RateLimit:
      description: >-
        The applied policy name, requests remaining after this request, and
        whole seconds until the current UTC-aligned window resets.
      schema:
        type: string
        pattern: >-
          ^"(account|account-read|computer|computer-read|source|comment-board|comment-live)";r=[0-9]+;t=([1-9]|[1-5][0-9]|60)$
        examples:
          - '"account";r=599;t=42'
          - '"computer-read";r=598;t=42'
    RateLimit-Policy:
      description: >-
        The selected policy name, quota, and window in seconds. Valid account
        credentials use account or account-read with q=600, computer credentials
        use computer or computer-read with q=600, unauthenticated or
        unrecognized requests use source with q=60 for their source IP, a
        browser session's read of a comment board uses comment-board with q=300
        for its source IP, and its handshake of a comment live channel uses
        comment-live with q=60 for its source IP.
      schema:
        type: string
        pattern: >-
          ^("(account|account-read|computer|computer-read)";q=600|"source";q=60|"comment-board";q=300|"comment-live";q=60);w=60$
        examples:
          - '"account";q=600;w=60'
          - '"computer-read";q=600;w=60'
    Retry-After:
      description: >-
        Whole seconds to wait after an api_request_rate_exceeded,
        comment_rate_exceeded, comment_site_rate_exceeded, comment_live_full or
        computer_starting response before retrying (up to 3600 for
        comment_site_rate_exceeded, whose window is an hour). Other 429 problem
        codes describe separate resource or provider limits and do not inherit
        this retry value.
      schema:
        type: integer
        minimum: 1
        maximum: 3600
        examples:
          - 42
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: WorkOS user or agent access token, or Cool Computers API key
      description: >-
        A Cool Computers API key, user access token, or claimed agent access
        token in the Authorization header. Follow
        https://www.cool.computer/auth.md for agent registration and
        https://www.cool.computer/authentication.md for direct user credentials.

````

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