Voyant.io Signals API

Unified signal ingestion across 10+ platforms: GitHub, Reddit, HackerNews, LinkedIn, Discord, Twitter/X, ProductHunt, Slack, YouTube, G2, and government sources (SAM.gov, FERC).

Operations 25

GET /api/signals/stats Get Signal Stats #
GET /api/signals/top-by-engagement Get Top Signals By Engagement #
GET /api/signals/configured-sources Get Configured Sources #
GET /api/signals/publishing-comparison Get Publishing Comparison #
GET /api/signals/count Get Signal Count #
GET /api/signals/github/monthly Get Github Monthly Signal Count #
GET /api/signals/profile/{username} Get Github Profile #
GET /api/signals/alerts Get System Alerts #
POST /api/signals/alerts/{alert_id}/resolve Resolve System Alert #
POST /api/signals/discover Discover Signals #
GET /api/signals/list List Signals #
GET /api/signals/search Search Signals #
GET /api/signals/sources List Signal Sources #
POST /api/signals/sources Add Signal Source #
DELETE /api/signals/sources/{source_id} Delete Signal Source #
GET /api/signals/health Health Check #
POST /api/signals/baseline-discovery Baseline Discovery #
DELETE /api/signals/clear Clear All Signals #
POST /api/signals/sources/bulk Bulk Add Signal Sources #
GET /api/signals/sources/presets Get Source Presets #
POST /api/signals/sources/load-preset/{preset_name} Load Source Preset #
POST /api/signals/discover-topics Discover By Topics #
POST /api/signals/generate-topics Generate Topic Suggestions #

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-signals-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-signals-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: VoyantIO Signals 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: signals
  description: 'Unified signal ingestion across 10+ platforms: GitHub, Reddit, HackerNews, LinkedIn, Discord, Twitter/X, ProductHunt, Slack, YouTube, G2, and government sources (SAM.gov, FERC).'
