Voyant.io Competitor Intelligence API

Deep competitor analysis including feature comparisons and win/loss patterns.

Operations 48

POST /api/competitors/resolve Resolve Company Mention #
POST /api/competitors/resolve/batch Resolve Company Mentions Batch #
GET /api/competitors/resolve/suggest Suggest Competitor Matches #
GET /api/competitors/identities Get All Company Identities #
POST /api/competitors/discover Discover Competitors Simple #
GET /api/competitors/discover/stream Discover Competitors Stream #
POST /api/competitors/add-multiple Add Multiple Competitors #
POST /api/competitors/landscape-analysis Save Landscape Analysis #
GET /api/competitors/landscape-analysis Get Landscape Analyses #
POST /api/competitors/strategy-analysis/{competitor_id} Save Strategy Analysis #
GET /api/competitors/strategy-analysis/{competitor_id} Get Strategy Analyses #
GET /api/competitors/debug/schema Debug Landscape Analysis Schema #
GET /api/competitors/github/search Search Github Organizations #
GET /api/competitors/github/org/{org_login} Get Github Org Info #
GET /api/competitors/dashboard Get Dashboard #
GET /api/competitors/comparison Get Competitor Comparison #
GET /api/competitors/context/stream Get Competitor Context #
GET /api/competitors/context/positioning Get Positioning Context #
GET /api/competitors/alerts List Alerts #
POST /api/competitors/alerts/{alert_id}/acknowledge Acknowledge Alert #
POST /api/competitors/scan/all Trigger Scan All #
POST /api/competitors/sync-signal-sources/all Sync All Signal Sources #
GET /api/competitors List Competitors #
POST /api/competitors Add Competitor #
GET /api/competitors/{competitor_id} Get Competitor #
PATCH /api/competitors/{competitor_id} Update Competitor #
DELETE /api/competitors/{competitor_id} Delete Competitor #
GET /api/competitors/{competitor_id}/signal-sources Get Competitor Signal Sources #
POST /api/competitors/{competitor_id}/sync-signal-sources Sync Competitor Signal Sources Endpoint #
POST /api/competitors/{competitor_id}/scan Trigger Scan #
POST /api/competitors/{competitor_id}/deep-scan Trigger Deep Scan #
GET /api/competitors/{competitor_id}/scan/progress Get Scan Progress #
GET /api/competitors/{competitor_id}/activity Get Competitor Activity #
GET /api/competitors/{competitor_id}/authors Get Competitor Authors #
GET /api/competitors/{competitor_id}/strategic-moves Get Competitor Strategic Moves #
GET /api/competitors/{competitor_id}/jobs Get Competitor Jobs #
GET /api/competitors/{competitor_id}/linkedin Get Competitor Linkedin Mentions #
GET /api/competitors/{competitor_id}/youtube-channel Get Competitor Youtube Channel #
POST /api/competitors/{competitor_id}/analyze-strategy Analyze Competitor Strategy #
POST /api/competitors/{competitor_id}/check-updates Check Competitor Updates #
POST /api/competitors/{competitor_id}/discover-sources Discover Competitor Sources #
GET /api/competitors/{competitor_id}/battlecard Get Battlecard #
GET /api/competitors/{competitor_id}/history Get Competitor History #
GET /api/competitors/{competitor_id}/g2/search Search G2 Products #
POST /api/competitors/{competitor_id}/g2/link Link G2 Product #
GET /api/competitors/{competitor_id}/g2/themes Get G2 Themes #
POST /api/competitors/{competitor_id}/g2/analyze-themes Analyze G2 Themes #
POST /api/competitors/{competitor_id}/g2/create-topics Create Topics From G2 Themes #

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-competitor-intelligence-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-competitor-intelligence-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: VoyantIO Competitor Intelligence 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: Competitor Intelligence
  description: Deep competitor analysis including feature comparisons and win/loss patterns.
