> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/api-reference-1/brand-kits/content-updates.md).

# Content Updates

## List Content Updates

> Track content updates.

```json
{"openapi":"3.0.1","info":{"title":"API V1","version":"v1"},"tags":[{"name":"Content Updates"}],"servers":[{"url":"https://api.airops.com","variables":{"defaultHost":{"default":"api.airops.com"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/public_api/brand_kits/{brand_kit_id}/content_updates/list":{"post":{"summary":"List Content Updates","description":"Track content updates.","tags":["Content Updates"],"operationId":"listBrandKitsContentUpdates","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"nullable":true,"type":"integer","description":"Unique identifier for the content update"},"url":{"nullable":true,"type":"string","description":"The URL associated with the content update"},"type":{"nullable":true,"type":"string","description":"Type of content update","enum":["page_published","page_refreshed",null]},"source":{"nullable":true,"type":"string","description":"Source that created the content update","enum":["track_event_step","track_event_grid_column","wordpress_native_cms_integration","webflow_native_cms_integration","shopify_native_cms_integration","ghost_native_cms_integration","webflow_grid_export","wordpress_grid_export","mcp","api","web_page_change_tracking",null]},"brand_kit_id":{"nullable":true,"type":"integer","description":"ID of the associated Brand Kit"},"workspace_id":{"nullable":true,"type":"integer","description":"ID of the associated workspace"},"created_at":{"nullable":true,"type":"string","description":"When the content update was created"},"updated_at":{"nullable":true,"type":"string","description":"When the content update was last updated"},"change_detection":{"nullable":true,"type":"object","description":"Change detection for this content update: detection status, the categories of detected changes, and whether a before/after diff is available. On a single-update fetch it also carries a nested `changes` array (the before/after diff). Null when change detection has not run for the update, including workspaces where it is not enabled."},"metadata_entries":{"nullable":true,"type":"array","description":"Included metadata_entries collection (when requested via includes param)","items":{"type":"object"}}}}},"meta":{"type":"object","properties":{"page":{"type":"integer"},"per_page":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"}}}},"required":["data","meta"]}}}},"400":{"description":"Bad request - invalid parameters, filters, or sort options"},"401":{"description":"Unauthorized - invalid or missing authentication token"},"404":{"description":"Not found - resource does not exist"},"412":{"description":"Precondition failed - AEO not configured for this brand kit"}},"parameters":[{"name":"brand_kit_id","in":"path","required":true,"schema":{"type":"integer"},"description":"The Brand Kit ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workspace_id":{"type":"integer","description":"ID of the workspace to retrieve results from. If not provided, returns results from all workspaces the user belongs to."},"brand_kit_id":{"type":"integer","description":"Optional Brand Kit ID to filter content updates by"},"filters":{"type":"array","description":"Filter results. Nested fields (e.g. `writing_rules.text`) filter within an included association and require that association in `includes`.\n\n**Available fields:**\n- **url** (EQUALS, CONTAINS): Filter by content update URL\n- **type** (EQ, IN): Filter by content update type\n- **source** (EQ, IN): Filter by content update source\n- **brand_kit_id** (EQ): Filter by Brand Kit ID\n- **created_at** (GT, LT, GEQ, LEQ): Filter by creation date\n- **has_changes** (EQ): Filter to content updates where change detection found at least one confirmed change (true) or found none / has no detection run (false)","items":{"type":"object","properties":{"field":{"type":"string","enum":["url","type","source","brand_kit_id","created_at","has_changes"],"description":"Field to filter on. url: Filter by content update URL; type: Filter by content update type (values: page_published, page_refreshed); source: Filter by content update source (values: track_event_step, track_event_grid_column, wordpress_native_cms_integration, webflow_native_cms_integration, shopify_native_cms_integration, ghost_native_cms_integration, webflow_grid_export, wordpress_grid_export, mcp, api, web_page_change_tracking); brand_kit_id: Filter by Brand Kit ID; created_at: Filter by creation date; has_changes: Filter to content updates where change detection found at least one confirmed change (true) or found none / has no detection run (false)"},"operator":{"type":"string","enum":["EQUALS","CONTAINS","EQ","IN","GT","LT","GEQ","LEQ"],"description":"Filter operator.\n\n- **EQ/EQUALS**: Exact match\n- **NEQ**: Not equal\n- **GT/GEQ/LT/LEQ**: Numeric/date comparisons\n- **CONTAINS**: Partial text match\n- **STARTS_WITH**: Text prefix match\n- **IN**: Match any value in array\n- **HAS_ALL**: (tags filter) match only items having every listed value\n- **NOT_IN**: (tags filter) match only items having none of the listed values"},"value":{"description":"Filter value (type depends on field and operator)"}},"required":["field","operator","value"]}},"includes":{"type":"array","description":"Include related resources.\n\n**Available includes:**\n- **metadata_entries**: Include metadata key-value pairs for each event","items":{"type":"string","enum":["metadata_entries"]}},"fields":{"type":"array","description":"Select additional fields to return.\n\n**Optional fields:**\n- **id**: Unique identifier for the content update\n- **url**: The URL associated with the content update\n- **type**: Type of content update\n- **source**: Source that created the content update\n- **brand_kit_id**: ID of the associated Brand Kit\n- **workspace_id**: ID of the associated workspace\n- **created_at**: When the content update was created\n- **updated_at**: When the content update was last updated\n- **change_detection**: Change detection for this content update: detection status, the categories of detected changes, and whether a before/after diff is available. On a single-update fetch it also carries a nested `changes` array (the before/after diff). Null when change detection has not run for the update, including workspaces where it is not enabled.","items":{"type":"string","enum":["id","url","type","source","brand_kit_id","workspace_id","created_at","updated_at","change_detection"]}},"sort":{"type":"string","enum":["created_at","-created_at","updated_at","-updated_at","url","-url"],"description":"Sort field. Prefix with - for descending.\n\n**Available sort fields:**\n- **created_at/-created_at**: Sort by creation date\n- **updated_at/-updated_at**: Sort by last update date\n- **url/-url**: Sort alphabetically by URL","default":"-created_at"},"page":{"type":"integer","default":1,"description":"Page number"},"per_page":{"type":"integer","default":25,"maximum":100,"description":"Items per page"}}}}}}}}}}
```

