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

# Force Refresh

> Refetch existing Agent Pages from your live site now, then re-optimize and republish them, whether or not they changed. Use it after updating pages on your site so AI agents see the new version without waiting for the next scheduled check.

Only pages that already have an active Agent Page can be refreshed. The endpoint returns one outcome per requested path, and queued refreshes run in the background.

Limits: 100 paths per request; each path once every 5 minutes; per brand, 500 refreshes per rolling hour and 5,000 per rolling 24 hours.



## OpenAPI

````yaml /api-reference/openapi.json post /{brand_id}/sites/{site_id}/agent-pages/refresh
openapi: 3.1.0
info:
  title: Scrunch Data API
  version: 0.1.0
servers:
  - url: https://api.scrunchai.com/v1
security: []
paths:
  /{brand_id}/sites/{site_id}/agent-pages/refresh:
    post:
      tags:
        - agent-pages
      summary: Force Refresh
      description: >-
        Refetch existing Agent Pages from your live site now, then re-optimize
        and republish them, whether or not they changed. Use it after updating
        pages on your site so AI agents see the new version without waiting for
        the next scheduled check.


        Only pages that already have an active Agent Page can be refreshed. The
        endpoint returns one outcome per requested path, and queued refreshes
        run in the background.


        Limits: 100 paths per request; each path once every 5 minutes; per
        brand, 500 refreshes per rolling hour and 5,000 per rolling 24 hours.
      operationId: refreshAgentPages
      parameters:
        - name: brand_id
          in: path
          required: true
          schema:
            type: integer
            title: Brand Id
            description: The unique identifier for the brand that owns the site.
          description: The unique identifier for the brand that owns the site.
        - name: site_id
          in: path
          required: true
          schema:
            type: string
            title: Site Id
            description: >-
              The ULID of the registered site whose Agent Pages you are
              refreshing.
          description: >-
            The ULID of the registered site whose Agent Pages you are
            refreshing.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentPagesRefreshRequest'
      responses:
        '202':
          description: >-
            One outcome per requested path, in request order, plus the brand's
            remaining quota.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentPagesRefreshResponse'
              example:
                results:
                  - path: /pricing
                    outcome: queued
                    retry_after: null
                  - path: /blog/launch
                    outcome: cooldown
                    retry_after: '2026-10-07T18:42:10Z'
                  - path: /careers
                    outcome: not_found
                    retry_after: null
                quota:
                  hourly:
                    limit: 500
                    remaining: 499
                    resets_at: '2026-10-07T19:02:41Z'
                  daily:
                    limit: 5000
                    remaining: 4987
                    resets_at: '2026-10-08T09:15:03Z'
        '404':
          description: >-
            The site doesn't belong to the brand, or Agent Pages aren't enabled
            for the brand.
        '409':
          description: >-
            Agent Pages aren't active on this site (or the site isn't serving
            through its CDN). Nothing was queued and no quota was used.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: >-
            The brand's hourly or daily refresh quota is used up and nothing
            could be queued, or another refresh request for the same brand is
            still being processed.
          headers:
            Retry-After:
              description: >-
                Seconds to wait: until every exhausted quota window has a free
                slot, or 1 when another request for the brand is in progress.
              schema:
                type: integer
        '503':
          description: >-
            The refresh couldn't be queued right now. Nothing was queued and no
            quota was used; retry shortly.
      security:
        - HTTPBearer:
            - optimize
components:
  schemas:
    AgentPagesRefreshRequest:
      properties:
        paths:
          items:
            type: string
          type: array
          maxItems: 100
          minItems: 1
          title: Paths
          description: >-
            Site-relative paths to refresh, e.g. `/pricing`. 1 to 100 entries,
            each up to 2,048 characters. Full or protocol-relative URLs are
            rejected. Paths are trimmed and normalized (lowercased, trailing
            slash and query string dropped), and duplicates after normalization
            are merged. `/` is the homepage.
      type: object
      required:
        - paths
      title: AgentPagesRefreshRequest
    AgentPagesRefreshResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/AgentPagesRefreshResult'
          type: array
          title: Results
          description: >-
            One entry per requested path, in request order (after duplicates are
            merged).
        quota:
          $ref: '#/components/schemas/AgentPagesRefreshQuotas'
          description: >-
            The brand's remaining refresh quota. A path is queued only while
            both windows have room.
      type: object
      required:
        - results
        - quota
      title: AgentPagesRefreshResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    AgentPagesRefreshResult:
      properties:
        path:
          type: string
          title: Path
          description: The normalized path this outcome applies to.
        outcome:
          type: string
          enum:
            - queued
            - not_found
            - excluded
            - cooldown
            - rate_limited
          title: Outcome
          description: >-
            What happened to this path. `queued`: accepted; the page will be
            refetched, re-optimized and republished. `not_found`: the site has
            no active Agent Page at this path. `excluded`: the site's Ignore or
            Priority List doesn't allow this path. `cooldown`: this page was
            refreshed in the last 5 minutes; retry after `retry_after`.
            `rate_limited`: the brand's hourly or daily quota ran out partway
            through this batch.
        retry_after:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Retry After
          description: >-
            For `cooldown`, when this path can be refreshed again. Null
            otherwise.
      type: object
      required:
        - path
        - outcome
      title: AgentPagesRefreshResult
    AgentPagesRefreshQuotas:
      properties:
        hourly:
          $ref: '#/components/schemas/AgentPagesRefreshQuota'
          description: 500 refreshes per brand per rolling hour.
        daily:
          $ref: '#/components/schemas/AgentPagesRefreshQuota'
          description: 5,000 refreshes per brand per rolling 24 hours.
      type: object
      required:
        - hourly
        - daily
      title: AgentPagesRefreshQuotas
      description: The brand's rolling windows. A path is queued only while both have room.
    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
    AgentPagesRefreshQuota:
      properties:
        limit:
          type: integer
          title: Limit
          description: This window's cap.
        remaining:
          type: integer
          title: Remaining
          description: Refreshes left in this window after this request.
        resets_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Resets At
          description: >-
            When the oldest refresh in the window expires and frees a slot. Null
            when nothing has been used.
      type: object
      required:
        - limit
        - remaining
      title: AgentPagesRefreshQuota
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

## Related topics

- [Agent Pages Force Refresh: Update Pages on Demand](/api-reference/agent-pages/force-refresh-overview.md)
- [Competitive Battlecard Generator](/mcp/workflows/competitive-battlecard.md)
- [Troubleshoot the Scrunch Data Studio Connector](/integrations/data-studio-troubleshooting.md)


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