For the complete documentation index, see llms.txt. This page is also available as Markdown.

Signals

Search Sumble Signals across the accounts available to your API key. Signals include champion movements, recent hires and promotions, technology and product mentions, projects and initiatives, and technology or job function trends.

Use this endpoint when you want a filtered feed across many accounts. If you already have one Sumble organization id, use Organization signals instead.

Use Priority Signals search when you want the AI-generated digest items from your Priority Signals feed, filtered by the signal, organization, person, or job post IDs attached to their source signals.

Use the signal configs listing when you want the standing rules behind the feed — what each signal watches for, and how much of your feed it drives.

Search signals

Search by any combination of signal IDs, organization IDs, person IDs, technology slugs, job function names, priorities, saved organization list IDs, and signal config IDs. The request body may be omitted; when present, all filter fields are optional. Filters are combined with AND; values inside each filter array are combined with OR.

curl https://api.sumble.com/v9/signals \
  --request POST \
  --header "Authorization: Bearer $API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "filter": {
      "signal_ids": [123],
      "organization_ids": [31],
      "person_ids": [12729201],
      "job_functions": ["Account Executive"],
      "priorities": ["high"],
      "account_list_ids": [4],
      "signal_config_ids": [512]
    }
  }'

To search people-movement signals by job function, omit technology_slugs unless the same signals also have matching technology metadata.

To search for signals about specific people, pass their Sumble person IDs in person_ids. This matches the person_id field returned on person-related signals.

To see what one of your standing rules has turned up, pass its ID in signal_config_ids. This matches the signal_config_id returned on each signal; use List signal configs to find the IDs your account can read. Because a search only ever covers signals already in your feed, this filter narrows that feed — it never exposes signals or configs you could not otherwise see.

Recency window

This endpoint returns only signals from the last 60 days, regardless of the other filters you apply. This keeps searches fast and focused on current activity.

The only exception is a direct lookup by signal_ids: those signals are always returned regardless of age.

Pagination

Results default to 100 signals per page, with a maximum limit of 100. Use offset to skip results; it defaults to 0 and accepts values up to 10,000. Results use deterministic newest-first ordering. Each returned signal costs 1 credit, so larger pages and additional pages consume credits for every signal returned.

Response

The response contains a signals array. Each signal includes signal_id, a display-ready title, display_type, and date, plus optional context such as subtitle, type, organization_name, organization_id, person_id, matched_technologies, location, job_function, priority, explanation, and sales_angle.

Each signal carries the signal_config_name of the rule that generated it. When that config is visible to your account, the signal also carries its signal_config_id; pass the ID to List signal configs to read the full rule. A coworker's individual config remains private, but its name still explains why the signal appears in a shared domain feed.

For person-movement signals, subtitle may include a normalized start-date label such as Started Jun 2026 or Starting Jul 2026.

A signal about a person carries two links for them: person_sumble_url, their Sumble profile page, and linkedin_url. Use the Sumble profile as the primary link — it is the page that carries what Sumble knows about them.

Job-post signals (technology and product mentions, projects, and first mentions) also include suggested_contacts: the top contacts to consider reaching out to at the account, ranked by relevance. It contains a people array — each with person_id, name, title, sumble_url, linkedin_url, and a relevance score from 1 to 10 (higher is a stronger match) — and a sumble_url on suggested_contacts itself, linking to all matching people for the job post.

Each signal also includes account_status: the CRM relationship between the signal's organization and your account (customer, prospect, or not_in_crm). Only populated when your account has a linked CRM seat (Salesforce or HubSpot). Without one, the REST API omits the field and the SearchSignals MCP tool returns it as null.

File download

Set file_name to a filename ending in .csv, .xlsx for an Excel workbook, or .json, to download the matching signals. The file contains the requested page, with one row per signal and one column per response field. matched_technologies and suggested_contacts contain compact JSON text within their cells in a .csv or .xlsx, and stay nested in a .json.

The response keeps its credit metadata, adds an authenticated Sumble download URL and file details, and returns an empty signals array because the rows are in the file. Ask Sumble and Slack attach the file automatically. Other MCP clients should present the download URL instead of recreating the file with code execution.

Credit cost

1 credit per signal returned. Searches with no returned signals do not consume credits.

Search signals

post

