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

# Get a run's audit profile

> Link profile (click depth and links per page), content profile (titles, headings, word count, freshness) and the slowest pages by time to first byte. Omit runId for the newest finished run.



## OpenAPI

````yaml /v2/openapi.json get /site-audit/profile
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 content refresh. Create content asynchronously
      and poll for results.
  - name: Content Agent
    description: >-
      Content Agent (automated content) lifecycle: project settings, scheduled
      slots, review (accept/decline), and publish.
  - name: Content Gap
    description: Content gap analysis and recommendations
  - name: Publishing
    description: >-
      Publish content to a connected CMS, or record a live URL, and track the
      published page
  - 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, competitor heatmaps, and performance
      heatmaps
  - name: Events
    description: >-
      Dated project events such as prompts added and actions completed, for
      annotating time series
  - name: Citations
    description: Citation analytics from AI responses
  - name: Analytics
    description: Visitor analytics, AI crawler logs, sentiment, and brand visibility trends
  - name: Search Insights
    description: >-
      Google Search Console and Bing Webmaster performance for the project
      website
  - name: Projects
    description: Project management (organization-level keys only)
  - name: Usage
    description: Plan usage and limits (organization-level keys only)
  - name: Sitemap
    description: Sitemap feeds, crawler settings, crawl progress, and discovered URLs
  - name: Site Health
    description: Deprecated. Legacy SEO issue pages. Use Site Audit for the current checks.
  - name: Site Audit
    description: >-
      Site audit runs, issue lists, link and content insights, and per-URL
      history
  - name: Socials
    description: >-
      Social media citations (Reddit posts, YouTube videos, and LinkedIn posts)
      found in LLM responses
  - name: Ads Radar
    description: Sponsored ads captured in AI answers
  - name: Shopping
    description: Product appearances in AI shopping answers and tracked products