paths:
  /api/competitors/resolve:
    post:
      tags:
      - Competitor Intelligence
      summary: Resolve Company Mention
      description: 'Resolve a text mention to a canonical competitor.


        Uses the company identity system to match mentions across channels.

        Handles disambiguation for ambiguous names (Snowflake, Oracle, Box, etc.)'
      operationId: resolve_company_mention_api_competitors_resolve_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveRequest'
        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/competitors/resolve/batch:
    post:
      tags:
      - Competitor Intelligence
      summary: Resolve Company Mentions Batch
      description: 'Resolve multiple mentions in batch.


        Efficient for processing feeds of content.'
      operationId: resolve_company_mentions_batch_api_competitors_resolve_batch_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResolveBatchRequest'
        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/competitors/resolve/suggest:
    get:
      tags:
      - Competitor Intelligence
      summary: Suggest Competitor Matches
      description: 'Get multiple possible competitor matches with confidence scores.


        Useful for:

        - UI autocomplete/suggestions

        - Manual disambiguation when confidence is low'
      operationId: suggest_competitor_matches_api_competitors_resolve_suggest_get
      security:
      - HTTPBearer: []
      parameters:
      - name: text
        in: query
        required: true
        schema:
          type: string
          minLength: 1
          title: Text
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 20
          minimum: 1
          default: 5
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/identities:
    get:
      tags:
      - Competitor Intelligence
      summary: Get All Company Identities
      description: 'Get canonical identities for all competitors.


        Useful for debugging and understanding how companies are identified.'
      operationId: get_all_company_identities_api_competitors_identities_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/competitors/discover:
    post:
      tags:
      - Competitor Intelligence
      summary: Discover Competitors Simple
      description: 'AI-powered competitor discovery using org context.


        Uses existing context streams to reason about competitive landscape.

        Returns competitors directly (non-streaming).'
      operationId: discover_competitors_simple_api_competitors_discover_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscoverCompetitorsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - HTTPBearer: []
  /api/competitors/discover/stream:
    get:
      tags:
      - Competitor Intelligence
      summary: Discover Competitors Stream
      description: 'Stream competitive landscape analysis using org context.


        Uses existing context streams to reason about who competitors are and why.

        Streams reasoning text followed by structured competitor data.

        Auto-saves the analysis to competitive_landscape_analyses table.


        Response format (SSE):

        - reasoning:text chunks as Claude thinks

        - competitors:JSON array when complete

        - error:message if something fails'
      operationId: discover_competitors_stream_api_competitors_discover_stream_get
      security:
      - HTTPBearer: []
      parameters:
      - name: additional_context
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Extra context for pivots/changes
          title: Additional Context
        description: Extra context for pivots/changes
      - name: competitors
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Comma-separated confirmed competitor names — analysis focuses on these instead of discovering
          title: Competitors
        description: Comma-separated confirmed competitor names — analysis focuses on these instead of discovering
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/add-multiple:
    post:
      tags:
      - Competitor Intelligence
      summary: Add Multiple Competitors
      description: Add multiple competitors at once (from discovery results).
      operationId: add_multiple_competitors_api_competitors_add_multiple_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddMultipleCompetitorsRequest'
        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/competitors/landscape-analysis:
    post:
      tags:
      - Competitor Intelligence
      summary: Save Landscape Analysis
      description: 'Save a competitive landscape analysis for future reference and context.

        The analysis is also ingested into the RAG pipeline for use in content generation.'
      operationId: save_landscape_analysis_api_competitors_landscape_analysis_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveLandscapeAnalysisRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Competitor Intelligence
      summary: Get Landscape Analyses
      description: Get recent competitive landscape analyses.
      operationId: get_landscape_analyses_api_competitors_landscape_analysis_get
      security:
      - HTTPBearer: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 50
          minimum: 1
          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/competitors/strategy-analysis/{competitor_id}:
    post:
      tags:
      - Competitor Intelligence
      summary: Save Strategy Analysis
      description: 'Save a strategy analysis for a specific competitor.

        The analysis is also ingested into the RAG pipeline for competitive context.'
      operationId: save_strategy_analysis_api_competitors_strategy_analysis__competitor_id__post
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveStrategyAnalysisRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Competitor Intelligence
      summary: Get Strategy Analyses
      description: Get recent strategy analyses for a specific competitor.
      operationId: get_strategy_analyses_api_competitors_strategy_analysis__competitor_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 20
          minimum: 1
          default: 5
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/debug/schema:
    get:
      tags:
      - Competitor Intelligence
      summary: Debug Landscape Analysis Schema
      description: 'Debug endpoint to check the competitive_landscape_analyses table schema.

        Returns the column names and types.'
      operationId: debug_landscape_analysis_schema_api_competitors_debug_schema_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/competitors/github/search:
    get:
      tags:
      - Competitor Intelligence
      summary: Search Github Organizations
      description: 'Search GitHub for organizations and users matching a pattern.


        Examples:

        - /github/search?pattern=confluent -> finds confluentinc, confluent-*, etc.

        - /github/search?pattern=redpanda* -> finds redpanda-data, redpandadata, etc.

        - /github/search?pattern=stripe -> finds stripe, stripe-*, etc.


        Returns organizations/users with their repos, stars, and metadata.'
      operationId: search_github_organizations_api_competitors_github_search_get
      security:
      - HTTPBearer: []
      parameters:
      - name: pattern
        in: query
        required: true
        schema:
          type: string
          minLength: 2
          description: Search pattern (e.g., 'confluent' or 'confluent*')
          title: Pattern
        description: Search pattern (e.g., 'confluent' or 'confluent*')
      - name: include_users
        in: query
        required: false
        schema:
          type: boolean
          description: Include user accounts (many companies use these)
          default: true
          title: Include Users
        description: Include user accounts (many companies use these)
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 25
          minimum: 1
          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/competitors/github/org/{org_login}:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Github Org Info
      description: 'Get detailed information about a specific GitHub organization or user.


        Returns:

        - Organization details (name, description, location, etc.)

        - Top repositories with stars and activity

        - Total stars across all repos'
      operationId: get_github_org_info_api_competitors_github_org__org_login__get
      security:
      - HTTPBearer: []
      parameters:
      - name: org_login
        in: path
        required: true
        schema:
          type: string
          title: Org Login
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/dashboard:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Dashboard
      description: Get competitor intelligence dashboard summary
      operationId: get_dashboard_api_competitors_dashboard_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/competitors/comparison:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Competitor Comparison
      description: 'Get comparison metrics across all competitors for dashboard charts.


        Returns aggregate metrics for:

        - Blog activity: posts_6mo, posts_per_month, days_since_last_post, author_count

        - Channel stats: youtube_subscribers, youtube_views (when available)'
      operationId: get_competitor_comparison_api_competitors_comparison_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/competitors/context/stream:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Competitor Context
      description: Get competitor context for content generation
      operationId: get_competitor_context_api_competitors_context_stream_get
      security:
      - HTTPBearer: []
      parameters:
      - name: view
        in: query
        required: false
        schema:
          type: string
          description: 'Context view: full, positioning, battlecard, technical, market, summary'
          default: summary
          title: View
        description: 'Context view: full, positioning, battlecard, technical, market, summary'
      - name: tier
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by tier
          title: Tier
        description: Filter by tier
      - name: max_tokens
        in: query
        required: false
        schema:
          type: integer
          maximum: 10000
          minimum: 500
          default: 4000
          title: Max Tokens
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/context/positioning:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Positioning Context
      description: Get positioning context for primary competitors
      operationId: get_positioning_context_api_competitors_context_positioning_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/competitors/alerts:
    get:
      tags:
      - Competitor Intelligence
      summary: List Alerts
      description: Get competitor alerts
      operationId: list_alerts_api_competitors_alerts_get
      security:
      - HTTPBearer: []
      parameters:
      - name: unacknowledged_only
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Unacknowledged Only
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/alerts/{alert_id}/acknowledge:
    post:
      tags:
      - Competitor Intelligence
      summary: Acknowledge Alert
      description: Acknowledge an alert
      operationId: acknowledge_alert_api_competitors_alerts__alert_id__acknowledge_post
      security:
      - HTTPBearer: []
      parameters:
      - name: alert_id
        in: path
        required: true
        schema:
          type: string
          title: Alert Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/scan/all:
    post:
      tags:
      - Competitor Intelligence
      summary: Trigger Scan All
      description: Trigger positioning scans for all competitors
      operationId: trigger_scan_all_api_competitors_scan_all_post
      security:
      - HTTPBearer: []
      parameters:
      - name: tier
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Only scan this tier
          title: Tier
        description: Only scan this tier
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/sync-signal-sources/all:
    post:
      tags:
      - Competitor Intelligence
      summary: Sync All Signal Sources
      description: Sync signal sources for all competitors in the organization
      operationId: sync_all_signal_sources_api_competitors_sync_signal_sources_all_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/competitors:
    get:
      tags:
      - Competitor Intelligence
      summary: List Competitors
      description: List all competitors for the organization
      operationId: list_competitors_api_competitors_get
      security:
      - HTTPBearer: []
      parameters:
      - name: tier
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by tier
          title: Tier
        description: Filter by tier
      - name: status
        in: query
        required: false
        schema:
          type: string
          description: Filter by status
          default: active
          title: Status
        description: Filter by status
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CompetitorSummary'
                title: Response List Competitors Api Competitors Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Competitor Intelligence
      summary: Add Competitor
      description: Add a new competitor to track
      operationId: add_competitor_api_competitors_post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddCompetitorRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Add Competitor Api Competitors Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Competitor
      description: Get full competitor details
      operationId: get_competitor_api_competitors__competitor_id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - Competitor Intelligence
      summary: Update Competitor
      description: Update competitor settings
      operationId: update_competitor_api_competitors__competitor_id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateCompetitorRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Competitor Intelligence
      summary: Delete Competitor
      description: Remove a competitor from tracking
      operationId: delete_competitor_api_competitors__competitor_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/signal-sources:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Competitor Signal Sources
      description: Get all signal sources linked to a competitor
      operationId: get_competitor_signal_sources_api_competitors__competitor_id__signal_sources_get
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/sync-signal-sources:
    post:
      tags:
      - Competitor Intelligence
      summary: Sync Competitor Signal Sources Endpoint
      description: Manually sync signal sources for a competitor
      operationId: sync_competitor_signal_sources_endpoint_api_competitors__competitor_id__sync_signal_sources_post
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/scan:
    post:
      tags:
      - Competitor Intelligence
      summary: Trigger Scan
      description: Trigger a positioning scan for a competitor (quick - extracts messaging/positioning)
      operationId: trigger_scan_api_competitors__competitor_id__scan_post
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/deep-scan:
    post:
      tags:
      - Competitor Intelligence
      summary: Trigger Deep Scan
      description: Trigger a deep scan for a competitor (slow - Lusha enrichment, leadership, funding, battlecard)
      operationId: trigger_deep_scan_api_competitors__competitor_id__deep_scan_post
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/scan/progress:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Scan Progress
      description: Get progress of an ongoing scan
      operationId: get_scan_progress_api_competitors__competitor_id__scan_progress_get
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/activity:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Competitor Activity
      description: Get activity feed for a competitor
      operationId: get_competitor_activity_api_competitors__competitor_id__activity_get
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/competitors/{competitor_id}/authors:
    get:
      tags:
      - Competitor Intelligence
      summary: Get Competitor Authors
      description: 'Get top content authors for a competitor.


        Aggregates authors across all content sources:

        - Company blog

        - Medium/dev.to (future)

        - LinkedIn articles (future)

        - Conference talks (future)


        Returns authors ranked by post count with their recent posts.'
      operationId: get_competitor_authors_api_competitors__competitor_id__authors_get
      security:
      - HTTPBearer: []
      parameters:
      - name: competitor_id
        in: path
        required: true
        schema:
          type: string
          title: Competitor Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 50
          minimum: 1
          default: 10
          title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
       

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