## Create Content Updates

> Track content updates.

```json
{"openapi":"3.0.1","info":{"title":"API V1","version":"v1"},"tags":[{"name":"Content Updates"}],"servers":[{"url":"https://api.airops.com","variables":{"defaultHost":{"default":"api.airops.com"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/public_api/brand_kits/{brand_kit_id}/content_updates":{"post":{"summary":"Create Content Updates","description":"Track content updates.","tags":["Content Updates"],"operationId":"createBrandKitsContentUpdates","responses":{"201":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"nullable":true,"type":"integer","description":"Unique identifier for the content update"},"url":{"nullable":true,"type":"string","description":"The URL associated with the content update"},"type":{"nullable":true,"type":"string","description":"Type of content update","enum":["page_published","page_refreshed",null]},"source":{"nullable":true,"type":"string","description":"Source that created the content update","enum":["track_event_step","track_event_grid_column","wordpress_native_cms_integration","webflow_native_cms_integration","shopify_native_cms_integration","ghost_native_cms_integration","webflow_grid_export","wordpress_grid_export","mcp","api","web_page_change_tracking",null]},"brand_kit_id":{"nullable":true,"type":"integer","description":"ID of the associated Brand Kit"},"workspace_id":{"nullable":true,"type":"integer","description":"ID of the associated workspace"},"created_at":{"nullable":true,"type":"string","description":"When the content update was created"},"updated_at":{"nullable":true,"type":"string","description":"When the content update was last updated"},"change_detection":{"nullable":true,"type":"object","description":"Change detection for this content update: detection status, the categories of detected changes, and whether a before/after diff is available. On a single-update fetch it also carries a nested `changes` array (the before/after diff). Null when change detection has not run for the update, including workspaces where it is not enabled."},"metadata_entries":{"nullable":true,"type":"array","description":"Included metadata_entries collection (when requested via includes param)","items":{"type":"object"}}}}},"required":["data"]}}}},"400":{"description":"Bad request - invalid parameters, filters, or sort options"},"401":{"description":"Unauthorized - invalid or missing authentication token"},"404":{"description":"Not found - resource does not exist"},"412":{"description":"Precondition failed - AEO not configured for this brand kit"},"422":{"description":"Unprocessable entity - validation failed"}},"parameters":[{"name":"brand_kit_id","in":"path","required":true,"schema":{"type":"integer"},"description":"The Brand Kit ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"The page URL to track"},"type":{"type":"string","enum":["page_published","page_refreshed"],"description":"Type of content update"},"custom_attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Attribute key"},"value":{"type":"string","description":"Attribute value"}},"required":["key","value"]},"description":"Optional custom metadata key-value pairs"}},"required":["url","type"]}}}}}}}}
```

