> ## 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.

# Upload a report image

> Upload a public HTTPS image or canonical base64 PNG, JPEG or WebP (maximum 1MB) to the selected workspace. Requires reports:write, current author permission and report-authoring availability. The UUID Idempotency-Key identifies one immutable upload. Preserve the identical request on retries: completed uploads reuse stored bytes; a conflicting command or changed reserved content returns 409. The result is an active native image asset usable through settings.assetId; it is distinct from a workspace logoId. Does not change workspace branding, report content, Data, sharing or PDF state.

Required scopes: `reports:write`.


## OpenAPI

````yaml POST /api/v2/reports/images
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/images:
    post:
      tags:
        - Reports
      summary: Upload a report image
      description: >-
        Upload a public HTTPS image or canonical base64 PNG, JPEG or WebP
        (maximum 1MB) to the selected workspace. Requires reports:write, current
        author permission and report-authoring availability. The UUID
        Idempotency-Key identifies one immutable upload. Preserve the identical
        request on retries: completed uploads reuse stored bytes; a conflicting
        command or changed reserved content returns 409. The result is an active
        native image asset usable through settings.assetId; it is distinct from
        a workspace logoId. Does not change workspace branding, report content,
        Data, sharing or PDF state.
      operationId: uploadReportImage
      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: Idempotency-Key
          in: header
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportImageUploadRequestV1'
      responses:
        '200':
          description: Replayed existing upload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportImageUploadResponseV1'
        '201':
          description: Image uploaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportImageUploadResponseV1'
        default:
          description: >-
            Invalid native command, denied permission or conflicting creation
            identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - McpConnection: []
        - WorkspaceKey: []
        - BearerKey: []
components:
  schemas:
    ReportImageUploadRequestV1:
      type: object
      properties:
        version:
          type: number
          const: 1
        source:
          anyOf:
            - type: object
              properties:
                kind:
                  type: string
                  const: url
                url:
                  type: string
                  format: uri
                  maxLength: 2048
              required:
                - kind
                - url
              additionalProperties: false
            - type: object
              properties:
                kind:
                  type: string
                  const: base64
                mimeType:
                  type: string
                  enum:
                    - image/png
                    - image/jpeg
                    - image/webp
                data:
                  type: string
                  minLength: 4
                  maxLength: 1333336
                  pattern: >-
                    ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
              required:
                - kind
                - mimeType
                - data
              additionalProperties: false
        expectedSha256:
          type: string
          pattern: ^[a-f0-9]{64}$
      required:
        - version
        - source
      additionalProperties: false
    ReportImageUploadResponseV1:
      type: object
      properties:
        data:
          type: object
          properties:
            assetId:
              type: string
              format: uuid
            filePath:
              type: string
              minLength: 1
            mimeType:
              type: string
              enum:
                - image/png
                - image/jpeg
                - image/webp
            byteSize:
              type: integer
              exclusiveMinimum: 0
              maximum: 1000000
            width:
              type: integer
              exclusiveMinimum: 0
            height:
              type: integer
              exclusiveMinimum: 0
            hasAlpha:
              type: boolean
            sha256:
              type: string
              pattern: ^[a-f0-9]{64}$
          required:
            - assetId
            - filePath
            - mimeType
            - byteSize
            - width
            - height
            - hasAlpha
            - sha256
          additionalProperties: false
        replayed:
          type: boolean
      required:
        - data
        - replayed
      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.