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

# Refresh catalog

> Re-fetch a stored URL feed and optionally re-run activation

`POST /api/v2/buyer/advertisers/{advertiserId}/catalogs/{catalogId}/refresh`

Manually re-fetches a catalog's **stored URL feed**, creates a new catalog version when the data changed, and — when asked — executes activation jobs from the active transform. Use it to pull the latest feed on demand between scheduled syncs.

<Note>
  Refresh only applies to catalogs backed by a feed `url`. A catalog synced with inline `items` has no stored feed to re-fetch — push new data with [sync catalogs](/v2/buyer/advertisers/tasks/sync-catalogs) instead.
</Note>

## Request

```bash curl theme={null}
curl -X POST https://api.interchange.io/api/v2/buyer/advertisers/12345/catalogs/summer-sale-2026/refresh \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "executeActivation": true }'
```

## Parameters

| Field               | Type          | Required | Notes                                                                                                                                                                                    |
| ------------------- | ------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `advertiserId`      | string (path) | Yes      | Unique identifier for the advertiser                                                                                                                                                     |
| `catalogId`         | string (path) | Yes      | Buyer-assigned `catalog_id` or the platform `catalogId` from [list catalogs](/v2/buyer/advertisers/tasks/list-catalogs)                                                                  |
| `executeActivation` | boolean       | No       | When `true`, a successful refresh with an active transform immediately saves and executes the latest activation plan, creating creative-generation and syndication jobs. Default `false` |
| `adcpAgentIds`      | array         | No       | Seller agents to evaluate/execute for activation after refresh. If omitted, the catalog's enabled syndication targets are used. Default `[]`                                             |

## Response

```json theme={null}
{
  "catalog": {
    "catalog_id": "summer-sale-2026",
    "action": "updated",
    "platform_id": "14",
    "item_count": 6,
    "items_approved": 6,
    "items_pending": 0,
    "items_rejected": 0,
    "health_status": "healthy"
  },
  "refreshRun": {
    "refreshRunId": "77",
    "status": "synced",
    "httpStatus": 200,
    "sourceContentHash": "abc123…",
    "itemCount": 6,
    "activationSkippedReason": null,
    "error": null,
    "startedAt": "2026-06-07T12:00:00Z",
    "completedAt": "2026-06-07T12:00:03Z"
  },
  "activation": null
}
```

* **`catalog`** — the sync result, with `action` `created`, `updated`, `unchanged`, `failed`, or `deleted`.
* **`refreshRun`** — the fetch run: `status` (`syncing`, `synced`, `unchanged`, `failed`), the feed `httpStatus`, the resulting `itemCount`, and `activationSkippedReason` when activation was requested but skipped (e.g. the feed was not modified).
* **`activation`** — the [execution result](/v2/buyer/advertisers/tasks/execute-catalog-activation) when `executeActivation` was `true` and activation ran; otherwise `null`.

## Errors

* `400 VALIDATION_ERROR` — the catalog has no stored feed `url` ("Catalog does not have a stored feed URL…"), or the feed URL fails public-URL validation.
* `404 NOT_FOUND` — `advertiserId` or `catalogId` does not exist or is not visible to the authenticated account.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Sync catalogs" href="/v2/buyer/advertisers/tasks/sync-catalogs" icon="arrows-rotate">
    Push catalog feeds and items
  </Card>

  <Card title="Save catalog transform" href="/v2/buyer/advertisers/tasks/save-catalog-transform" icon="shuffle">
    Define the fan-out rules
  </Card>

  <Card title="Preview activation" href="/v2/buyer/advertisers/tasks/preview-catalog-activation" icon="eye">
    Dry-run the fan-out
  </Card>

  <Card title="Execute activation" href="/v2/buyer/advertisers/tasks/execute-catalog-activation" icon="play">
    Materialize the plan into jobs
  </Card>
</CardGroup>
