Predictive Signals: who in your audience is in market

Predictive Signals: who in your audience is in market

Base URL: https://api.delivr.ai
Version: v1
Authentication: Organization API key. Send X-Api-Key: <dlvr_...> and X-Api-Secret: <secret> on every request (both required). Create the key + secret in the dashboard at https://app.delivr.ai/{org_id}/settings/api-keys.

Once you have an intents audience, Predictive Signals answers the next question: which of its members are showing buying intent right now, which companies they roll up to, and whether that intent is accelerating or fading.

See the Predictive Signals reference for the full request and response schemas.


The three calls

CallAnswers
GET /api/v1/signals/audiences/{id}How many members are in market right now, broken out by momentum, plus the top companies.
GET /api/v1/signals/audiences/{id}/history?range=The same counts over the last 30, 90 (default), 180, or 365 days.
GET /api/v1/signals/audiences/{id}/topicsWhich topics this audience concentrates in or avoids, against an archived day.

All three take the audience's numeric id in the path.

In market and momentum

A member counts as in market when they were active on 3 or more of the last 14 days on the audience's defining topics, at medium or high score. This is computed daily after 13:40 UTC over the trailing 14-day window ending on the document's day.

Every in-market member is also bucketed into a single best momentum tier, checked in this order:

  1. new: first seen active on a defining topic within the window.
  2. rising: this week's activity is at least 1.5x the prior week's.
  3. steady: roughly flat week over week.
  4. cooling: this week's activity is at most half the prior week's.

A member is counted once, under the highest tier that applies.

Reading the overview

GET /api/v1/signals/audiences/{id}?project_id=YOUR_PROJECT_ID
{
  "audience_id": "10482",
  "view": "intents",
  "status": "ready",
  "signals": {
    "day": "20260921",
    "members": 48213,
    "with_intent": 9104,
    "in_market": 2211,
    "momentum": { "new": 340, "rising": 588, "steady": 1102, "cooling": 181, "unknown": 0 },
    "top_companies": [ { "...": "..." } ]
  }
}

status is one of:

  • ready: check view before reading signals. When view is intents, signals is present. When view is profile, signals is null; use the topics call instead.
  • preparing: the audience has no membership index yet and one has been started; ask again after the next indexing run (hourly, except 03:00-09:00 UTC).
  • unavailable: the audience can't have signals right now: a company audience, a paused or failed intents audience, or signals not enabled in this environment. reason says which and what to do (for example, resume or refresh the audience).

Trend, not just a snapshot

GET /api/v1/signals/audiences/{id}/history?project_id=YOUR_PROJECT_ID&range=90d

Returns the same daily counts across the requested window, ending on the audience's latest signals day. range accepts 30d, 90d (default), 180d, or 365d; anything else is a 400.

Unlike the overview, this call never starts preparing the audience: an audience with no history yet answers 200 with days: []. To start preparation, call the overview endpoint above.

Billing

Calls from the dashboard are never metered. An API-key caller is metered as Predictive Signals:

  • One unit per company row returned in the overview's top_companies.
  • One unit per result row returned by topics.
  • The same answer is billed only once per audience per day, no matter how many times it is fetched.

history is aggregates only and is never metered.


Did this page help you?