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

# Content Gap Stats

> Get aggregate content coverage statistics for the project



## OpenAPI

````yaml /v2/openapi.json get /content-gap/stats
openapi: 3.0.0
info:
  title: Promptwatch API v2
  description: >-
    API v2 for customer integrations with Promptwatch monitoring platform. This
    version provides improved structure, additional endpoints, and enhanced
    functionality.
  version: 2.0.0
  contact:
    name: Promptwatch Support
    email: team@promptwatch.com
    url: https://promptwatch.com
  license:
    name: Commercial
    url: https://promptwatch.com/terms-and-conditions
servers:
  - url: https://server.promptwatch.com/api/v2
    description: Promptwatch API v2
security: []
tags:
  - name: Authentication
    description: API key validation and authentication
  - name: Content
    description: >-
      AI content generation and optimization. Create content asynchronously and
      poll for results.
  - name: Content Gap
    description: Content gap analysis and recommendations
  - name: Models
    description: Available LLM models
  - name: Monitors
    description: Monitor management and CRUD operations
  - name: Page Tracker
    description: Track URLs and inspect citation stats, responses, and prompts
  - name: Prompts
    description: Prompt management and operations
  - name: Query Fanouts
    description: ChatGPT query fanout keywords
  - name: Responses
    description: LLM response data and analytics
  - name: Tags
    description: Tag management for prompts
  - name: Topics
    description: Topic management for prompts
  - name: Actions
    description: Action items (GEO suggestions and tasks)
  - name: Personas
    description: Persona configuration for monitors
  - name: Brands
    description: Brand management for competitive analysis
  - name: Visibility
    description: Brand visibility time series and competitor heatmaps
  - name: Citations
    description: Citation analytics from AI responses
  - name: Analytics
    description: Visitor analytics, AI crawler logs, sentiment, and brand visibility trends
  - name: Projects
    description: Project management (organization-level keys only)
  - name: Sitemap
    description: Sitemap crawl progress and discovered URLs
  - name: Site Health
    description: >-
      Crawled pages with SEO issues (titles, meta descriptions, H1, thin
      content)
  - name: Socials
    description: >-
      Social media citations (Reddit posts and YouTube videos) found in LLM
      responses
paths:
  /content-gap/stats:
    get:
      tags:
        - Content Gap
      summary: Content Gap Stats
      description: Get aggregate content coverage statistics for the project
      operationId: getContentGapStats
      parameters:
        - schema:
            anyOf:
              - type: string
                enum:
                  - ORGANIC
                  - BRAND_SPECIFIC
                  - COMPETITOR_COMPARISON
              - type: array
                items:
                  type: string
                  enum:
                    - ORGANIC
                    - BRAND_SPECIFIC
                    - COMPETITOR_COMPARISON
          in: query
          name: promptTypes
          required: false
          description: Prompt type filter; repeat the parameter for multiple values
        - schema:
            type: string
            format: date
          in: query
          name: startDate
          required: false
          description: Only count analyses with createdAt on or after this day (UTC).
        - schema:
            type: string
            format: date
          in: query
          name: endDate
          required: false
          description: Only count analyses with createdAt on or before this day (UTC).
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  totalPromptsWithCoverage: 180
                  totalPromptsWithoutCoverage: 42
                  averageCoverageScore: 0.61
                  distribution:
                    low: 35
                    medium: 52
                    good: 78
                    excellent: 57
                  byPromptType:
                    - category: ORGANIC
                      averageScore: 0.58
                      count: 90
                      totalPrompts: 120
                    - category: BRAND_SPECIFIC
                      averageScore: 0.72
                      count: 40
                      totalPrompts: 55
                  byIntentType:
                    - category: INFORMATIONAL
                      averageScore: 0.62
                      count: 100
                      totalPrompts: 140
                    - category: COMMERCIAL
                      averageScore: 0.55
                      count: 35
                      totalPrompts: 50
                properties:
                  totalPromptsWithCoverage:
                    type: number
                    description: Prompts with at least one coverage score
                  totalPromptsWithoutCoverage:
                    type: number
                    description: Prompts with no coverage score yet
                  averageCoverageScore:
                    type: number
                    nullable: true
                    description: Mean score across scored prompts
                  distribution:
                    type: object
                    description: Count of prompts per score band
                    properties:
                      low:
                        type: number
                        description: Low band count
                      medium:
                        type: number
                        description: Medium band count
                      good:
                        type: number
                        description: Good band count
                      excellent:
                        type: number
                        description: Excellent band count
                    required:
                      - low
                      - medium
                      - good
                      - excellent
                  byPromptType:
                    type: array
                    description: Breakdown by prompt type
                    items:
                      type: object
                      properties:
                        category:
                          type: string
                          enum:
                            - ORGANIC
                            - BRAND_SPECIFIC
                            - COMPETITOR_COMPARISON
                          description: Prompt type
                        averageScore:
                          type: number
                          nullable: true
                          description: Mean score in this bucket
                        count:
                          type: number
                          description: Scored prompts in this bucket
                        totalPrompts:
                          type: number
                          description: All prompts in this bucket
                      required:
                        - category
                        - averageScore
                        - count
                        - totalPrompts
                  byIntentType:
                    type: array
                    description: Breakdown by intent type
                    items:
                      type: object
                      properties:
                        category:
                          type: string
                          enum:
                            - BRANDED
                            - INFORMATIONAL
                            - NAVIGATIONAL
                            - COMMERCIAL
                            - TRANSACTIONAL
                          description: Intent type
                        averageScore:
                          type: number
                          nullable: true
                          description: Mean score in this bucket
                        count:
                          type: number
                          description: Scored prompts in this bucket
                        totalPrompts:
                          type: number
                          description: All prompts in this bucket
                      required:
                        - category
                        - averageScore
                        - count
                        - totalPrompts
                required:
                  - totalPromptsWithCoverage
                  - totalPromptsWithoutCoverage
                  - averageCoverageScore
                  - distribution
                  - byPromptType
                  - byIntentType
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  error: Bad Request
                  message: Date range cannot exceed 60 days for this endpoint.
                properties:
                  error:
                    type: string
                    description: Error label
                  message:
                    type: string
                    description: Reason the request was rejected
                required:
                  - error
                  - message
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  error: Unauthorized
                  message: Missing or invalid X-API-Key header.
                properties:
                  error:
                    type: string
                    description: Error category (often aligned with HTTP semantics)
                  code:
                    type: string
                    description: Optional machine-readable code
                  message:
                    type: string
                    description: Human-readable explanation
                  details:
                    type: object
                    description: Optional structured detail (e.g. validation)
                    additionalProperties: true
                required:
                  - error
                  - message
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: CONTENT_GAP_PROMPT_NOT_FOUND
                  message: Prompt not found
                properties:
                  code:
                    type: string
                    description: Domain error code
                    enum:
                      - CONTENT_GAP_PROMPT_NOT_FOUND
                      - CONTENT_GAP_PROJECT_MISSING
                      - CONTENT_GAP_WEBSITE_NOT_CONFIGURED
                      - INTERNAL_ERROR
                  message:
                    type: string
                    description: Human-readable explanation
                required:
                  - code
                  - message
                additionalProperties: false
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        API key for authentication. Get yours from the Promptwatch dashboard
        under Settings > API Keys.

````