Voyant.io GEO/AEO API

Generative Engine Optimization - monitor your visibility in AI search engines (ChatGPT, Claude, Perplexity).

Operations 49

POST /api/geo-aeo/generate-prompts Generate Prompts #
POST /api/geo-aeo/generate-prompts/stream Generate Prompts Stream #
POST /api/geo-aeo/test-prompt Test Single Prompt #
POST /api/geo-aeo/run-scan Run Visibility Scan #
POST /api/geo-aeo/run-scan/stream Run Visibility Scan Stream #
GET /api/geo-aeo/models Get Available Models #
GET /api/geo-aeo/prompt-categories Get Prompt Categories #
GET /api/geo-aeo/sessions Get Session Status #
POST /api/geo-aeo/sessions/{platform} Save Session #
GET /api/geo-aeo/query-mode Get Query Mode #
POST /api/geo-aeo/query-mode/{mode} Set Query Mode #
GET /api/geo-aeo/prompts List Prompts #
POST /api/geo-aeo/prompts Create Prompt #
POST /api/geo-aeo/prompts/bulk Bulk Create Prompts #
PATCH /api/geo-aeo/prompts/{prompt_id} Update Prompt #
DELETE /api/geo-aeo/prompts/{prompt_id} Delete Prompt #
GET /api/geo-aeo/topics List Topics #
POST /api/geo-aeo/topics Create Topic #
DELETE /api/geo-aeo/topics/{topic_name} Delete Topic #
POST /api/geo-aeo/prompts/{prompt_id}/continuous-testing Toggle Continuous Testing #
POST /api/geo-aeo/prompts/bulk-schedule Bulk Update Schedule #
GET /api/geo-aeo/prompts/continuous Get Continuous Testing Prompts #
GET /api/geo-aeo/results/latest Get Latest Visibility Results #
GET /api/geo-aeo/prompts/{prompt_id}/responses Get Prompt Responses #
POST /api/geo-aeo/prompts/scan Scan Saved Prompts #
POST /api/geo-aeo/prompts/generate-and-save Generate And Save Prompts #
POST /api/geo-aeo/scan/start Start Visibility Scan #
GET /api/geo-aeo/scan/{job_id}/status Get Scan Status #
POST /api/geo-aeo/guidance/stream Stream Visibility Guidance #
POST /api/geo-aeo/content-topics Save Content Topic #
GET /api/geo-aeo/content-topics List Content Topics #
POST /api/geo-aeo/airops/sync Sync To Airops #
GET /api/geo-aeo/airops/context Get Context For Airops #
GET /api/geo-aeo/airops/search Search Airops #
GET /api/geo-aeo/airops/export/content-topics.csv Export Content Topics Csv #
GET /api/geo-aeo/airops/export/use-cases.csv Export Use Cases Csv #
GET /api/geo-aeo/airops/export/personas.csv Export Personas Csv #
GET /api/geo-aeo/airops/export/geo-prompts.csv Export Geo Prompts Csv #
PATCH /api/geo-aeo/content-topics/{topic_id} Update Content Topic #
DELETE /api/geo-aeo/content-topics/{topic_id} Delete Content Topic #
POST /api/geo-aeo/content-topics/from-signals Create Topics From Signals #
POST /api/geo-aeo/content-topics/from-competitor/{competitor_id} Create Topics From Competitor #
POST /api/geo-aeo/content-topics/from-all-competitors Create Topics From All Competitors #
GET /api/geo-aeo/brand-snapshots/daily Get Daily Brand Snapshots #
GET /api/geo-aeo/brand-snapshots/weekly Get Weekly Brand Insights #
POST /api/geo-aeo/brand-snapshots/run Run Brand Snapshot #
POST /api/geo-aeo/baseline-probe/run Run Baseline Probe #
GET /api/geo-aeo/baseline-probe/history Get Baseline Probe History #
GET /api/geo-aeo/baseline-probe/latest Get Latest Baseline Probe #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/voyant-geo-aeo-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

voyant-geo-aeo-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: VoyantIO GEO/AEO API
  description: '

    ## Brand Context Intelligence Platform


    VoyantIO provides AI-powered brand context management for GTM teams.


    ### Core Capabilities


    - **Context Streams** - Centralized brand knowledge that any AI tool can use

    - **Telemetry** - Visitor tracking with IP geolocation and company enrichment

    - **Signals** - Social listening across 10+ platforms: GitHub, Reddit, HackerNews, LinkedIn, Twitter/X, Discord, ProductHunt, YouTube, G2, Slack, and government sources

    - **Target Graph** - Account and contact intelligence with engagement tracking

    - **RAG** - Retrieval-augmented content generation with brand awareness


    ### Authentication


    Most endpoints require a Bearer token from Clerk authentication.

    Public endpoints (telemetry ingestion, well-known files) are clearly marked.


    ### Rate Limits


    - Telemetry ingestion: 100 req/min per IP

    - API endpoints: 1000 req/min per org

    '
  version: 1.0.0
