signals

Fetch one signal by ID, including its full narrative (what happened, why it matters, what to do) when available. Returns 404 for IDs that exist but are not user-facing (non-fired or cluster-child rows) — the same population rule as listSignals.

get/{brand_id}/signals/{signal_id}

Request

  • Base URL
    https://api.scrunchai.com/v1
  • Auth
    HTTP bearer

Path parameters

brand_idinteger required
signal_idinteger required

Response

Successful Response

idinteger required

Signal ID. Stable within one detection; use for getSignal.

detected_for_datestring date required

Anchor date the nightly detection ran for (YYYY-MM-DD).

fingerprintstring required

Stable identity of the underlying issue across nightly re-detections (hash of the slice + metric). An ongoing signal is re-raised daily under the same fingerprint. It does not tell signals on the same slice apart: the brand's and each competitor's signals, and every alert_type, share it. Pair it with subject_kind, competitor_id, alert_type and scope_qualifier to follow one signal.

subject_kind'brand' | 'competitor' required

Whose movement the signal describes: your brand or a competitor.

competitor_idinteger nullable

Competitor ID for competitor signals; null for brand.

subject_namestring nullable

Competitor name for competitor signals, as it was when the signal was detected. Null for brand signals and for some older competitor signals; use competitor_id there.

alert_type'level_change' | 'trend' | 'level' required

Detection kind: level_change (step shift), trend (sustained drift) or level (standing in the current window alone, no baseline).

scope'account' | 'account_platform' | 'topic' | 'topic_platform' required

Slice granularity: account, account_platform, topic, or topic_platform.

scope_qualifierstring required

Scope variant of the signal, e.g. as_observed. Part of its identity: signals that differ only here are tracked and reacted to separately.

metricstring required

Metric the signal fired on (e.g. presence_rate, position_top_rate, cited_domain_rate).

platformstring required

AI platform the signal was detected on. (multi) means the slice spans several platforms — see slice.platforms for the real list.

direction'up' | 'down' | 'none' required

Direction of the movement: up, down, none.

tier'high' | 'confident' | 'worth_a_look' | 'provisional' | 'low_confidence' | 'underpowered' | 'untested' required

Confidence tier, best first: high, confident, worth_a_look, provisional, then noise-floor tiers low_confidence, underpowered, untested (hidden by default).

current_valuenumber required

Metric value over the current window (0-1 rate).

baseline_valuenumber required

Reference value the current value is compared against (0-1 rate): the baseline-window metric for level_change and trend, the fixed threshold or competitor rate for level.

delta_absolutenumber required

current_value - baseline_value (positive = above the reference).

scorenumber nullable

Engine priority score used for the default sort; null for legacy rows.

narrative_whatstring required

One-line headline of what changed.

window_current_startstring date nullable

Start of the current comparison window.

window_current_endstring date nullable

End of the current comparison window.

baseline_definitionstring nullable

Human-readable definition of the reference: the baseline window for level_change and trend, the threshold or competitor for level.

created_atstring date-time required

When the signal row was created (UTC).

Changes

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the required property to the response with the status