---
title: "Force Refresh"
method: POST
path: "/{brand_id}/sites/{site_id}/agent-pages/refresh"
tags: ["agent-pages"]
---

# Force Refresh

`POST /{brand_id}/sites/{site_id}/agent-pages/refresh`

## Request

- Base URL: `https://api.scrunchai.com/v1`
- URL: `https://api.scrunchai.com/v1/{brand_id}/sites/{site_id}/agent-pages/refresh`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/scrunch/apis/scrunch-data-api/docs/:brand_id/sites/:site_id/agent-pages/refresh/post.ts> (a function with typed inputs; its response is checked against the schema)

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. A page whose origin now redirects to another path is not republished: the redirect is recorded, and the page retires at the next scheduled check, within about a day.

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.

Force Refresh does not add or remove pages, and does not change curated (Adaptive) content at the same path. To take an Agent Page down, use Agent Pages Unpublish. To add one, use Agent Pages Publish.

## Path parameters

- `brand_id` integer, required: The unique identifier for the brand that owns the site.
- `site_id` string, required: The ULID of the registered site whose Agent Pages you are refreshing.

## Request body

- AgentPagesRefreshRequest
  - `paths` string[], required: 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.

## Response `202`

One outcome per requested path, in request order, plus the brand's remaining quota.

- AgentPagesRefreshResponse
  - `results` AgentPagesRefreshResult[], required: One entry per requested path, in request order (after duplicates are merged).
    - `path` string, required: The normalized path this outcome applies to.
    - `outcome` 'queued' | 'not_found' | 'excluded' | 'cooldown' | 'rate_limited', required: 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` string, date-time, nullable: For `cooldown`, when this path can be refreshed again. Null otherwise.
  - `quota` AgentPagesRefreshQuotas, required: The brand's rolling windows. A path is queued only while both have room.
    - `hourly` AgentPagesRefreshQuota, required
      - `limit` integer, required: This window's cap.
      - `remaining` integer, required: Paths left in this window after this request.
      - `resets_at` string, date-time, nullable: When the oldest path counted in the window expires and frees a slot. Null when nothing has been used.
    - `daily` AgentPagesRefreshQuota, required
      - `limit` integer, required: This window's cap.
      - `remaining` integer, required: Paths left in this window after this request.
      - `resets_at` string, date-time, nullable: When the oldest path counted in the window expires and frees a slot. Null when nothing has been used.

## Other responses

- `404`: The site doesn't belong to the brand, or Agent Pages aren't enabled for the brand.
- `409`: 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`: Validation Error
- `429`: 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.
- `503`: The refresh couldn't be queued right now. Nothing was queued and no quota was used; retry shortly.

## Changes

- **2026-11-03** `e37811b6bc07`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/scrunch/apis/scrunch-data-api/changes/:brand_id/sites/:site_id/agent-pages/refresh/post.md)

---

[API](https://skmtc.dev/scrunch/apis/scrunch-data-api.md) - [All operations](https://skmtc.dev/scrunch/apis/scrunch-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scrunch/apis/scrunch-data-api/revisions/3c6aa69a6595?raw)
