Signal AI Events API

The Events API endpoint identifies significant clusters of news coverage about entities and topics of interest, allowing users to easily identify news events that could impact them or their business, and offering a qualitative deep dive into the quantitative data provided by Metrics and Affinity. By leveraging the 15-month archive, users can easily get up to speed on the recent developments involving specific companies, industries or topics. Examples of questions this data can answer include: * Have there been any events involving Company X in the past day/month/year/15 months? * What are the latest developments in the food and beverage industry? * Have there been any product recalls recently? The data returned includes entities and topics involved, their prominence scores, alongside the number of stories describing the event (a measure of "newsworthiness"), and a group of the most descriptive labels. The data is generated daily. ## Event hashes Each event contains a `hash` field. You can look up events by hash using the `/events/{hash}` endpoint. The difference between the data returned in this endpoint compared with `/events` is as follows: * All story ids for the event are returned not just the top 100 * The source ids for the event are included In APIs it's more common to use the term "id" rather than "hash". We've chosen to use "hash" because these strings can change as we receive new data. In the `/events` endpoint the `event-hash-expiry` field indicates when the hash will expire. Note that it could still be available after this time.

Operations 2

GET /events/{hash} Returns the Event for this hash #
POST /events Events Search #

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/signal-ai-events-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

signal-ai-events-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Signal AI Events API
  description: '# Overview


    The Signal AI API is an HTTP+JSON API offering programmatic access to Signal AI''s decision augmentation platform.'
  version: v1.3
servers:
- url: https://api.signal-ai.com
security:
- OAuth2:
  - default
tags:
- name: Events
  description: The Events API endpoint identifies significant clusters of news coverage about entities and topics of interest, allowing users to easily identify news events that could impact them or their business, and offering a qualitative deep dive into the quantitative data provided by Metrics and Affinity.
paths:
  /events/{hash}:
    get:
      operationId: get-event-by-hash
      tags:
      - Events
      summary: Returns the Event for this hash
      parameters:
      - name: hash
        required: true
        in: path
        schema:
          $ref: '#/components/schemas/EventHash'
      responses:
        '200':
          description: Event's data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventHashResponse'
              examples:
                event-hash-response:
                  $ref: '#/components/examples/event-hash-response-example'
  /events:
    post:
      operationId: search-events
      security:
      - OAuth2:
        - events
      tags:
      - Events
      summary: Events Search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventSearchQuery'
            examples:
              events-request:
                $ref: '#/components/examples/events-request-example'
      responses:
        '200':
          description: Returns a list of events matching the query
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventSearchResponse'
              examples:
                events-response:
                  $ref: '#/components/examples/events-response-example'