Signals are sales-relevant events such as champion job changes, recent hires and promotions, technology and product mentions, projects and initiatives, and technology and job-function trends. Job-post signals (technology and product mentions, projects, and first mentions) also include suggested_contacts: the top few people to consider reaching out to at the account, plus a link to view all of them. Each signal also carries account_status: the CRM relationship between the signal's organization and the calling account ('customer', 'prospect', or 'not_in_crm'). Only populated when the calling account has a linked CRM seat (Salesforce or HubSpot). Results are paginated with limit (default and maximum 100) and offset (default 0, maximum 10,000).

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
limitinteger · min: 1 · max: 100Optional

Maximum number of signals to return.

Default: 100
offsetinteger · max: 10000Optional

Number of signals to skip.

Default: 0
Responses
200

Signals matching the requested filters. Charged one credit per signal returned. Job-post signals also carry suggested_contacts with the top contacts to consider and a link to view all.

application/json
idstring · uuidRequired
credits_usedintegerRequired
credits_remainingintegerRequired
post/v9/signals
POST /v9/signals HTTP/1.1
Host: api.sumble.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 92

{
  "filter": {
    "organization_ids": [
      171
    ],
    "technology_slugs": [
      "zoominfo"
    ],
    "account_list_ids": [
      4
    ]
  }
}
{
  "id": "019c2a87-11f0-78b3-b82d-cdd178cf4018",
  "credits_used": 2,
  "credits_remaining": 998,
  "signals": [
    {
      "title": "Amazon hired Jane Doe",
      "subtitle": "Started Jun 2026",
      "explanation": "Jane Doe joined the platform team.",
      "sales_angle": "The team is expanding Kubernetes.",
      "date": "2026-06-17T12:00:00Z",
      "sumble_url": "https://sumble.com/orgs/amazon/signals/s/123",
      "signal_id": 123,
      "display_type": "New hire using Kubernetes",
      "type": "technology_recent_hires",
      "organization_name": "Amazon",
      "organization_id": 1,
      "job_post_id": 789,
      "person_id": 456,
      "linkedin_url": "https://www.linkedin.com/in/jane-doe",
      "location": "Seattle, WA",
      "job_function": "Engineering",
      "priority": "high",
      "signal_config_id": 512,
      "signal_config_name": "Kubernetes hiring at my accounts"
    },
    {
      "title": "Amazon is hiring for Kubernetes",
      "explanation": "Kubernetes mentioned in a job post.",
      "date": "2026-06-18T12:00:00Z",
      "sumble_url": "https://sumble.com/orgs/amazon/signals/s/124",
      "signal_id": 124,
      "display_type": "Kubernetes mentioned",
      "type": "technology_any_mentions",
      "organization_name": "Amazon",
      "organization_id": 1,
      "job_post_id": 790,
      "priority": "medium",
      "suggested_contacts": {
        "people": [
          {
            "person_id": 456,
            "name": "John Smith",
            "title": "Director of Platform Engineering",
            "linkedin_url": "https://www.linkedin.com/in/john-smith",
            "score": 7.6
          }
        ],
        "sumble_url": "https://sumble.com/orgs/amazon/teams/platform/jobs/790"
      }
    }
  ]
}

Search Priority Signals

Search your Priority Signals digest items by any combination of signal IDs, organization IDs, person IDs, job post IDs, and your relevance feedback. The request body may be omitted; when present, all filter fields are optional. Filters are combined with AND; values inside each filter array are combined with OR.

Priority Signals are AI-generated summaries of the highest-priority signals in your account feed. Each result includes the digest item id, headline and content, a URL to view the digest in Sumble, source signal_ids, searchable organization_ids, person_ids, and job_post_ids derived from the source signals, and your relevance feedback (is_relevant).

The is_relevant filter accepts true (only signals you marked relevant) or false (only signals you marked not relevant). Omit it to return priority signals regardless of feedback — omitting it does not match only unreviewed (no-feedback) signals.

Pagination

Results default to 20 priority signals per page, with a maximum limit of 100. Use offset to skip results; it defaults to 0 and accepts values up to 10,000. Results are ordered by completion time, with a deterministic tie-breaker. Each returned priority signal costs 1 credit, so larger pages and additional pages consume credits for every priority signal returned.

Response