servers:
- url: https://voice-forge-production.up.railway.app
  description: Production
tags:
- name: GEO/AEO
  description: Generative Engine Optimization - monitor your visibility in AI search engines (ChatGPT, Claude, Perplexity).
paths:
  /api/geo-aeo/generate-prompts:
    post:
      tags:
      - GEO/AEO
      summary: Generate Prompts
      description: 'Generate GEO/AEO prompts based on company context.


        Uses the content generator with GEO_PROMPT format to create

        relevant search prompts that potential customers might ask AI assistants.


        When multi_source=True (default), generates prompts from three context sources:

        - Messaging Framework (40%): positioning, use cases, personas

        - Competitive Intelligence (30%): tracked competitors, differentiation

        - Social Signals (30%): trending topics, pain points from discussions


        If competitors not provided, automatically fetches from Competitive Intelligence.'
      operationId: generate_prompts_api_geo_aeo_generate_prompts_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeneratePromptsRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/generate-prompts/stream:
    post:
      tags:
      - GEO/AEO
      summary: Generate Prompts Stream
      description: 'Generate GEO prompts with SSE streaming - returns prompts as each category completes.


        Events:

        - status: Progress updates (e.g., "Syncing Messaging Framework...")

        - prompts: Array of prompts for a completed category

        - complete: Final summary

        - error: Error messages'
      operationId: generate_prompts_stream_api_geo_aeo_generate_prompts_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeneratePromptsRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/test-prompt:
    post:
      tags:
      - GEO/AEO
      summary: Test Single Prompt
      description: 'Test a single prompt across AI models to check brand visibility.


        Returns visibility score and individual model responses.'
      operationId: test_single_prompt_api_geo_aeo_test_prompt_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SinglePromptTestRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisibilityResultResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/run-scan:
    post:
      tags:
      - GEO/AEO
      summary: Run Visibility Scan
      description: 'Run a full visibility scan across multiple prompts and AI models.


        Returns a comprehensive visibility report with scores,

        recommendations, and areas for improvement.


        If save_to_library=True, prompts are saved to the target_prompts table

        with their visibility scores.'
      operationId: run_visibility_scan_api_geo_aeo_run_scan_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestPromptsRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisibilityReportResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/run-scan/stream:
    post:
      tags:
      - GEO/AEO
      summary: Run Visibility Scan Stream
      description: 'Run visibility scan with SSE streaming - returns results as each prompt completes.


        Events:

        - status: Progress updates

        - result: Individual prompt result as it completes

        - summary: Final summary with overall scores

        - error: Error messages'
      operationId: run_visibility_scan_stream_api_geo_aeo_run_scan_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestPromptsRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/models:
    get:
      tags:
      - GEO/AEO
      summary: Get Available Models
      description: Get list of available AI models for visibility testing.
      operationId: get_available_models_api_geo_aeo_models_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/geo-aeo/prompt-categories:
    get:
      tags:
      - GEO/AEO
      summary: Get Prompt Categories
      description: Get list of prompt categories for organization.
      operationId: get_prompt_categories_api_geo_aeo_prompt_categories_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/geo-aeo/sessions:
    get:
      tags:
      - GEO/AEO
      summary: Get Session Status
      description: 'Check session status for all AI platforms.

        Returns which platforms have valid sessions for web-based queries.'
      operationId: get_session_status_api_geo_aeo_sessions_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/geo-aeo/sessions/{platform}:
    post:
      tags:
      - GEO/AEO
      summary: Save Session
      description: 'Save session cookies for an AI platform.


        Use browser dev tools to export cookies:

        1. Open the AI platform and log in

        2. Open DevTools > Application > Cookies

        3. Export all cookies as JSON'
      operationId: save_session_api_geo_aeo_sessions__platform__post
      parameters:
      - name: platform
        in: path
        required: true
        schema:
          type: string
          title: Platform
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveSessionRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/query-mode:
    get:
      tags:
      - GEO/AEO
      summary: Get Query Mode
      description: Get the current query mode (API or Web).
      operationId: get_query_mode_api_geo_aeo_query_mode_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/geo-aeo/query-mode/{mode}:
    post:
      tags:
      - GEO/AEO
      summary: Set Query Mode
      description: Set the query mode (api or web).
      operationId: set_query_mode_api_geo_aeo_query_mode__mode__post
      parameters:
      - name: mode
        in: path
        required: true
        schema:
          type: string
          title: Mode
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/prompts:
    get:
      tags:
      - GEO/AEO
      summary: List Prompts
      description: List all target prompts for the org.
      operationId: list_prompts_api_geo_aeo_prompts_get
      security:
      - HTTPBearer: []
      parameters:
      - name: topic
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Topic
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
      - name: category
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 100
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response List Prompts Api Geo Aeo Prompts Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - GEO/AEO
      summary: Create Prompt
      description: Create a new target prompt.
      operationId: create_prompt_api_geo_aeo_prompts_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetPromptCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetPromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/prompts/bulk:
    post:
      tags:
      - GEO/AEO
      summary: Bulk Create Prompts
      description: Bulk create target prompts.
      operationId: bulk_create_prompts_api_geo_aeo_prompts_bulk_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkPromptCreate'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Bulk Create Prompts Api Geo Aeo Prompts Bulk Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/prompts/{prompt_id}:
    patch:
      tags:
      - GEO/AEO
      summary: Update Prompt
      description: Update a target prompt.
      operationId: update_prompt_api_geo_aeo_prompts__prompt_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: string
          title: Prompt Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetPromptUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetPromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - GEO/AEO
      summary: Delete Prompt
      description: Delete a target prompt.
      operationId: delete_prompt_api_geo_aeo_prompts__prompt_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: string
          title: Prompt Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Delete Prompt Api Geo Aeo Prompts  Prompt Id  Delete
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/topics:
    get:
      tags:
      - GEO/AEO
      summary: List Topics
      description: List all topics for the org.
      operationId: list_topics_api_geo_aeo_topics_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TopicResponse'
                type: array
                title: Response List Topics Api Geo Aeo Topics Get
      security:
      - HTTPBearer: []
    post:
      tags:
      - GEO/AEO
      summary: Create Topic
      description: Create a new topic.
      operationId: create_topic_api_geo_aeo_topics_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopicCreate'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopicResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/topics/{topic_name}:
    delete:
      tags:
      - GEO/AEO
      summary: Delete Topic
      description: Delete a topic (prompts with this topic will have topic set to 'Uncategorized').
      operationId: delete_topic_api_geo_aeo_topics__topic_name__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: topic_name
        in: path
        required: true
        schema:
          type: string
          title: Topic Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
                title: Response Delete Topic Api Geo Aeo Topics  Topic Name  Delete
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/prompts/{prompt_id}/continuous-testing:
    post:
      tags:
      - GEO/AEO
      summary: Toggle Continuous Testing
      description: 'Mark a prompt for continuous testing.

        These prompts will be tested on every hourly scan.'
      operationId: toggle_continuous_testing_api_geo_aeo_prompts__prompt_id__continuous_testing_post
      security:
      - HTTPBearer: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: string
          title: Prompt Id
      - name: enabled
        in: query
        required: false
        schema:
          type: boolean
          default: true
          title: Enabled
      - name: frequency_minutes
        in: query
        required: false
        schema:
          type: integer
          default: 60
          title: Frequency Minutes
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Toggle Continuous Testing Api Geo Aeo Prompts  Prompt Id  Continuous Testing Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/prompts/bulk-schedule:
    post:
      tags:
      - GEO/AEO
      summary: Bulk Update Schedule
      description: Bulk enable/disable continuous testing for multiple prompts.
      operationId: bulk_update_schedule_api_geo_aeo_prompts_bulk_schedule_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkScheduleRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Bulk Update Schedule Api Geo Aeo Prompts Bulk Schedule Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/prompts/continuous:
    get:
      tags:
      - GEO/AEO
      summary: Get Continuous Testing Prompts
      description: Get all prompts marked for continuous testing.
      operationId: get_continuous_testing_prompts_api_geo_aeo_prompts_continuous_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Get Continuous Testing Prompts Api Geo Aeo Prompts Continuous Get
      security:
      - HTTPBearer: []
  /api/geo-aeo/results/latest:
    get:
      tags:
      - GEO/AEO
      summary: Get Latest Visibility Results
      description: 'Get the latest visibility scan results.

        Returns the most recent snapshot plus top/bottom performing prompts.'
      operationId: get_latest_visibility_results_api_geo_aeo_results_latest_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                additionalProperties: true
                type: object
                title: Response Get Latest Visibility Results Api Geo Aeo Results Latest Get
      security:
      - HTTPBearer: []
  /api/geo-aeo/prompts/{prompt_id}/responses:
    get:
      tags:
      - GEO/AEO
      summary: Get Prompt Responses
      description: 'Get the last AI responses for a specific prompt.

        Shows what each AI model said when tested.'
      operationId: get_prompt_responses_api_geo_aeo_prompts__prompt_id__responses_get
      security:
      - HTTPBearer: []
      parameters:
      - name: prompt_id
        in: path
        required: true
        schema:
          type: string
          title: Prompt Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Prompt Responses Api Geo Aeo Prompts  Prompt Id  Responses Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/prompts/scan:
    post:
      tags:
      - GEO/AEO
      summary: Scan Saved Prompts
      description: 'Run visibility scan on saved prompts.

        Either provide prompt_ids or topic to select prompts.'
      operationId: scan_saved_prompts_api_geo_aeo_prompts_scan_post
      security:
      - HTTPBearer: []
      parameters:
      - name: topic
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Topic
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Body_scan_saved_prompts_api_geo_aeo_prompts_scan_post'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Scan Saved Prompts Api Geo Aeo Prompts Scan Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/prompts/generate-and-save:
    post:
      tags:
      - GEO/AEO
      summary: Generate And Save Prompts
      description: 'Generate prompts from context and save them to the library.

        Fetches context from org''s Messaging Framework if not provided.'
      operationId: generate_and_save_prompts_api_geo_aeo_prompts_generate_and_save_post
      security:
      - HTTPBearer: []
      parameters:
      - name: default_topic
        in: query
        required: false
        schema:
          type: string
          default: Generated
          title: Default Topic
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GeneratePromptsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Generate And Save Prompts Api Geo Aeo Prompts Generate And Save Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/scan/start:
    post:
      tags:
      - GEO/AEO
      summary: Start Visibility Scan
      description: 'Start an async visibility scan job.


        Returns a job_id that can be used to check progress and retrieve results.

        The scan runs in a Celery worker and tests prompts against multiple LLMs.'
      operationId: start_visibility_scan_api_geo_aeo_scan_start_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartScanRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanJobResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/scan/{job_id}/status:
    get:
      tags:
      - GEO/AEO
      summary: Get Scan Status
      description: 'Check the status of an async visibility scan job.


        Returns progress, current state, and results when complete.'
      operationId: get_scan_status_api_geo_aeo_scan__job_id__status_get
      security:
      - HTTPBearer: []
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: string
          title: Job Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/guidance/stream:
    post:
      tags:
      - GEO/AEO
      summary: Stream Visibility Guidance
      description: 'Stream AI-generated guidance for a visibility gap.


        Analyzes the visibility result and streams actionable advice

        on what the gap means and how to address it through content.'
      operationId: stream_visibility_guidance_api_geo_aeo_guidance_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GuidanceRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/geo-aeo/content-topics:
    post:
      tags:
      - GEO/AEO
      summary: Save Content Topic
      description: 'Save a visibility gap as a content topic for the content strategist.


        Creates a backlog item that content teams can review, prioritize, and schedule.

        Also pushes to AirOps vector store for use in content workflows.'
      operationId: save_content_topic_api_geo_aeo_content_topics_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveContentTopicRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentTopicResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - GEO/AEO
      summary: List Content Topics
      description: 'List content topics for the content strategist.


        Optionally filter by source (manual, signal, geo_visibility, competitor_gap)

        or category (use_case, persona, competitive, technical, integration, pricing, general).'
      operationId: list_content_topics_api_geo_aeo_content_topics_get
      security:
      - HTTPBearer: []
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: category
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 50
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ContentTopicResponse'
                title: Response List Content Topics Api Geo Aeo Content Topics Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/airops/sync:
    post:
      tags:
      - GEO/AEO
      summary: Sync To Airops
      description: 'Sync the Messaging Framework context stream to AirOps vector store.


        Pushes personas, use cases, products, and positioning for use in

        AirOps AI workflows and content generation.'
      operationId: sync_to_airops_api_geo_aeo_airops_sync_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/geo-aeo/airops/context:
    get:
      tags:
      - GEO/AEO
      summary: Get Context For Airops
      description: "Get context data formatted for AirOps workflow consumption.\n\nThis endpoint can be called by AirOps workflows to fetch fresh\nGTM context for content generation.\n\nArgs:\n    context_type: Type of context (use_cases, personas, products, content_topics, all)\n    limit: Max items to return\n\nReturns:\n    JSON array of items ready for AirOps workflow processing"
      operationId: get_context_for_airops_api_geo_aeo_airops_context_get
      security:
      - HTTPBearer: []
      parameters:
      - name: context_type
        in: query
        required: false
        schema:
          type: string
          default: all
          title: Context Type
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 10
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/geo-aeo/airops/search:
    get:
      tags:
      - GEO/AEO
      summary: Search Airops
      description: "Search the AirOps vector store for relevant context.\n\nArgs:\n    query: Semantic search query\n    context_type: Optional filter (persona, use_case, product, positioning, content_topic)\n    top_k: Number of results (default 5)"
      operationId: search_airops_api_geo_aeo_airops_search_get
      security:
      - HTTPBearer: []
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
          title: Query
      - name: context_type
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Context Type
      - name: top_k
        in: query
        required: false
        schema:
          type: integer
          default: 5
          tit

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/voyant/refs/heads/main/openapi/voyant-geo-aeo-api-openapi.yml