Tellius · AsyncAPI Specification

Tellius Search and Job Notification WebSocket API

Version 6.3

Tellius' Search surface is not REST. Clients open a WebSocket, then exchange request and response messages that are correlated by a caller-generated `corrId`. The same channel delivers asynchronous job notifications, which is how a client learns whether an Insight was actually built — the HTTP acknowledgement does not say. Derived from Tellius documentation by API Evangelist; not published by Tellius.

View Spec View on GitHub CompanyAnalyticsBusiness IntelligenceAgentic AnalyticsDecision IntelligenceArtificial IntelligenceMachine-LearningDataEmbedded AnalyticsMCPNatural Language QueryPharmaceuticalsConsumer Packaged GoodsFinancial PlanningAsyncAPIWebhooksEvents

Channels

search
The Search query channel. Address is not stated in the docs and is recorded as a placeholder; the message shapes below are documented verbatim.
notifications
Asynchronous job completion notifications for Insight, data and ML jobs. Address is not stated in the docs and is recorded as a placeholder.

Messages

Heartbeat
Heartbeat
Connection keep-alive / connection test.
ViewHistoryRequest
ViewHistoryRequest
Retrieve previously typed queries matching a partial string.
ViewHistoryResponse
ViewHistoryResponse
ViewSuggestionsRequest
ViewSuggestionsRequest
Retrieve NLP token suggestions for a partial term against a Business View.
ViewSuggestionsResponse
ViewSuggestionsResponse
QueryRequest
QueryRequest
One message shape serves both validation and execution. With enterKeyPress=false the query is validated and tokenized only; with performQuery, enterKeyPress and createViz all true it is executed and a visualization is created. This is Tellius' only rehearsal primitive.
JobNotification
JobNotification
Asynchronous job outcome. status is SUCCESS or FAILURE.

Servers

wss
deployment
Each Tellius customer runs its own deployment; there is no shared public host.

AsyncAPI Specification

tellius-search-asyncapi.yml Raw ↑
generated: '2026-08-30'
method: derived
source: 'https://help.tellius.com/api/search-apis and https://help.tellius.com/api/insights-apis'
x-provenance: 'DERIVED BY API EVANGELIST FROM TELLIUS DOCUMENTATION. Tellius does NOT
  publish an AsyncAPI document. Tellius runs a real, documented WebSocket event surface
  — the entire Search function is WebSocket-based, and asynchronous jobs such as
  Insight creation report completion over the same channel — but describes it only in
  prose and example payloads. This document transcribes those documented messages into
  AsyncAPI 3.0.0 so the event surface is machine-readable. Every channel, message and
  field below appears in Tellius'' own published examples; nothing has been invented.
  Field types are inferred from the example values. The server URL is templated because
  Tellius is deployed per customer.'
asyncapi: 3.0.0
info:
  title: Tellius Search and Job Notification WebSocket API
  version: '6.3'
  description: |
    Tellius' Search surface is not REST. Clients open a WebSocket, then exchange
    request and response messages that are correlated by a caller-generated `corrId`.
    The same channel delivers asynchronous job notifications, which is how a client
    learns whether an Insight was actually built — the HTTP acknowledgement does not
    say.

    Derived from Tellius documentation by API Evangelist; not published by Tellius.
  contact:
    name: Tellius
    url: https://www.tellius.com/
  externalDocs:
    url: https://help.tellius.com/api/search-apis
servers:
  deployment:
    host: '{tellius-deployment-host}'
    protocol: wss
    description: 'Each Tellius customer runs its own deployment; there is no shared
      public host.'
    variables:
      tellius-deployment-host:
        description: The customer's own Tellius domain.
        default: your-tellius-domain.example.com
channels:
  search:
    address: /search
    description: 'The Search query channel. Address is not stated in the docs and is
      recorded as a placeholder; the message shapes below are documented verbatim.'
    x-address-provenance: inferred
    messages:
      heartbeat:
        $ref: '#/components/messages/Heartbeat'
      viewHistoryRequest:
        $ref: '#/components/messages/ViewHistoryRequest'
      viewHistoryResponse:
        $ref: '#/components/messages/ViewHistoryResponse'
      viewSuggestionsRequest:
        $ref: '#/components/messages/ViewSuggestionsRequest'
      viewSuggestionsResponse:
        $ref: '#/components/messages/ViewSuggestionsResponse'
      queryRequest:
        $ref: '#/components/messages/QueryRequest'
  notifications:
    address: /notifications
    description: 'Asynchronous job completion notifications for Insight, data and ML
      jobs. Address is not stated in the docs and is recorded as a placeholder.'
    x-address-provenance: inferred
    messages:
      jobNotification:
        $ref: '#/components/messages/JobNotification'