The response contains a priority_signals array. Each priority signal includes id, url, signal_ids, headline, content, date, organization_ids, person_ids, and job_post_ids. is_relevant is true or false when you have given feedback. Without feedback, the REST API omits the field and the SearchPrioritySignals MCP tool returns it as null. The date is returned as YYYY-MM-DD.

File download

Set file_name to a filename ending in .csv, .xlsx for an Excel workbook, or .json, to download the requested page. The file contains one row per priority signal. signal_ids, organization_ids, person_ids, and job_post_ids contain compact JSON text within their cells in a .csv or .xlsx, and stay nested in a .json.

The response keeps its credit metadata, adds an authenticated Sumble download URL and file details, and returns an empty priority_signals array because the rows are in the file. Ask Sumble and Slack attach the file automatically. Other MCP clients should present the download URL instead of recreating the file with code execution.

Credit cost

1 credit per priority signal returned. Searches with no returned priority signals do not consume credits.

Search priority signals

post

Priority signals are AI-generated digest items summarizing the most important signals in a user's account feed. They optionally can be searched by signal, organization, person, or job post IDs attached to their source signals. Returns the most recent priority signals based on the specified filters, or omit filters to simply return the latest. Results are paginated with limit (default 20, maximum 100) and offset (default 0, maximum 10,000).

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
limitinteger · min: 1 · max: 100Optional

Maximum number of priority signals to return.

Default: 20
offsetinteger · max: 10000Optional

Number of priority signals to skip.

Default: 0
Responses
200

Priority signals matching the requested filters. Charged one credit per priority signal returned.

application/json
idstring · uuidRequired
credits_usedintegerRequired
credits_remainingintegerRequired
post/v9/signals/priority
POST /v9/signals/priority HTTP/1.1
Host: api.sumble.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 101

{
  "filter": {
    "organization_ids": [
      171
    ],
    "person_ids": [
      12729201
    ],
    "signal_ids": [
      123
    ],
    "job_post_ids": [
      789
    ]
  }
}
{
  "id": "019c2a87-11f0-78b3-b82d-cdd178cf4018",
  "credits_used": 1,
  "credits_remaining": 998,
  "priority_signals": [
    {
      "url": "https://sumble.com/signals/priority/88",
      "headline": "Amazon is expanding Kubernetes hiring",
      "content": "Amazon has multiple high-priority signals...",
      "date": "2026-06-17",
      "signal_ids": [
        123
      ],
      "organization_ids": [
        1
      ],
      "person_ids": [
        456
      ],
      "job_post_ids": [
        789
      ]
    }
  ]
}

Update Priority Signal Relevance

Mark a priority signal (identified by its id from Search Priority Signals) as relevant or not relevant, or clear previously-set feedback. This mirrors the relevant / not relevant feedback available in the web app, and the feedback is weighed when generating your future digests.

Pass "is_relevant": true (relevant), false (not relevant), or null to clear previously-set feedback.

Response

Returns the updated id and is_relevant.

Credit cost

Free — this endpoint does not consume credits.

Update priority signal relevance

post

Mark a priority signal (identified by its id from Search Priority Signals) as relevant or not relevant, or clear previously-set feedback by passing is_relevant: null. Mirrors the relevant / not relevant feedback available in the web app. Free -- does not consume credits.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
item_idintegerRequired
Body
is_relevantboolean · nullableRequired

Whether this priority signal is relevant (true) or not relevant (false). Pass null to clear previously-set feedback.

Responses
200

Successful Response

application/json
idintegerRequired
is_relevantboolean · nullableOptional
post/v9/signals/priority/{item_id}/relevance
POST /v9/signals/priority/{item_id}/relevance HTTP/1.1
Host: api.sumble.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 20

{
  "is_relevant": true
}
{
  "id": 88,
  "is_relevant": true
}

List signal configs

A signal config is a standing rule that decides which signals reach you — "this technology mentioned in a job post", "a champion changed jobs", "this hiring trend is increasing" — narrowed by a filter over organizations, technologies, job functions and other attributes. Every signal in your feed was generated by one of them.

This endpoint lists the configs your account can read, so you can tell what your feed is actually watching and, when authorized, resolve a signal's signal_config_id into the rule behind it. It is read-only: configs are created and edited in the web app, not through the API.

