Skip to main content
Track how your brand (and competitors) appear across LLM answers. The AI Visibility API exposes Brand Radar campaigns, the Prompt Research Engine, and a consolidated visibility score overview. Function: public-api-ai-visibility Base path: https://app.keupera.com/api/v1/public-api-ai-visibility

Brand Radar

List campaigns

GET /brand-radar/campaigns
ParameterTypeDescription
website_idUUIDTarget website

Response

{
  "data": [
    {
      "id": "uuid",
      "prompt": "Best project management tools",
      "brands": [{ "name": "MyBrand", "domain": "mybrand.com" }],
      "competitors": [{ "name": "Competitor", "domain": "comp.com" }],
      "frequency": 7,
      "status": "active",
      "languages": ["en"],
      "created_at": "2024-01-15T10:00:00Z"
    }
  ]
}

Create a campaign

POST /brand-radar/campaigns

Request body

{
  "website_id": "uuid",
  "prompt": "Best project management tools for teams",
  "brands": [{ "name": "MyBrand", "domain": "mybrand.com" }],
  "competitors": [{ "name": "Competitor", "domain": "comp.com" }],
  "frequency": 7,
  "languages": ["en", "de"]
}
FieldRequiredDescription
promptYesThe prompt/query to track
brandsYesArray of brand objects (name, domain)
competitorsNoCompetitor brands to track alongside
frequencyNoRun frequency in days (default 7)
languagesNoLanguage codes (max 3, default ["en"])

Response (201)

{ "data": { "id": "uuid", "prompt": "...", "status": "active" } }

Delete a campaign

DELETE /brand-radar/campaigns/:id

Response

{ "success": true }

Update a campaign

PATCH /brand-radar/campaigns/:id

Request body

{
  "frequency": 3,
  "status": "paused",
  "toggle_competitor": {
    "name": "CompetitorName",
    "disabled": true
  }
}
FieldTypeDescription
frequencyintegerUpdate run frequency
statusstringactive or paused
toggle_competitorobjectEnable/disable competitor tracking
toggle_competitor.namestringCompetitor name
toggle_competitor.disabledbooleantrue to disable, false to enable

Get campaign results

GET /brand-radar/campaigns/:id/results
ParameterTypeDefaultDescription
limitinteger20Number of results

Response

{
  "data": [
    {
      "id": "uuid",
      "campaign_id": "uuid",
      "run_at": "2024-01-20T10:00:00Z",
      "mentions": [
        { "brand": "MyBrand", "mentioned": true, "rank": 1, "context": "..." }
      ],
      "competitor_mentions": [],
      "visibility_score": 85
    }
  ]
}

Prompt Research Engine

List campaigns

GET /prompt-research/campaigns
ParameterTypeDescription
website_idUUIDTarget website

Response

{
  "data": [
    {
      "id": "uuid",
      "custom_prompt": "What are the best SEO tools?",
      "frequency": 7,
      "languages": ["en"],
      "status": "active",
      "created_at": "2024-01-15T10:00:00Z"
    }
  ]
}

Create a Prompt Research campaign

POST /prompt-research/campaigns

Request body

{
  "website_id": "uuid",
  "custom_prompt": "What are the best SEO tools for startups?",
  "frequency": 3,
  "languages": ["en", "de"]
}
FieldRequiredDescription
custom_promptYesThe prompt to research
frequencyNoRun frequency in days (default 7)
languagesNoLanguage codes (max 3, default ["en"])

Get campaign details + results

GET /prompt-research/campaigns/:id

Response

{
  "data": {
    "campaign": {
      "id": "uuid",
      "custom_prompt": "What are the best SEO tools?",
      "frequency": 7,
      "status": "active"
    },
    "results": [
      {
        "id": "uuid",
        "campaign_id": "uuid",
        "run_at": "2024-01-20T10:00:00Z",
        "analyzed_data": { "clusters": [], "prompts": [] }
      }
    ]
  }
}

AI Visibility Score (overview)

GET /score
ParameterTypeDescription
website_idUUIDTarget website
Returns an aggregated overview across all AI visibility sub-features.

Response

{
  "data": {
    "brand_radar": {
      "campaigns_count": 3,
      "latest_result": { "visibility_score": 85, "mentions": [] }
    },
    "prompt_research": {
      "campaigns_count": 2
    },
    "authority": {
      "campaigns_count": 1,
      "latest_score": 72
    },
    "funnel": {
      "campaigns_count": 1
    }
  }
}