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

# Read published-page tracking status

> Operational status for saved URLs. Omit actionId for project-wide tracking management. A plan limit offers upgrade or replacement; a project limit requires a settings change. Paused pages retain history. Reserved pages consume capacity before a crawl. Supply replacementUrl to review affected actions and obtain an impact token. Never interpret these states as measured zero.



## OpenAPI

````yaml /openapi.json get /projects/{projectId}/outcomes/page-tracking
openapi: 3.1.0
info:
  title: DevTune API
  version: 2.0.0
  description: >-
    API for programmatic access to your AI visibility data, webhook
    subscriptions, and automation workflows. Use this API to integrate DevTune
    data into CI/CD pipelines, BI tools, AI agents, and operational systems.
servers:
  - url: https://devtune.ai/api/v2
    description: Production
security:
  - bearerAuth: []
paths:
  /projects/{projectId}/outcomes/page-tracking:
    get:
      summary: Read published-page tracking status
      description: >-
        Operational status for saved URLs. Omit actionId for project-wide
        tracking management. A plan limit offers upgrade or replacement; a
        project limit requires a settings change. Paused pages retain history.
        Reserved pages consume capacity before a crawl. Supply replacementUrl to
        review affected actions and obtain an impact token. Never interpret
        these states as measured zero.
      operationId: getPublishedPageTracking
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: replacementUrl
          in: query
          description: >-
            Page being considered for pausing; returns affected actions and an
            impact token.
          schema:
            type: string
            format: uri
        - name: actionId
          in: query
          required: false
          schema:
            type: string
            format: uuid
        - name: search
          in: query
          description: Empty to browse; otherwise at least three characters.
          schema:
            type: string
            maxLength: 200
        - name: after
          in: query
          description: Last choice URL from the previous page for cursor pagination.
          schema:
            type: string
            maxLength: 2048
        - name: offset
          in: query
          schema:
            type: integer
            minimum: 0
            maximum: 10000
            default: 0
      responses:
        '200':
          description: Published page tracking
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/PublishedPageTrackingData'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '429':
          $ref: '#/components/responses/RateLimitExceededError'
components:
  schemas:
    PublishedPageTrackingData:
      type: object
      required:
        - actionId
        - activePages
        - reservedPages
        - replacementImpact
        - pageLimit
        - configuredPageLimit
        - limitSource
        - pages
        - choices
        - hasMoreChoices
      properties:
        actionId:
          type:
            - string
            - 'null'
          format: uuid
        activePages:
          type: integer
          minimum: 0
        reservedPages:
          type: integer
          minimum: 0
          description: Slots reserved for selected pages awaiting a successful crawl.
        replacementImpact:
          anyOf:
            - type: 'null'
            - type: object
              required:
                - affectedActions
                - token
              properties:
                token:
                  type: string
                affectedActions:
                  type: array
                  items:
                    type: object
                    required:
                      - id
                      - title
                      - status
                    properties:
                      id:
                        type: string
                        format: uuid
                      title:
                        type: string
                      status:
                        type: string
        configuredPageLimit:
          type:
            - integer
            - 'null'
          minimum: 50
          maximum: 10000
        pageLimit:
          type: integer
          minimum: 0
        limitSource:
          type: string
          enum:
            - plan
            - project_setting
        pages:
          type: array
          items:
            type: object
            required:
              - url
              - status
            properties:
              url:
                type: string
                format: uri
              status:
                type: string
                enum:
                  - tracked
                  - paused
                  - plan_limit
                  - project_limit
                  - awaiting_crawl
                  - crawl_disabled
                  - page_unavailable
                  - outside_project
        choices:
          type: array
          items:
            type: object
            required:
              - url
              - state
            properties:
              url:
                type: string
                format: uri
              state:
                type: string
                enum:
                  - tracked
                  - paused
                  - priority
        hasMoreChoices:
          type: boolean
    Meta:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        projectId:
          type: string
          format: uuid
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
        status:
          type: integer
      required:
        - error
        - message
        - status
  responses:
    BadRequestError:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    UnauthorizedError:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ForbiddenError:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimitExceededError:
      description: Rate limit exceeded
      headers:
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  headers:
    X-RateLimit-Limit:
      description: Maximum requests per window
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in current window
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp when the window resets
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key with dtk_live_ prefix. Obtain it from API Keys in the account
        sidebar. New keys start with all supported scopes selected for the
        chosen project, and you can narrow them to specific read/write scopes as
        needed.

````