For an active-config listing, filter by types and priorities, or omit the request body to return everything visible. An explicit signal_config_ids filter is a separate historical lookup: it cannot be combined with types or priorities, and it can return deleted configs that your account is authorized to read. Values inside each filter array are combined with OR.

Access

Configs are scoped exactly as they are on the web app's signal settings page:

  • If your account belongs to a Sumble Enterprise customer with Signals enabled, you read that customer's shared configs.

  • On a Pro plan, you read your own configs, preceded by any configs shared across your email domain.

  • Otherwise you read only your own configs.

Normal listings exclude deleted configs. An explicit lookup by signal_config_ids also uses the web app's config-detail permissions and can return an authorized deleted config so historical signals remain explainable. A coworker's individual config is not readable even when one of its generated signals appears in your shared domain feed. An ID your account cannot read is reported in the response message rather than returned, and the response never reveals whether such a config exists.

Response

The response contains a signal_configs array. Each config includes:

Field
Description

id

The config's ID. Matches signal_config_id on the signals it generates.

name, slug

Display name and stable slug.

type

The kind of event watched for, e.g. technology_any_mentions. Matches type on the signals it generates.

priority

high, medium, or low — stamped on every signal it generates.

scope

user (yours alone), customer (shared across your Sumble Enterprise account), or domain (shared across your email domain). Only user configs are yours to change.

sumble_url

Link to the config's settings page in the web app. For deleted configs, the REST API omits the field and the ListSignalConfigs MCP tool returns it as null.

deleted

Whether the config has been deleted. true appears only in explicit ID lookups.

days

Lookback window, in days, over which the config evaluates activity.

filter_by

advanced_query or customer_people — how the config selects matches.

advanced_query

The filter tree deciding which organizations, technologies, job functions and other attributes match.

people_filter, job_level

Extra restrictions on people-movement configs.

sales_play

Free-text sales play shown alongside the config's signals.

increasing

For trend configs, whether it watches an increasing (true) or decreasing (false) trend.

sort_order

The config's position in the web app's signal settings list.

signal_count_7d

How many signals the config produced in the last 7 days — a good proxy for how much of your feed it drives. For a user-scoped config this counts signals delivered to you; for a shared (customer or domain) config it counts every signal the config generated.

A message explains when the account has no readable active configs or a requested signal_config_ids value is not visible. Otherwise the REST API omits the field and the ListSignalConfigs MCP tool returns it as null.

File download

Set file_name to a filename ending in .csv, .xlsx for an Excel workbook, or .json, to download the matching configs. The file contains one row per config and one column per response field. advanced_query contains compact JSON text within its cell in a .csv or .xlsx, and stays nested in a .json.

The response keeps any explanatory message, adds an authenticated Sumble download URL and file details, and returns an empty signal_configs array because the rows are in the file. Ask Sumble and Slack attach the file automatically. Other MCP clients should present the download URL instead of recreating the file with code execution.

Credit cost

Free — this endpoint does not consume credits.

List signal configs

post

List the signal configs that decide which signals you receive -- their names, types, priorities, lookback windows, and filters, plus how many signals each has produced in the last 7 days and a link to its settings page. Read-only, and scoped exactly as the web app's signal settings page is: your own configs, your Sumble Enterprise account's shared configs, or your email domain's shared configs, whichever apply to you. Normal listings exclude deleted configs; an explicit ID lookup can return an authorized deleted config without a settings link. Free -- does not consume credits.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
Responses
200

Signal configs matching the requested filters. Free -- does not consume credits.

application/json
messagestring · nullableOptional

Explains when the account has no signal configs or a requested signal_config_ids value is not visible. Otherwise the REST API omits this field and MCP returns it as null.

post/v9/signals/configs
POST /v9/signals/configs HTTP/1.1
Host: api.sumble.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 2

{}
{
  "signal_configs": [
    {
      "id": 512,
      "name": "Kubernetes hiring at my accounts",
      "slug": "kubernetes-hiring",
      "type": "technology_any_mentions",
      "priority": "high",
      "scope": "customer",
      "sumble_url": "https://sumble.com/my-team/signals/512",
      "sort_order": 3,
      "days": 7,
      "filter_by": "advanced_query",
      "advanced_query": {
        "operator": "EQ",
        "field": "technology",
        "value": "kubernetes"
      },
      "signal_count_7d": 12
    }
  ]
}

Last updated