components:
  schemas:
    EventHashResponse:
      type: object
      required:
      - event
      additionalProperties: false
      properties:
        event:
          type: object
          unevaluatedProperties: false
          allOf:
          - $ref: '#/components/schemas/Event'
          - required:
            - source-ids
            properties:
              source-ids:
                type: array
                items:
                  $ref: '#/components/schemas/ResourceId'
                description: The sources that mention this event.
    ResourceId:
      type: string
      format: uuid
      pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
      example: bcd2d868-ed38-4382-b94a-622a30fc3215
    Entity:
      type: object
      required:
      - id
      - name
      - type
      properties:
        id:
          $ref: '#/components/schemas/ResourceId'
        type:
          $ref: '#/components/schemas/EntityType'
        name:
          type: string
    EventEntitiesMatch:
      type: object
      additionalProperties: false
      required:
      - id
      properties:
        id:
          allOf:
          - $ref: '#/components/schemas/AnyOrAllResourceIdsMatch'
          - properties:
              any:
                type: array
                maxItems: 200
              all:
                type: array
                maxItems: 200
    AllResourceIds:
      type: object
      additionalProperties: false
      required:
      - all
      properties:
        all:
          $ref: '#/components/schemas/ResourceIds'
    EventMatch:
      type: object
      additionalProperties: false
      properties:
        date:
          type: object
          properties:
            gt:
              $ref: '#/components/schemas/Date'
            gte:
              $ref: '#/components/schemas/Date'
            lt:
              $ref: '#/components/schemas/Date'
            lte:
              $ref: '#/components/schemas/Date'
          additionalProperties: false
          minProperties: 1
          dependentSchemas:
            gt:
              not:
                required:
                - gte
            gte:
              not:
                required:
                - gt
            lt:
              not:
                required:
                - lte
            lte:
              not:
                required:
                - lt
        topics:
          $ref: '#/components/schemas/EventTopicsMatch'
        entities:
          $ref: '#/components/schemas/EventEntitiesMatch'
        labels:
          type: object
          description: Filter on specific words or phrases. A label can contain a maximum of 6 words.
          oneOf:
          - additionalProperties: false
            properties:
              any:
                type: array
                items:
                  type: string
                maxItems: 100
          - additionalProperties: false
            properties:
              all:
                type: array
                items:
                  type: string
                maxItems: 100
        sources:
          type: object
          additionalProperties: false
          required:
          - id
          description: If the user does not have access to any of the sources specified, those ids will be excluded while fetching the events
          properties:
            id:
              allOf:
              - $ref: '#/components/schemas/AnyOrAllResourceIdsMatch'
              - properties:
                  any:
                    maxItems: 100
                  all:
                    maxItems: 100
    EventTopicsMatch:
      type: object
      additionalProperties: false
      required:
      - id
      properties:
        id:
          allOf:
          - $ref: '#/components/schemas/AnyOrAllResourceIdsMatch'
          - properties:
              any:
                maxItems: 100
              all:
                maxItems: 100
    EventEntity:
      type: object
      allOf:
      - $ref: '#/components/schemas/Entity'
      - properties:
          story-count:
            type: integer
          prominence-score:
            type: number
            description: The number of stories mentioning the concept divided by the story count for the event. For example, if half the stories in the event mention an entity then the prominence would be 0.5.
    EventTopic:
      type: object
      allOf:
      - $ref: '#/components/schemas/PartialTopic'
      - properties:
          story-count:
            type: integer
          prominence-score:
            type: number
            description: The number of stories mentioning the concept divided by the story count for the event. For example, if half the stories in the event mention a topic then the prominence would be 0.5.
    Date:
      type: string
      format: date
      description: "A date based on the IETF RFC 3339 format (e.g. `2023-01-01`).\n    Note that a day is the span of time between 00:00:00 and 23:59:59 based on\n    the UTC timezone. You may prefer using the `date-time` option to match days\n    in a different timezone."
      example: '2023-01-01'
    ResourceIds:
      type: array
      items:
        $ref: '#/components/schemas/ResourceId'
    Event:
      type: object
      required:
      - hash
      - date
      - story-count-global
      - document-count-entitlements
      - document-count-global
      - labels
      - entities
      - topics
      - story-ids
      properties:
        labels:
          type: array
          items:
            type: string
          description: The most descriptive words or phrases that appear in the documents in the event.
        date:
          $ref: '#/components/schemas/Date'
        document-count-entitlements:
          type: integer
          description: The number of documents that mentioned this event based on your user permissions.
        hash:
          $ref: '#/components/schemas/EventHash'
        story-count-global:
          type: integer
          description: The number of stories that mentioned this event across Signal's global data set.
        story-ids:
          type: array
          description: Ordered by centrality - how well the story represents the event in question. You can use these ids in the [Search API](#tag/Content-Search/operation/search-documents) to get headlines best describing the event.
          items:
            $ref: '#/components/schemas/ResourceId'
        document-count-global:
          type: integer
          description: The number of documents that mentioned this event across Signal's global data set.
        entities:
          type: array
          items:
            $ref: '#/components/schemas/EventEntity'
        topics:
          type: array
          items:
            $ref: '#/components/schemas/EventTopic'
        source-count-global:
          oneOf:
          - type: integer
          - type: 'null'
          description: The number of sources that mentioned this event across Signal's global data set.
    EventExclude:
      type: object
      additionalProperties: false
      properties:
        entities:
          type: object
          additionalProperties: false
          required:
          - id
          properties:
            id:
              allOf:
              - $ref: '#/components/schemas/AnyResourceIds'
              - properties:
                  any:
                    maxItems: 100
        topics:
          type: object
          additionalProperties: false
          required:
          - id
          properties:
            id:
              allOf:
              - $ref: '#/components/schemas/AnyResourceIds'
              - properties:
                  any:
                    maxItems: 50
        labels:
          type: object
          additionalProperties: false
          properties:
            any:
              type: array
              items:
                type: string
              maxItems: 100
        sources:
          type: object
          additionalProperties: false
          required:
          - id
          properties:
            id:
              allOf:
              - $ref: '#/components/schemas/AnyResourceIds'
              - properties:
                  any:
                    maxItems: 100
    PartialTopic:
      type: object
      required:
      - id
      - name
      properties:
        id:
          $ref: '#/components/schemas/ResourceId'
        name:
          type: string
    EntityType:
      type: string
      enum:
      - person
      - organisation
      - location
      - substance
      - disease
      - product
      - regulation
    EventSearchResponse:
      type: object
      required:
      - events
      - event-hash-expiry
      - stats
      additionalProperties: false
      properties:
        events:
          type: array
          items:
            unevaluatedProperties: false
            $ref: '#/components/schemas/Event'
        event-hash-expiry:
          type: string
          format: date-time
          description: When the event hashes will expire (note that it could still be available after this time).
        next-cursor:
          oneOf:
          - $ref: '#/components/schemas/Base64String'
          - type: 'null'
          description: Use the value of this field as the input to `from-cursor` in a query to paginate through the results (see [Pagination](#section/Pagination)).
        stats:
          type: object
          description: The number of events matched across our entire data set. We can only provide an accurate figure up to 10000. Anything above that is indicated with `gte`.
          required:
          - total
          properties:
            total:
              type: array
              prefixItems:
              - enum:
                - eq
                - gte
              - type: integer
    EventSearchQuery:
      type: object
      required:
      - where
      additionalProperties: false
      properties:
        where:
          $ref: '#/components/schemas/EventMatch'
        exclude:
          $ref: '#/components/schemas/EventExclude'
        size:
          type: integer
          default: 10
          minimum: 0
          maximum: 1000
        from-cursor:
          $ref: '#/components/schemas/Base64String'
          description: Use this field to paginate through the results (see [Pagination](#section/Pagination)).
    EventHash:
      type: string
      pattern: '[0-9a-fA-F=-]+'
    AnyOrAllResourceIdsMatch:
      oneOf:
      - $ref: '#/components/schemas/AnyResourceIds'
      - $ref: '#/components/schemas/AllResourceIds'
    AnyResourceIds:
      type: object
      additionalProperties: false
      required:
      - any
      properties:
        any:
          $ref: '#/components/schemas/ResourceIds'
    Base64String:
      type: string
      pattern: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$
      example: RjQ2RTRBQUEtQTNGRi00MEI3LUE1NEYtNTA0NEQxMjc5NkU3
  examples:
    event-hash-response-example:
      value:
        event:
          labels:
          - apple
          - apple pay
          - eu
          - mobile
          - european commission
          - payment
          - dominant
          date: '2022-05-02'
          document-count-entitlements: 3773
          hash: 01e6-5f0a8e41-834dc94d-995011f6-0717dc49
          story-count-global: 1298
          story-ids:
          - 304c5ded-f186-43cc-868e-c6b537b3b5e4
          - 0ee8d6c5-33e0-442d-b257-14115be69e0a
          - 39ae8606-4434-4427-888f-7904930a007d
          document-count-global: 4306
          entities:
          - name: Apple Inc.
            id: aee5dfa5-cf7e-4bcd-80c3-79b0125effc8
            type: organisation
            story-count: 1296
            prominence-score: 0.9984591679506933
          - name: European Union
            id: 1eedf0d9-f4c3-4b8f-90c4-31e6862dfa56
            type: organisation
            story-count: 847
            prominence-score: 0.652542372881356
          source-ids:
          - 000a992d-6bbc-410c-bccd-d20a9aafff58
          - 002c55f5-ed67-4273-a6b8-cefb911bc095
          topics:
          - name: Engineering
            id: bb422b16-7eef-40b1-9cd8-82085de351bb
            story-count: 1241
            prominence-score: 0.9560862865947611
          - name: Market Regulation
            id: eb920503-7b82-4e56-8713-b091b7a1d442
            story-count: 1234
            prominence-score: 0.9506933744221879
          source-count-global: 2832
    events-response-example:
      value:
        events:
        - labels:
          - apple
          - apple pay
          - eu
          - mobile
          - european commission
          - payment
          - dominant
          date: '2022-05-02'
          document-count-entitlements: 3773
          hash: 01e6-5f0a8e41-834dc94d-995011f6-0717dc49
          story-count-global: 1298
          story-ids:
          - 304c5ded-f186-43cc-868e-c6b537b3b5e4
          - 0ee8d6c5-33e0-442d-b257-14115be69e0a
          - 39ae8606-4434-4427-888f-7904930a007d
          document-count-global: 4306
          entities:
          - name: Apple Inc.
            id: aee5dfa5-cf7e-4bcd-80c3-79b0125effc8
            type: organisation
            story-count: 1296
            prominence-score: 0.9984591679506933
          - name: European Union
            id: 1eedf0d9-f4c3-4b8f-90c4-31e6862dfa56
            type: organisation
            story-count: 847
            prominence-score: 0.652542372881356
          source-ids:
          - 000a992d-6bbc-410c-bccd-d20a9aafff58
          - 002c55f5-ed67-4273-a6b8-cefb911bc095
          topics:
          - name: Engineering
            id: bb422b16-7eef-40b1-9cd8-82085de351bb
            story-count: 1241
            prominence-score: 0.9560862865947611
          - name: Market Regulation
            id: eb920503-7b82-4e56-8713-b091b7a1d442
            story-count: 1234
            prominence-score: 0.9506933744221879
          source-count-global: 2832
        - labels:
          - password
          - apple google and microsoft
          - fido
          - passwords
          - passwordless
          - microsoft
          - login
          - google
          - apple
          date: '2022-05-06'
          document-count-entitlements: 915
          hash: 01ea-864a924c-876ddbc5-fdfc6d72-a317284f
          story-count-global: 603
          story-ids:
          - 79ef9f05-3e0f-4eeb-87e5-2f3a87cfb618
          - a34fc505-4904-4089-81ac-0eda798d5cc7
          - c5f2e79e-6454-4bbf-b969-5933a121e711
          document-count-global: 979
          entities:
          - name: Google
            id: 6d1cde63-7ff9-410a-a63c-a6741802858b
            type: organisation
            story-count: 577
            prominence-score: 0.956882255389718
          - name: Apple Inc.
            id: aee5dfa5-cf7e-4bcd-80c3-79b0125effc8
            type: organisation
            story-count: 572
            prominence-score: 0.9485903814262023
          topics:
          - name: Engineering
            id: bb422b16-7eef-40b1-9cd8-82085de351bb
            story-count: 600
            prominence-score: 0.9950248756218906
          - name: Digital Futures
            id: c61a8b5c-80fc-4f20-99ed-1a40670660ca
            story-count: 517
            prominence-score: 0.857379767827529
          source-count-global: 650
        event-hash-expiry: '2023-04-04T15:18:04.346649853Z'
        next-cursor: WzE4NCwiMDFmZS1jZTVhNWUwMS1iMmM0NmQ2Zi1iNjQ1MzczNi0yNjcyNTA0YSJd
        stats:
          total:
          - eq
          - 7614
    events-request-example:
      summary: All events related to Apple during May 2022
      value:
        where:
          date:
            gte: '2022-05-01'
            lte: '2022-05-30'
          entities:
            id:
              any:
              - aee5dfa5-cf7e-4bcd-80c3-79b0125effc8
        size: 10
  securitySchemes:
    OAuth2:
      type: oauth2
      description: "To obtain the Bearer Token using the Client ID / Secret pair provided to you:\n\n```bash\ncurl -X POST \\\n  -d 'grant_type=client_credentials' \\\n  -d 'client_id=YOUR_CLIENT_ID' \\\n  -d 'client_secret=YOUR_CLIENT_SECRET' \\\n  https://api.signal-ai.com/auth/token\n```\n\nThis will return the following JSON response:\n\n```json\n{\n    \"access_token\": \"eyJhbGciOi…\",\n    \"expires_in\": 86400,\n    …\n}\n```\n\nYou must send the `access_token` from this response in the Authorization header when making requests to other API endpoints:\n\n```bash\ncurl -H \"Authorization: Bearer eyJhbGciOi…\" \\\n  https://api.signal-ai.com/…\n```\n\nAccess tokens will expire 24 hours from the time they were issued.\n"
      flows:
        clientCredentials:
          tokenUrl: https://api.signal-ai.com/auth/token
          scopes:
            default: Access to discovery endpoints
            search: Access to content search endpoint
            metrics: Access to content metrics endpoint
            affinity: Access to concept affinity endpoints
            events: Access to events endpoint
            risk-events: Access to risk events
            manage-organisation: Access to organisation administration endpoints
x-tagGroups:
- name: Concept Discovery
  tags:
  - Publication sources
  - Topics
  - Entities
  - Categories
- name: Search
  tags:
  - Content Search
- name: Metrics
  tags:
  - Content Metrics
- name: Affinity
  x-displayName: Affinity
  tags:
  - Affinity
- name: Events
  x-displayName: Events
  tags:
  - Events
- name: Risk (Alpha)
  tags:
  - Risk Events
- name: Organisation
  tags:
  - Organisation