paths:
  /api/signals/stats:
    get:
      tags:
      - signals
      summary: Get Signal Stats
      description: Return counts of signals for the current org (optionally per platform).
      operationId: get_signal_stats_api_signals_stats_get
      security:
      - HTTPBearer: []
      parameters:
      - name: platform
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by platform (github, reddit, linkedin)
          title: Platform
        description: Filter by platform (github, reddit, linkedin)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/top-by-engagement:
    get:
      tags:
      - signals
      summary: Get Top Signals By Engagement
      description: 'Get top signals by engagement grouped by platform.

        Used by Content Strategist Community tab.'
      operationId: get_top_signals_by_engagement_api_signals_top_by_engagement_get
      security:
      - HTTPBearer: []
      parameters:
      - name: limit_per_platform
        in: query
        required: false
        schema:
          type: integer
          default: 5
          title: Limit Per Platform
      - name: days
        in: query
        required: false
        schema:
          type: integer
          default: 7
          title: Days
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/trends:
    get:
      tags:
      - signals
      summary: Get Signal Trends
      description: 'Get signal counts by date and platform for trend charts.

        Returns data grouped by date for the last N days.

        Includes keywords per day and company mention highlights.'
      operationId: get_signal_trends_api_signals_trends_get
      security:
      - HTTPBearer: []
      parameters:
      - name: days
        in: query
        required: false
        schema:
          type: integer
          default: 30
          title: Days
      - name: company_keywords
        in: query
        required: false
        schema:
          type: string
          title: Company Keywords
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/configured-sources:
    get:
      tags:
      - signals
      summary: Get Configured Sources
      description: 'Get configured signal sources with their keywords, grouped by platform.

        Returns the keywords that users have configured for monitoring.

        Used by Content Strategist to show what''s being tracked.'
      operationId: get_configured_sources_api_signals_configured_sources_get
      security:
      - HTTPBearer: []
      parameters:
      - name: platform
        in: query
        required: false
        schema:
          type: string
          title: Platform
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/competitor-trends:
    get:
      tags:
      - signals
      summary: Get Competitor Trends
      description: 'Get competitor mention trends over time.

        Shows how often competitors are mentioned in community signals vs your company.'
      operationId: get_competitor_trends_api_signals_competitor_trends_get
      security:
      - HTTPBearer: []
      parameters:
      - name: days
        in: query
        required: false
        schema:
          type: integer
          default: 30
          title: Days
      - name: competitors
        in: query
        required: false
        schema:
          type: string
          title: Competitors
      - name: company_keywords
        in: query
        required: false
        schema:
          type: string
          title: Company Keywords
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/publishing-comparison:
    get:
      tags:
      - signals
      summary: Get Publishing Comparison
      description: 'Compare publishing activity between your company and competitors.


        NOTE: For competitors, we track their actual publishing (blog posts, releases, docs).

        For your company, we show community engagement signals (mentions, discussions about you).

        These are different metrics but shown together for competitive context.'
      operationId: get_publishing_comparison_api_signals_publishing_comparison_get
      security:
      - HTTPBearer: []
      parameters:
      - name: days
        in: query
        required: false
        schema:
          type: integer
          default: 30
          title: Days
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/count:
    get:
      tags:
      - signals
      summary: Get Signal Count
      description: Return a simple signal count for the current organization.
      operationId: get_signal_count_api_signals_count_get
      security:
      - HTTPBearer: []
      parameters:
      - name: platform
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by platform
          title: Platform
        description: Filter by platform
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/github/monthly:
    get:
      tags:
      - signals
      summary: Get Github Monthly Signal Count
      description: Count GitHub signals discovered in the last 30 days.
      operationId: get_github_monthly_signal_count_api_signals_github_monthly_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/signals/profile/{username}:
    get:
      tags:
      - signals
      summary: Get Github Profile
      description: Get GitHub profile data for a specific user to test social link extraction
      operationId: get_github_profile_api_signals_profile__username__get
      security:
      - HTTPBearer: []
      parameters:
      - name: username
        in: path
        required: true
        schema:
          type: string
          title: Username
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/alerts:
    get:
      tags:
      - signals
      summary: Get System Alerts
      description: Get active system alerts for the organization
      operationId: get_system_alerts_api_signals_alerts_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/signals/alerts/{alert_id}/resolve:
    post:
      tags:
      - signals
      summary: Resolve System Alert
      description: Mark a system alert as resolved
      operationId: resolve_system_alert_api_signals_alerts__alert_id__resolve_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/signals/discover:
    post:
      tags:
      - signals
      summary: Discover Signals
      description: 'Discover GitHub signals (stars, issues, discussions, PRs)


        Parameters:

        - sources: list of repositories to monitor

        - time_filter: ''hour'', ''day'', ''week'', ''month'', ''3months'', ''6months'', ''year''

        - max_items_per_source: number of items per repository (default 20, max 200 for deep discovery)

        - discovery_mode: ''standard'' or ''deep'' (deep fetches more historical data)

        - signal_types: list of types to discover: [''stars'', ''issues'', ''discussions'', ''prs''] (default: all)'
      operationId: discover_signals_api_signals_discover_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Request
        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/signals/list:
    get:
      tags:
      - signals
      summary: List Signals
      description: List discovered signals
      operationId: list_signals_api_signals_list_get
      security:
      - HTTPBearer: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          default: 50
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: platform
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by platform (github, reddit, linkedin)
          title: Platform
        description: Filter by platform (github, reddit, linkedin)
      - name: signal_type
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by signal type
          title: Signal Type
        description: Filter by signal type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/search:
    get:
      tags:
      - signals
      summary: Search Signals
      description: 'Search signals by query string (matches title and content).

        Used by competitor dashboard to find signals mentioning competitors.


        Supports smart filtering via competitor_id to exclude false positives.'
      operationId: search_signals_api_signals_search_get
      security:
      - HTTPBearer: []
      parameters:
      - name: query
        in: query
        required: true
        schema:
          type: string
          description: Search query for competitor name
          title: Query
        description: Search query for competitor name
      - name: competitor_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Competitor ID to load search config
          title: Competitor Id
        description: Competitor ID to load search config
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 20
          title: Limit
      - name: platform
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by platform
          title: Platform
        description: Filter by platform
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/sources:
    get:
      tags:
      - signals
      summary: List Signal Sources
      description: List signal sources
      operationId: list_signal_sources_api_signals_sources_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
    post:
      tags:
      - signals
      summary: Add Signal Source
      description: Add a new signal source (GitHub, Reddit, YouTube, etc.)
      operationId: add_signal_source_api_signals_sources_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Request
        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/signals/sources/{source_id}:
    delete:
      tags:
      - signals
      summary: Delete Signal Source
      description: Delete a signal source
      operationId: delete_signal_source_api_signals_sources__source_id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: source_id
        in: path
        required: true
        schema:
          type: string
          title: Source Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/health:
    get:
      tags:
      - signals
      summary: Health Check
      description: Health check endpoint
      operationId: health_check_api_signals_health_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /api/signals/baseline-discovery:
    post:
      tags:
      - signals
      summary: Baseline Discovery
      description: 'Establish a baseline of signals to understand current engagement landscape


        This discovers a broader set of signals to establish who''s currently

        interested in your technology stack, providing context for ongoing monitoring.'
      operationId: baseline_discovery_api_signals_baseline_discovery_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Request
        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/signals/clear:
    delete:
      tags:
      - signals
      summary: Clear All Signals
      description: Clear all signals for the organization
      operationId: clear_all_signals_api_signals_clear_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/signals/sources/bulk:
    post:
      tags:
      - signals
      summary: Bulk Add Signal Sources
      description: "Bulk add signal sources from a seed configuration\n\nRequest body:\n{\n    \"sources\": [\n        {\"repo\": \"owner/repo\", \"category\": \"multi_agent_ai\", \"description\": \"...\"},\n        ...\n    ],\n    \"replace_existing\": false  // If true, removes existing sources first\n}"
      operationId: bulk_add_signal_sources_api_signals_sources_bulk_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Request
        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/signals/sources/presets:
    get:
      tags:
      - signals
      summary: Get Source Presets
      description: Get available preset signal source configurations
      operationId: get_source_presets_api_signals_sources_presets_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/signals/sources/load-preset/{preset_name}:
    post:
      tags:
      - signals
      summary: Load Source Preset
      description: 'Load a preset signal source configuration


        Parameters:

        - preset_name: Name of the preset (e.g., "vantiq")

        - categories: Optional list of categories to load (default: all)'
      operationId: load_source_preset_api_signals_sources_load_preset__preset_name__post
      security:
      - HTTPBearer: []
      parameters:
      - name: preset_name
        in: path
        required: true
        schema:
          type: string
          title: Preset Name
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              title: Request
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/signals/discover-topics:
    post:
      tags:
      - signals
      summary: Discover By Topics
      description: "Discover signals from GitHub topics\n\nThis searches for repositories tagged with specific topics and\nidentifies active contributors as potential leads.\n\nRequest body:\n{\n    \"topics\": [\"multi-agent\", \"event-driven-architecture\", \"iot-platform\"],\n    \"max_repos_per_topic\": 10,\n    \"max_contributors_per_repo\": 5\n}"
      operationId: discover_by_topics_api_signals_discover_topics_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Request
        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/signals/generate-topics:
    post:
      tags:
      - signals
      summary: Generate Topic Suggestions
      description: "Generate GitHub topic suggestions based on company/product context using AI.\n\nRequest body:\n{\n    \"company_name\": \"Redpanda\",\n    \"product_description\": \"Kafka-compatible streaming data platform\",\n    \"target_audience\": \"Data engineers, platform teams\",\n    \"competitors\": [\"Apache Kafka\", \"Pulsar\"],\n    \"use_cases\": [\"Real-time analytics\", \"Event streaming\"]\n}\n\nReturns categorized topic suggestions that can be added as signal sources."
      operationId: generate_topic_suggestions_api_signals_generate_topics_post
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              title: Request
        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: []
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer