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.
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.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 ladder30, 15, 7, 3, 1days and filtered to values>=the floor.customInterval— the team’s custom override, ornullwhen 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.