## Get Content Update

> Track content updates.

```json
{"openapi":"3.0.1","info":{"title":"API V1","version":"v1"},"tags":[{"name":"Content Updates"}],"servers":[{"url":"https://api.airops.com","variables":{"defaultHost":{"default":"api.airops.com"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/public_api/brand_kits/{brand_kit_id}/content_updates/{id}":{"get":{"summary":"Get Content Update","description":"Track content updates.","tags":["Content Updates"],"operationId":"getBrandKitsContentUpdate","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"nullable":true,"type":"integer","description":"Unique identifier for the content update"},"url":{"nullable":true,"type":"string","description":"The URL associated with the content update"},"type":{"nullable":true,"type":"string","description":"Type of content update","enum":["page_published","page_refreshed",null]},"source":{"nullable":true,"type":"string","description":"Source that created the content update","enum":["track_event_step","track_event_grid_column","wordpress_native_cms_integration","webflow_native_cms_integration","shopify_native_cms_integration","ghost_native_cms_integration","webflow_grid_export","wordpress_grid_export","mcp","api","web_page_change_tracking",null]},"brand_kit_id":{"nullable":true,"type":"integer","description":"ID of the associated Brand Kit"},"workspace_id":{"nullable":true,"type":"integer","description":"ID of the associated workspace"},"created_at":{"nullable":true,"type":"string","description":"When the content update was created"},"updated_at":{"nullable":true,"type":"string","description":"When the content update was last updated"},"change_detection":{"nullable":true,"type":"object","description":"Change detection for this content update: detection status, the categories of detected changes, and whether a before/after diff is available. On a single-update fetch it also carries a nested `changes` array (the before/after diff). Null when change detection has not run for the update, including workspaces where it is not enabled."},"metadata_entries":{"nullable":true,"type":"array","description":"Included metadata_entries collection (when requested via includes param)","items":{"type":"object"}}}}},"required":["data"]}}}},"400":{"description":"Bad request - invalid parameters, filters, or sort options"},"401":{"description":"Unauthorized - invalid or missing authentication token"},"404":{"description":"Not found - resource does not exist"},"412":{"description":"Precondition failed - AEO not configured for this brand kit"}},"parameters":[{"name":"brand_kit_id","in":"path","required":true,"schema":{"type":"integer"},"description":"The Brand Kit ID"},{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"The resource ID"}]}}}}
```

## Destroy Content Updates

> Track content updates.

```json
{"openapi":"3.0.1","info":{"title":"API V1","version":"v1"},"tags":[{"name":"Content Updates"}],"servers":[{"url":"https://api.airops.com","variables":{"defaultHost":{"default":"api.airops.com"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/public_api/brand_kits/{brand_kit_id}/content_updates/{id}":{"delete":{"summary":"Destroy Content Updates","description":"Track content updates.","tags":["Content Updates"],"operationId":"destroyBrandKitsContentUpdates","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad request - invalid parameters, filters, or sort options"},"401":{"description":"Unauthorized - invalid or missing authentication token"},"404":{"description":"Not found - resource does not exist"},"412":{"description":"Precondition failed - AEO not configured for this brand kit"}},"parameters":[{"name":"brand_kit_id","in":"path","required":true,"schema":{"type":"integer"},"description":"The Brand Kit ID"},{"name":"id","in":"path","required":true,"schema":{"type":"integer"},"description":"The resource ID"}]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/api-reference-1/brand-kits/content-updates.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
