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

# Discard uncommitted private authoring

> Requires delegated reports:write consent, current native report edit permission and workspace authoring availability. Workspace service keys are unsupported. These private stages never alter the saved report, run Data, publish a share or certify rendered layout. Requests stream at most 512 KiB. Stages retain at most 256 batches, 8192 operations and 32 MiB for 24 hours. Create binds its UUID retry key to the exact base. Append binds the batch ID, sequence and confirmed cumulative hash to the entire typed command. Seal and discard are functionally idempotent at the exact cumulative hash. Sealed means validated native configuration and references; measured composition and commit are separate.

Required scopes: `reports:write`.


## OpenAPI

````yaml DELETE /api/v2/reports/{reportId}/change-sets/{changeSetId}
openapi: 3.1.1
info:
  title: chatobserver public API
  version: '2026-09-09'
  description: >-
    Track AI visibility, manage prompts, inspect collected answers and
    citations, and integrate workspace data with your own tools. Visibility
    endpoints use workspace API keys. Data endpoints use scoped service-account
    keys; spreadsheet client endpoints use authorised client sessions. See the
    authentication guide for each credential type.
  contact:
    name: chatobserver support
    url: https://chatobserver.com/contact
    email: support@chatobserver.com
servers:
  - url: https://app.chatobserver.com
    description: Production API
security:
  - WorkspaceKey: []
  - BearerKey: []
tags:
  - name: Workspace
    description: Validate access and list the workspace project and available platforms.
  - name: Prompts
    description: Create, schedule, organise, activate and retrieve tracked prompts.
  - name: Answers
    description: Retrieve collected AI answers, their analysis and visibility trends.
  - name: Brands
    description: Manage brands and compare their visibility in AI answers.
  - name: Sources and citations
    description: Analyse cited domains, pages and ownership across answers.
  - name: Visitor analytics
    description: Read website visitor and crawler analytics for the workspace.
  - name: Content opportunities
    description: Retrieve content-gap findings and recommendations for tracked prompts.
  - name: Usage
    description: Read workspace consumption and allowance summaries.
  - name: Data connections
    description: Discover authorised connections, source accounts and connector catalogues.
  - name: Data queries
    description: >-
      Create versioned queries, publish definitions and inspect integration
      contracts.
  - name: Data operations
    description: >-
      Execute, validate, cancel and inspect operations and page through result
      rows.
  - name: Data delivery
    description: Manage schedules, transfers, destinations and import workflows.
  - name: Data definitions
    description: Manage reusable definitions and their immutable versions.
  - name: Data webhooks
    description: >-
      Configure event delivery, inspect deliveries, replay events and rotate
      secrets.
  - name: Client authorisation
    description: Authorise spreadsheet clients using a user-approved challenge exchange.
  - name: Spreadsheet clients
    description: >-
      Access document-bound client sessions, queries, schedules, bindings and
      write claims.
  - name: AI visibility audits
    description: Create website visibility audits and retrieve their report links.
  - name: Version 1
    description: Integrate with the version 1 visibility and analytics endpoints.
  - name: Tracked coverage
    description: >-
      Track published coverage, maintain its metadata and inspect exact-page
      citation evidence with the same workspace feature access as the dashboard.
  - name: Reports
    description: >-
      Discover accessible native reports and assess exact saved revisions using
      measured, context-specific evidence.
paths:
  /api/v2/reports/{reportId}/change-sets/{changeSetId}:
    delete:
      tags:
        - Reports
      summary: Discard uncommitted private authoring
      description: >-
        Requires delegated reports:write consent, current native report edit
        permission and workspace authoring availability. Workspace service keys
        are unsupported. These private stages never alter the saved report, run
        Data, publish a share or certify rendered layout. Requests stream at
        most 512 KiB. Stages retain at most 256 batches, 8192 operations and 32
        MiB for 24 hours. Create binds its UUID retry key to the exact base.
        Append binds the batch ID, sequence and confirmed cumulative hash to the
        entire typed command. Seal and discard are functionally idempotent at
        the exact cumulative hash. Sealed means validated native configuration
        and references; measured composition and commit are separate.
      operationId: discardReportChangeSet
      parameters:
        - name: x-workspace-id
          in: header
          required: true
          schema:
            type: string
            pattern: ^ws_[a-f0-9]{32}$
          description: Explicit workspace selected for the delegated account.
        - name: reportId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: changeSetId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportStageHashRequestV2'
      responses:
        '200':
          description: Confirmed private stage or identical retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportChangeSetResponseV2'
        default:
          description: >-
            Access revoked, unsupported input, stale revision/hash, changed
            retry, unfinished native graph, expired stage, byte budget or
            bounded admission capacity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - McpConnection: []
