Skip to main content

Projects

A project is the top-level container for AI Visibility monitoring. Each project has a primary brand, a set of AI providers, and a schedule that controls automatic prompt execution.

List projects

Retrieve all AI Visibility projects for an account. Results include metadata like topic and prompt counts, configured AI providers, and the primary brand domain.

Operation: query GetAiVisibilityProjects($accountId: ObjectID!) { getAiVisibilityProjects( accountId: $accountId first: 10 ) { nodes { id rawId name totalTopics totalPrompts aiProviderTypes primaryBrandDomain primaryBrandRawId scheduleCadence nextScheduleRunAt autoCrawlEnabled freshnessThresholdDays createdAt updatedAt } pageInfo { hasNextPage endCursor } totalCount } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ" }
GetAiVisibilityProjectsTry in Explorer
GraphQL
query GetAiVisibilityProjects($accountId: ObjectID!) {
getAiVisibilityProjects(
accountId: $accountId
first: 10
) {
nodes {
id
rawId
name
totalTopics
totalPrompts
aiProviderTypes
primaryBrandDomain
primaryBrandRawId
scheduleCadence
nextScheduleRunAt
autoCrawlEnabled
freshnessThresholdDays
createdAt
updatedAt
}
pageInfo {
hasNextPage
endCursor
}
totalCount
}
}

You can search projects by name using the search parameter:

Operation: query SearchAiVisibilityProjects($accountId: ObjectID!, $search: String!) { getAiVisibilityProjects( accountId: $accountId first: 10 search: $search ) { nodes { id name primaryBrandDomain } totalCount } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "search": "my brand" }
SearchAiVisibilityProjectsTry in Explorer
GraphQL
query SearchAiVisibilityProjects($accountId: ObjectID!, $search: String!) {
getAiVisibilityProjects(
accountId: $accountId
first: 10
search: $search
) {
nodes {
id
name
primaryBrandDomain
}
totalCount
}
}

Sorting

Projects can be sorted by: name, primaryBrandDomain, totalTopics, totalPrompts.

Get a single project

Fetch a specific project by its ID:

Operation: query GetAiVisibilityProject( $accountId: ObjectID! $aiVisibilityProjectId: ObjectID! ) { getAiVisibilityProject( accountId: $accountId aiVisibilityProjectId: $aiVisibilityProjectId ) { id rawId name scheduleCadence nextScheduleRunAt autoCrawlEnabled freshnessThresholdDays primaryBrand { id rawId name } aiProviders { id name type } createdAt updatedAt } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "aiVisibilityProjectId": "QWlWaXNpYmlsaXR5UHJvamVjdDE" }
GetAiVisibilityProjectTry in Explorer
GraphQL
query GetAiVisibilityProject(
$accountId: ObjectID!
$aiVisibilityProjectId: ObjectID!
) {
getAiVisibilityProject(
accountId: $accountId
aiVisibilityProjectId: $aiVisibilityProjectId
) {
id
rawId
name
scheduleCadence
nextScheduleRunAt
autoCrawlEnabled
freshnessThresholdDays
primaryBrand {
id
rawId
name
}
aiProviders {
id
name
type
}
createdAt
updatedAt
}
}

Create a project

Creating a project requires a name, brand name, and brand domain. The primary brand is automatically created as an own type brand.

Operation: mutation CreateAiVisibilityProject( $accountId: ObjectID! $name: String! $brandName: String! $brandDomain: String! $scheduleCadence: AiVisibilityScheduleCadence ) { createAiVisibilityProject( input: { accountId: $accountId name: $name brandName: $brandName brandDomain: $brandDomain scheduleCadence: $scheduleCadence } ) { aiVisibilityProject { id rawId name scheduleCadence nextScheduleRunAt createdAt } } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "name": "My Brand Monitoring", "brandName": "Lumar", "brandDomain": "lumar.io", "scheduleCadence": "Daily" }
CreateAiVisibilityProjectTry in Explorer
GraphQL
mutation CreateAiVisibilityProject(
$accountId: ObjectID!
$name: String!
$brandName: String!
$brandDomain: String!
$scheduleCadence: AiVisibilityScheduleCadence
) {
createAiVisibilityProject(
input: {
accountId: $accountId
name: $name
brandName: $brandName
brandDomain: $brandDomain
scheduleCadence: $scheduleCadence
}
) {
aiVisibilityProject {
id
rawId
name
scheduleCadence
nextScheduleRunAt
createdAt
}
}
}

Schedule cadence

The scheduleCadence field controls how often prompts are automatically sent to AI providers:

ValueDescription
dailyEvery day (default)
weeklyOnce per week
every_two_weeksEvery two weeks
monthlyOnce per month

The schedule cadence also affects the maximum number of prompts allowed in a project. More frequent cadences allow fewer prompts per project.

AI providers

By default, all AI providers included in your subscription are linked to the project. You can optionally specify aiVisibilityAiProviderIds to select a subset of providers.

Update a project

Update a project's name, schedule cadence, or content evaluation settings:

Operation: mutation UpdateAiVisibilityProject( $accountId: ObjectID! $aiVisibilityProjectId: ObjectID! $name: String $scheduleCadence: AiVisibilityScheduleCadence $autoCrawlEnabled: Boolean $freshnessThresholdDays: Int ) { updateAiVisibilityProject( input: { accountId: $accountId aiVisibilityProjectId: $aiVisibilityProjectId name: $name scheduleCadence: $scheduleCadence autoCrawlEnabled: $autoCrawlEnabled freshnessThresholdDays: $freshnessThresholdDays } ) { aiVisibilityProject { id name scheduleCadence autoCrawlEnabled freshnessThresholdDays } } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "aiVisibilityProjectId": "QWlWaXNpYmlsaXR5UHJvamVjdDE", "name": "Updated Project Name", "scheduleCadence": "Weekly", "autoCrawlEnabled": true, "freshnessThresholdDays": 14 }
UpdateAiVisibilityProjectTry in Explorer
GraphQL
mutation UpdateAiVisibilityProject(
$accountId: ObjectID!
$aiVisibilityProjectId: ObjectID!
$name: String
$scheduleCadence: AiVisibilityScheduleCadence
$autoCrawlEnabled: Boolean
$freshnessThresholdDays: Int
) {
updateAiVisibilityProject(
input: {
accountId: $accountId
aiVisibilityProjectId: $aiVisibilityProjectId
name: $name
scheduleCadence: $scheduleCadence
autoCrawlEnabled: $autoCrawlEnabled
freshnessThresholdDays: $freshnessThresholdDays
}
) {
aiVisibilityProject {
id
name
scheduleCadence
autoCrawlEnabled
freshnessThresholdDays
}
}
}

Content evaluation settings

  • autoCrawlEnabled -- When true, cited pages from your brand's domains are automatically crawled and evaluated after each prompt run
  • freshnessThresholdDays -- Number of days (1-90, default 7) before a previously crawled URL is considered stale and re-crawled
caution

Changing scheduleCadence may reduce the allowed prompt count. If the current prompt count exceeds the new limit, the update will fail with AI_VISIBILITY_PROMPTS_LIMIT_REACHED.

Delete a project

Soft-deletes a project. This is a destructive operation.

Operation: mutation DeleteAiVisibilityProject( $accountId: ObjectID! $aiVisibilityProjectId: ObjectID! ) { deleteAiVisibilityProject( input: { accountId: $accountId aiVisibilityProjectId: $aiVisibilityProjectId } ) { aiVisibilityProject { id } } }Variables: { "accountId": "TjAwN0FjY291bnQxMjM0NQ", "aiVisibilityProjectId": "QWlWaXNpYmlsaXR5UHJvamVjdDE" }
DeleteAiVisibilityProjectTry in Explorer
GraphQL
mutation DeleteAiVisibilityProject(
$accountId: ObjectID!
$aiVisibilityProjectId: ObjectID!
) {
deleteAiVisibilityProject(
input: {
accountId: $accountId
aiVisibilityProjectId: $aiVisibilityProjectId
}
) {
aiVisibilityProject {
id
}
}
}

Schema reference