Skip to main content
The Intelligence Brief API aggregates signals from up to six platforms — X, Reddit, YouTube, News, Web, and Financial — and produces a forensic narrative analysis covering authenticity scoring, emotion profiling, primary narratives, adversary tracking, and financial market correlations. Each run costs 2 credits and requires a signed-in account.
Intelligence Brief is in beta. The response schema is versioned (currently v2.4) and may gain new optional fields in future releases. All new fields are additive; existing fields will not be removed or renamed without a major version bump.

POST /api/intelligence/analyze

Generate a new Intelligence Brief for one or more search terms across selected platforms.

Authentication

This endpoint requires a signed-in Rhetoric Audit account. Authentication is resolved from your session cookie (web dashboard) or Supabase session token. Anonymous requests receive a 401 response.

Rate limits

In addition to the credit cost, per-user rate limits apply:

Request

string[]
required
One or more search terms to analyze. The engine fetches cross-platform signals matching these terms. Minimum 1 term, maximum 10 terms. Each term must be a non-empty string.
string[]
required
The platforms to pull signals from. Must contain at least one value. Accepted values (lowercase): x, reddit, youtube, news, web, financial.
number
required
Maximum number of signals to collect across all sources. Must be an integer between 10 and 200.

Response

boolean
true when the brief was successfully generated and persisted.
object
The full Intelligence Brief result. See the brief fields section below.
object
Credit consumption details for this request.
object
Timing breakdown for the request.
string[]
Optional array of non-fatal warnings, such as partial source failures or mock data usage. Omitted when there are no warnings.
object
Diagnostic information about which sources succeeded or failed.

Brief fields

The brief object contains the full IntelligenceBriefResult. All fields marked optional are additive and may be absent in results from earlier schema versions.
string
UUID of the saved brief record in the database.
string
ISO 8601 timestamp when the brief was saved.
string
A prose summary of the key findings across all signals and narratives.
number
Overall authenticity of the signal set, 0100. Lower scores indicate higher likelihood of coordinated or inauthentic activity.
string
Evidence-based explanation of the authenticity_score. Present in schema v2.1+.
object
Aggregate emotional signal across all analyzed content.
array
Array of dominant narratives detected across platforms.
array
High-signal accounts or sources the LLM identified as authoritative on the topic.
object
Structured risk evaluation of the narrative landscape.
object
Breakdown of how many signals were analyzed per platform.
array
Optional (v2.2+). Accounts identified as primary drivers of adversarial narratives.
object
Optional (v2.2+). Coordination evidence and technical indicators.
object
Optional (v2.3+). Dissonance gauge comparing social vs. institutional sentiment.
array
Optional (v2.4+). Tickers and market theses the LLM infers from narrative signals.

Code example

Error responses


GET /api/intelligence/briefs

Retrieve a paginated list of your historical Intelligence Briefs.

Authentication

Requires a signed-in session. Returns 401 for unauthenticated requests.

Query parameters

number
default:"20"
Number of briefs to return per page. Maximum 100.
number
default:"0"
Zero-based offset for pagination.
string
default:"date"
Sort field. Accepted values: date, signal_count.
string
default:"desc"
Sort direction. Accepted values: asc, desc.
string
default:"all"
Time window filter. Accepted values: all, week (last 7 days), month (last 30 days).

Response

array
Array of brief records. Each item has the same shape as the brief field returned by POST /api/intelligence/analyze, plus id and created_at.
number
Total number of briefs matching the query (before pagination). Use this with limit and offset to implement page controls.

Example