Brands
A brand is a website you monitor. You create one from a domain (POST /brands); its name, description, and logo are enriched automatically in
the background. Brand creation is idempotent per account + domain — posting a
domain you already have returns the existing brand unchanged.
A brand’s status is active once it’s claimed by your account. Brands are not
deleted through the API.
How many brands you can create is set by your plan (
features.brands from
GET /plan). Hitting it returns 409 limit_reached with an
upgradeUrl.Prompts
Prompts are the questions asked about a brand in each scan (e.g. “What are the best project management tools?”). Each is at most 300 characters.- Add prompts with
POST /brands/{id}/prompts. - Edit or toggle them with
PATCH /brands/{id}/prompts/{promptId}.
Disable, don’t delete
Prompts are never hard-deleted. Settingactive: false disables a prompt but
keeps its scan history; setting active: true re-enables it. Only active
prompts are scanned and count against your plan’s prompt limit.
The prompt limit is account-wide — the total active prompts across all your
brands — so re-enabling a prompt can be rejected with 409 limit_reached if
you’re at the cap.
Location
A brand’s location is the market its AI answers are measured from. It maps directly to how the underlying AI web search is geolocated.location.mode is one of:
Set it with
PATCH /brands/{id} — e.g. { "location": { "mode": "worldwide" } }
to clear scope.
Use the Geo endpoints for valid values
To avoid typos, don’t guess country or city names — look them up:GET /geo/countries→ every validcountrycode (ISO 3166-1 alpha-2, e.g.US,GB,ES).GET /geo/countries/{code}/cities→ the validcitynames for that country (major cities, population ≥ 100k). An empty list means only country-level scope is available there.
country is case-insensitive; city must match a value from the list (it’s
canonicalized to the dataset’s spelling). Invalid values return
400 bad_request.
Plans & limits
GET /plan returns your plan and its features:
brands— max brands.prompts— max active prompts across all brands.frequency—one-time(free) ordaily(paid). Daily scanning is what keeps metrics fresh.models— the AI platforms scanned (chatgpttoday).
409 limit_reached with an
upgradeUrl pointing at the pricing page — so an agent can route the user to
upgrade instead of just failing.