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

# AI Visibility Models

> List the AI models used for AI-Visibility tracking, toggle which ones run, and set the refresh cadence.

Lists the AI models available for **AI Visibility** tracking for a team, each with its `isActive` state and a `canEnable` flag reflecting your plan.

Enabling a model lets SnowSEO run that LLM (e.g. an OpenAI, Anthropic, Google, or Perplexity model) against your tracked prompts on future AI-visibility refreshes. Some models are plan-gated: `canEnable` is `true` only when the model has no plan restriction (`planId` is `null`) or its `planId` matches your team's active plan.

<Note>
  Every request is team-scoped — pass the `teamId` of the brand you're managing. Toggling a model or changing the cadence takes effect on the next AI-visibility refresh.
</Note>

See also the [AI Visibility](/docs/api-reference/endpoints/ai-visibility) overview and [Track Prompts](/docs/api-reference/endpoints/track-prompts) for managing the prompts these models run against.

***

## Enable or Disable a Model

`PATCH /ai-models/{modelId}`

Turns one AI visibility model on or off for a team. Body: `teamId` (required) and `isActive` (required boolean). Enabling a plan-gated model is rejected with `403` when your team's active plan does not include it, and `404` if the model doesn't exist. Returns `{ "success": true }`.

***

## Get Refresh Interval

`GET /ai-models/refresh-interval`

Returns the team's effective AI-visibility refresh cadence, in days. Requires `teamId`. Response:

* `planFloor` — the minimum cadence (fewest days between refreshes) your plan allows.
* `allowedIntervals` — the selectable cadences for your plan, drawn from the ladder `30, 15, 7, 3, 1` days and filtered to values `>=` the floor.
* `customInterval` — the team's custom override, or `null` when none is set.
* `effectiveInterval` — the cadence actually used: the custom value when set (clamped to at least the floor), otherwise the plan floor.

***

## Set Refresh Interval

`PATCH /ai-models/refresh-interval`

Sets or clears the team's custom refresh cadence. Body: `teamId` (required) and `interval` (integer days, or `null` to clear the override and follow the plan floor). The value must be one of the plan's `allowedIntervals`; anything else returns `403`. Lower numbers refresh more often. Returns the same `planFloor`, `allowedIntervals`, `customInterval`, and `effectiveInterval` fields as the GET route, plus `success: true`.
