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

# Analyze Prompt Visibility

> Analyze a SINGLE prompt across AI platforms

Internal endpoint for the Cron service to check visibility for a single prompt.

Called once per sampled prompt (10 prompts per day) by the cron job.

## What It Does

1. Takes a single prompt
2. Checks all 8 platforms **in parallel** (each platform uses native search, then Gemini 3 Flash evaluates):
   * **ChatGPT** - OpenAI Direct w/ Search → Gemini 3 Flash evaluates
   * **Claude** - Anthropic Direct w/ Search → Gemini 3 Flash evaluates
   * **Gemini** - GCP AI Studio Direct w/ Search → Gemini 3 Flash evaluates
   * **Perplexity** - Sonar API → Gemini 3 Flash evaluates
   * **Copilot** - Parallel Search API → Gemini 3 Flash evaluates
   * **DeepSeek** - Firecrawl Search API → Gemini 3 Flash evaluates
   * **Grok** - X.AI Direct w/ Search → Gemini 3 Flash evaluates
   * **Google AI** - Serp API (AI Overview) → Gemini 3 Flash evaluates
3. Returns 8 boolean values indicating if business was mentioned

## Request Body

<ParamField body="business_id" type="string" required>
  Business identifier (org\_slug)
</ParamField>

<ParamField body="prompt" type="string" required>
  Single prompt to analyze
</ParamField>

<ParamField body="product_id" type="string">
  Optional product/item ID
</ParamField>

## Response

<ResponseField name="status" type="string">
  `"success"` or `"error"`
</ResponseField>

<ResponseField name="prompt" type="string">
  The prompt that was analyzed
</ResponseField>

<ResponseField name="chatgpt" type="boolean">
  True if business mentioned on ChatGPT
</ResponseField>

<ResponseField name="claude" type="boolean">
  True if business mentioned on Claude
</ResponseField>

<ResponseField name="gemini" type="boolean">
  True if business mentioned on Gemini
</ResponseField>

<ResponseField name="perplexity" type="boolean">
  True if business mentioned on Perplexity
</ResponseField>

<ResponseField name="copilot" type="boolean">
  True if business mentioned on Copilot
</ResponseField>

<ResponseField name="deepseek" type="boolean">
  True if business mentioned on DeepSeek
</ResponseField>

<ResponseField name="grok" type="boolean">
  True if business mentioned on Grok
</ResponseField>

<ResponseField name="google_ai" type="boolean">
  True if business mentioned on Google AI Overview
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://searchcompany-main.up.railway.app/api/cron/analyze-visibility \
    -H "Content-Type: application/json" \
    -H "X-API-Key: search-company" \
    -d '{
      "business_id": "nike",
      "prompt": "What are the best running shoes for marathons?"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "status": "success",
    "prompt": "What are the best running shoes for marathons?",
    "chatgpt": true,
    "claude": true,
    "gemini": false,
    "perplexity": true,
    "copilot": false,
    "deepseek": true,
    "grok": false,
    "google_ai": true
  }
  ```
</ResponseExample>

## Sampling Architecture

<Info>
  This endpoint is called 10 times per customer per day (once per sampled prompt).
  We sample 10 prompts from the total pool, prioritizing untested prompts.
</Info>

**Workflow:**

1. Cron calls `/api/cron/sample-prompts` to get 10 prompts (untested first, then random)
2. For each sampled prompt, call this endpoint
3. Results are stored via `/api/cron/store-visibility-report` (updates `last_tested_at`)

## Notes

* Called by Cron 10 times per customer (once per sampled prompt)
* All 8 platform checks run in parallel for speed
* Each platform uses native search capabilities, then Gemini 3 Flash provides unified evaluation
* Results use pass/fail paradigm (true = visible, false = not visible)
* After all 10 prompts, Cron calls `/api/cron/store-visibility-report` to save results