components:
  schemas:
    ReportStageHashRequestV2:
      type: object
      properties:
        expectedCumulativeHash:
          type: string
          pattern: ^[0-9a-f]{64}$
      required:
        - expectedCumulativeHash
      additionalProperties: false
    ReportChangeSetResponseV2:
      type: object
      properties:
        data:
          type: object
          properties:
            version:
              type: number
              const: 2
            id:
              type: string
              format: uuid
            reportId:
              type: string
              format: uuid
            nativeDocumentVersion:
              type: number
              const: 4
            base:
              type: object
              properties:
                revision:
                  type: integer
                  minimum: 0
                documentHash:
                  type: string
                  pattern: ^[0-9a-f]{64}$
              required:
                - revision
                - documentHash
              additionalProperties: false
            state:
              type: string
              enum:
                - open
                - sealed
                - discarded
                - committed
            cumulativeHash: 536aace9-0445-4606-a54d-1f16a9077e27
            sealedHash:
              anyOf:
                - 3ced8155-80df-474e-8112-b8258693fa37
                - type: 'null'
            acceptedSequence:
              type: integer
              minimum: 0
              maximum: 256
            operationCount:
              type: integer
              minimum: 0
              maximum: 8192
            inputBytes:
              type: integer
              minimum: 0
              maximum: 33554432
            expiresAt:
              type: string
              format: date-time
            receipts:
              type: array
              items:
                type: object
                properties:
                  batchId:
                    type: string
                    format: uuid
                  sequence:
                    type: integer
                    exclusiveMinimum: 0
                  requestHash: 32c70378-b684-4d1f-af1d-9aa52ee178e3
                  cumulativeHash: a43bd49e-0796-422a-8001-f89d9ae21e61
                  operationCount:
                    type: integer
                    exclusiveMinimum: 0
                    maximum: 256
                  inputBytes:
                    type: integer
                    exclusiveMinimum: 0
                    maximum: 524288
                required:
                  - batchId
                  - sequence
                  - requestHash
                  - cumulativeHash
                  - operationCount
                  - inputBytes
                additionalProperties: false
              maxItems: 256
            commitReceipt:
              anyOf:
                - type: object
                  properties:
                    id:
                      type: string
                      format: uuid
                    planId:
                      type: string
                      format: uuid
                    revision:
                      type: integer
                      minimum: 0
                    documentHash: 1002c769-23d6-4388-a877-251c6f552109
                  required:
                    - id
                    - planId
                    - revision
                    - documentHash
                  additionalProperties: false
                - type: 'null'
          required:
            - version
            - id
            - reportId
            - nativeDocumentVersion
            - base
            - state
            - cumulativeHash
            - sealedHash
            - acceptedSequence
            - operationCount
            - inputBytes
            - expiresAt
            - receipts
            - commitReceipt
          additionalProperties: false
        replayed:
          type: boolean
        receipt: b7f32850-4187-429c-8fb9-638ee8bc7081
      required:
        - data
      additionalProperties: false
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
            details: {}
          required:
            - code
            - message
        requestId:
          type: string
      required:
        - error
        - requestId
  securitySchemes:
    WorkspaceKey:
      type: apiKey
      in: header
      name: x-chatobserver-key
      description: >-
        A workspace API key. Data endpoints require a service-account key with
        the specified scopes.
    BearerKey:
      type: http
      scheme: bearer
      description: The workspace or service-account API key as a bearer token.
    McpConnection:
      type: http
      scheme: bearer
      description: >-
        Delegated application credential issued after Chatobserver account
        consent. Restricted to selected workspaces and explicitly supported MCP
        operations. The MCP server access token is a separate credential and
        cannot be used here.

````

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