operations:
  sendSearchRequest:
    action: send
    channel:
      $ref: '#/channels/search'
    summary: 'Send a history, suggestion, validation or execution request.'
  receiveSearchResponse:
    action: receive
    channel:
      $ref: '#/channels/search'
    summary: 'Receive the matching response, correlated by corrId.'
  receiveJobNotification:
    action: receive
    channel:
      $ref: '#/channels/notifications'
    summary: 'Receive asynchronous job success or failure.'
components:
  messages:
    Heartbeat:
      name: heartbeat
      summary: 'Connection keep-alive / connection test.'
      payload:
        type: object
    ViewHistoryRequest:
      name: viewHistoryRequest
      summary: 'Retrieve previously typed queries matching a partial string.'
      payload:
        $ref: '#/components/schemas/ViewHistoryRequest'
    ViewHistoryResponse:
      name: viewHistoryResponse
      payload:
        $ref: '#/components/schemas/ViewHistoryResponse'
    ViewSuggestionsRequest:
      name: viewSuggestionsRequest
      summary: 'Retrieve NLP token suggestions for a partial term against a Business View.'
      payload:
        $ref: '#/components/schemas/ViewSuggestionsRequest'
    ViewSuggestionsResponse:
      name: viewSuggestionsResponse
      payload:
        $ref: '#/components/schemas/ViewSuggestionsResponse'
    QueryRequest:
      name: queryRequest
      summary: |
        One message shape serves both validation and execution. With
        enterKeyPress=false the query is validated and tokenized only; with
        performQuery, enterKeyPress and createViz all true it is executed and a
        visualization is created. This is Tellius' only rehearsal primitive.
      payload:
        $ref: '#/components/schemas/QueryRequest'
    JobNotification:
      name: jobNotification
      summary: 'Asynchronous job outcome. status is SUCCESS or FAILURE.'
      payload:
        $ref: '#/components/schemas/JobNotification'
  schemas:
    ViewHistoryRequest:
      type: object
      required: [requestType, corrId]
      properties:
        requestType:
          type: string
          const: history
        partialQuery:
          type: string
          examples: ['profi']
        maximumAllowedRows:
          type: integer
          examples: [10]
        limit:
          type: integer
          examples: [10]
        isSearchQL:
          type: boolean
        corrId:
          $ref: '#/components/schemas/CorrId'
    ViewHistoryResponse:
      type: object
      properties:
        responseType:
          type: string
          const: history
        totalCount:
          type: integer
          examples: [154]
        query:
          type: string
        history:
          type: array
          items:
            type: object
    ViewSuggestionsRequest:
      type: object
      required: [businessViewId, corrId]
      properties:
        businessViewId:
          $ref: '#/components/schemas/BusinessViewId'
        getNlpSuggestionsFor:
          type: string
          examples: ['profit']
        performQuery:
          type: boolean
        timezone:
          type: string
          examples: ['GMT+0530']
        corrId:
          $ref: '#/components/schemas/CorrId'
    ViewSuggestionsResponse:
      type: object
      properties:
        suggestions:
          type: array
          items:
            type: string
        original:
          type: string
        nextWordStartInd:
          type: integer
        corrId:
          $ref: '#/components/schemas/CorrId'
    QueryRequest:
      type: object
      required: [businessViewId, nlpQuery, corrId]
      properties:
        businessViewId:
          $ref: '#/components/schemas/BusinessViewId'
        nlpQuery:
          type: string
          examples: ['profit']
        enterKeyPress:
          type: boolean
          description: 'false validates and tokenizes without executing; true executes.'
        performQuery:
          type: boolean
        createViz:
          type: boolean
        timezone:
          type: string
        corrId:
          $ref: '#/components/schemas/CorrId'
    JobNotification:
      type: object
      properties:
        request:
          type: object
          description: 'Echo of the request object that created the job.'
        result:
          type: object
          properties:
            insightId:
              type: string
              examples: ['insight_1e2a']
            driverId:
              type: string
              examples: ['driver_c9d9']
            type:
              type: string
              examples: ['DriverCreateResponse']
        status:
          type: string
          enum: [SUCCESS, FAILURE]
        jobId:
          type: string
          format: uuid
        jobType:
          type: string
          examples: ['SegmentDiscoveryInsight']
        starttime:
          type: string
          format: date-time
        timetaken:
          type: string
          examples: ['26s']
        createdBy:
          type: string
        consumed:
          type: boolean
        estimatedResourceSizeBytes:
          type: integer
    CorrId:
      type: string
      description: |
        Caller-generated correlation id. Tellius: "For each query function, users need
        to generate corrId. Every Response will be matched with its corresponding
        Request using corrId." This is the only tracing primitive Tellius exposes.
      examples: ['Ma6jN', 'auW6F', 'f7jfx', 'Eymyb']
    BusinessViewId:
      type: string
      pattern: '^bv_'
      examples: ['bv_c97bee81-4743-47a2-95e8-837946757617']

Work with this as data

Every AsyncAPI spec 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 asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • 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 AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/tellius-search-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?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.