paths:
  /site-audit/profile:
    get:
      tags:
        - Site Audit
      summary: Get a run's audit profile
      description: >-
        Link profile (click depth and links per page), content profile (titles,
        headings, word count, freshness) and the slowest pages by time to first
        byte. Omit runId for the newest finished run.
      operationId: getSiteAuditProfile
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 10
          in: query
          name: limit
          required: false
          description: Slowest pages to return (default 10, max 50)
        - schema:
            type: string
            format: uuid
          in: query
          name: runId
          required: false
          description: Defaults to the latest finished run
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  contentProfile: null
                  linkProfile:
                    clickDepth:
                      '0': 1
                      '1': 5
                      unreachable: 2
                    externalDomainsAvg: 0.8
                    externalLinksAvg: 2.5
                    inContentLinksAvg: 3
                    internalLinksAvg: 12
                  runId: 6ba7b820-9dad-11d1-80b4-00c04fd430c8
                  slowestPages:
                    pages:
                      - bytes: 120000
                        downloadMs: 900
                        statusCode: 200
                        ttfbMs: 1500
                        url: https://example.com/slow
                        urlHash: ff66
                    total: 1
                properties:
                  contentProfile:
                    type: object
                    nullable: true
                    description: >-
                      How the run's pages are titled, headed and sized; null
                      when the run checked nothing
                    properties:
                      canonicalSetup:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      descriptionLength:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      descriptionSetup:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      freshness:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      h1Setup:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      titleLength:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      titleSetup:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                      total:
                        type: integer
                        description: Pages the profile covers
                      wordCount:
                        type: object
                        additionalProperties:
                          type: integer
                        description: Page count per bucket
                    required:
                      - canonicalSetup
                      - descriptionLength
                      - descriptionSetup
                      - freshness
                      - h1Setup
                      - titleLength
                      - titleSetup
                      - total
                      - wordCount
                    additionalProperties: false
                  linkProfile:
                    type: object
                    nullable: true
                    description: Per-page link averages; null when the run checked nothing
                    example:
                      clickDepth:
                        '0': 1
                        '1': 5
                        unreachable: 2
                      externalDomainsAvg: 0.8
                      externalLinksAvg: 2.5
                      inContentLinksAvg: 3
                      internalLinksAvg: 12
                    properties:
                      clickDepth:
                        type: object
                        nullable: true
                        additionalProperties:
                          type: integer
                        description: >-
                          Pages per click from the homepage, plus unreachable
                          for pages the walk never reached
                      externalDomainsAvg:
                        type: number
                        description: Distinct external domains linked per page
                      externalLinksAvg:
                        type: number
                        description: External links per page
                      inContentLinksAvg:
                        type: number
                        nullable: true
                        description: >-
                          Internal links per page with site-wide navigation
                          taken out
                      internalLinksAvg:
                        type: number
                        description: Internal links per page
                    required:
                      - clickDepth
                      - externalDomainsAvg
                      - externalLinksAvg
                      - inContentLinksAvg
                      - internalLinksAvg
                    additionalProperties: false
                  runId:
                    type: string
                    format: uuid
                    description: Run the response was read from
                  slowestPages:
                    type: object
                    example:
                      pages:
                        - bytes: 120000
                          downloadMs: 900
                          statusCode: 200
                          ttfbMs: 1500
                          url: https://example.com/slow
                          urlHash: ff66
                      total: 1
                    properties:
                      pages:
                        type: array
                        items:
                          type: object
                          example:
                            bytes: 120000
                            downloadMs: 900
                            statusCode: 200
                            ttfbMs: 1500
                            url: https://example.com/slow
                            urlHash: ff66
                          properties:
                            bytes:
                              type: integer
                              description: HTML size in bytes
                            downloadMs:
                              type: integer
                              nullable: true
                              description: Download time in milliseconds
                            statusCode:
                              type: integer
                              nullable: true
                              description: HTTP status
                            ttfbMs:
                              type: integer
                              description: Time to first byte in milliseconds
                            url:
                              type: string
                              description: Page URL
                            urlHash:
                              type: string
                              description: Stable hash of the canonical URL
                          required:
                            - bytes
                            - downloadMs
                            - statusCode
                            - ttfbMs
                            - url
                            - urlHash
                          additionalProperties: false
                        description: Slowest fetched pages, highest TTFB first
                      total:
                        type: integer
                        description: Pages with a measured time to first byte
                    required:
                      - pages
                      - total
                    additionalProperties: false
                required:
                  - contentProfile
                  - linkProfile
                  - runId
                  - slowestPages
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  error: Bad Request
                  code: DATE_RANGE_TOO_LARGE
                  message: Date range cannot exceed 92 days
                properties:
                  error:
                    type: string
                    description: Error label
                  code:
                    type: string
                    description: Optional machine-readable code (e.g. DATE_RANGE_TOO_LARGE)
                  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
        '402':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: SITE_AUDIT_RUN_NOT_FOUND
                  message: Site audit run not found
                properties:
                  code:
                    type: string
                    description: Error code indicating the type of error
                    enum:
                      - SITE_AUDIT_PLAN_REQUIRED
                      - SITE_AUDIT_PROJECT_NOT_FOUND
                      - SITE_AUDIT_RUN_NOT_FOUND
                      - INTERNAL_ERROR
                    example: SITE_AUDIT_PLAN_REQUIRED
                  message:
                    type: string
                    description: Human-readable error message
                required:
                  - code
                  - message
                additionalProperties: false
        '404':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: SITE_AUDIT_RUN_NOT_FOUND
                  message: Site audit run not found
                properties:
                  code:
                    type: string
                    description: Error code indicating the type of error
                    enum:
                      - SITE_AUDIT_PLAN_REQUIRED
                      - SITE_AUDIT_PROJECT_NOT_FOUND
                      - SITE_AUDIT_RUN_NOT_FOUND
                      - INTERNAL_ERROR
                    example: SITE_AUDIT_PLAN_REQUIRED
                  message:
                    type: string
                    description: Human-readable error message
                required:
                  - code
                  - message
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                example:
                  code: SITE_AUDIT_RUN_NOT_FOUND
                  message: Site audit run not found
                properties:
                  code:
                    type: string
                    description: Error code indicating the type of error
                    enum:
                      - SITE_AUDIT_PLAN_REQUIRED
                      - SITE_AUDIT_PROJECT_NOT_FOUND
                      - SITE_AUDIT_RUN_NOT_FOUND
                      - INTERNAL_ERROR
                    example: SITE_AUDIT_PLAN_REQUIRED
                  message:
                    type: string
                    description: Human-readable error message
                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.

````

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