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

# Get page content-intelligence report

> Returns a detailed content-intelligence report for a single tracked page, covering SEO performance, AI citations, conversion funnels, traffic, SERP position, keywords, page lifecycle, or activity.

**Example:** "Show me the SEO performance report for this page"

**Usage:** pick the report you want with `report_type` and pass the id of the page to report on. The keyword, SERP, and target-keyword reports need a market to be chosen. Scope the numbers with a date window, and for the AI-citations and keyword reports you can narrow by search text. The longer reports come back in pages of up to 100 (50 by default). Find the page id first by listing pages on the dashboard with the page URL or title.

**Response:** the requested report for that page: its metrics, trends, and the supporting rows for the chosen report type.



## OpenAPI

````yaml https://mcp.agent.writesonic.com/openapi.json post /api/v1/business/content-intelligence/page-report
openapi: 3.1.0
info:
  title: hq-backend — Business API
  description: Public business tool endpoints (API-key auth).
  version: 0.1.0
servers: []
security: []
paths:
  /api/v1/business/content-intelligence/page-report:
    post:
      tags:
        - business
      summary: Get page content-intelligence report
      description: >-
        Returns a detailed content-intelligence report for a single tracked
        page, covering SEO performance, AI citations, conversion funnels,
        traffic, SERP position, keywords, page lifecycle, or activity.


        **Example:** "Show me the SEO performance report for this page"


        **Usage:** pick the report you want with `report_type` and pass the id
        of the page to report on. The keyword, SERP, and target-keyword reports
        need a market to be chosen. Scope the numbers with a date window, and
        for the AI-citations and keyword reports you can narrow by search text.
        The longer reports come back in pages of up to 100 (50 by default). Find
        the page id first by listing pages on the dashboard with the page URL or
        title.


        **Response:** the requested report for that page: its metrics, trends,
        and the supporting rows for the chosen report type.
      operationId: get_page_report_api_v1_business_content_intelligence_page_report_post
      parameters:
        - name: x-project-id
          in: header
          required: true
          schema:
            type: string
            format: uuid
            description: Project ID for tenant scoping
            title: X-Project-Id
          description: Project ID for tenant scoping
        - name: X-Workspace-Id
          in: header
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: Overrides the key's workspace
            title: X-Workspace-Id
          description: Overrides the key's workspace
        - name: X-API-Key
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: User API key
            title: X-Api-Key
          description: User API key
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageReportArgs'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PageReportArgs:
      properties:
        report_type:
          $ref: '#/components/schemas/PageReportType'
          description: Which per-page report to return.
        page_id:
          type: string
          format: uuid
          title: Page Id
          description: >-
            The content-intelligence page to report on. Resolve it via
            get_ci_dashboard view=pages, search=<url or title> — the page is
            never referred to by id in natural language.
        market_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Market Id
          description: Market id; required for keyword/serp/target-keyword reports.
        curr_start:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Curr Start
          description: >-
            Current window start date - pairs with curr_end/prev_start/prev_end:
            provide all four or omit all four (defaults to trailing 30 days),
            else 422. Each range needs start<end, equal current/prior length,
            and prev_end<=curr_start.
        curr_end:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Curr End
          description: Current window end date - see curr_start.
        prev_start:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Prev Start
          description: Comparison window start date - see curr_start.
        prev_end:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Prev End
          description: Comparison window end date - see curr_start.
        keyword_intent:
          anyOf:
            - items:
                $ref: '#/components/schemas/ContentIntelligenceKeywordIntent'
              type: array
            - type: 'null'
          title: Keyword Intent
          description: Keyword-intent filter.
        page:
          type: integer
          minimum: 1
          title: Page
          description: Page number for paginated reports.
          default: 1
        size:
          type: integer
          maximum: 100
          minimum: 1
          title: Size
          description: Page size for paginated reports.
          default: 50
        sort:
          anyOf:
            - type: string
            - type: 'null'
          title: Sort
          description: >-
            Sort for AI-citations tab reports as '<key>:<dir>' (dir=asc|desc);
            valid keys are per-tab.
        search:
          anyOf:
            - type: string
              maxLength: 200
            - type: 'null'
          title: Search
          description: >-
            Substring filter for AI-citations tab reports
            (prompt/platform/topic) and the keywords report.
        category:
          $ref: '#/components/schemas/ActivityCategory'
          description: Category filter for the activity_log report.
          default: all
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
          description: Opaque pagination cursor for the activity_log report.
      type: object
      required:
        - report_type
        - page_id
      title: PageReportArgs
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PageReportType:
      type: string
      enum:
        - seo_performance
        - keywords
        - ai_citations
        - geo_visibility
        - lifecycle_status
        - ai_citations_prompts
        - ai_citations_platforms
        - ai_citations_topics
        - ai_activity
        - ai_search_funnel
        - seo_funnel
        - marketing_traffic
        - serp_intelligence
        - search_referrals
        - content_signals
        - activity_log
        - target_keywords
        - metadata
      title: PageReportType
    ContentIntelligenceKeywordIntent:
      type: string
      enum:
        - branded
        - non_branded
      title: ContentIntelligenceKeywordIntent
      description: >-
        The `/pages` `keyword_intent` filter: classifies a page by whether its

        primary target keyword contains any of the project's brand aliases.
        Modelled

        on `statuses` (multi-select; both-or-none selected = no filter). An
        *intent*

        signal, not a *traffic* signal.
    ActivityCategory:
      type: string
      enum:
        - all
        - changes
        - impact
        - alerts
      title: ActivityCategory
      description: |-
        User-facing tab classification for the activity log. Single-valued per
        event (each event lives in exactly one tab). `ALL` is the wire shorthand
        for "no category filter"; never appears on individual rows.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError

````