Skip to content

Endpoints

All endpoints below accept Authorization: Bearer es_YOUR_KEY_HERE and are read-only. The base URL is https://api.echosift.io.


Returns a single payload to hydrate a main dashboard: total signals, new signals last 7 days, average growth rate, top providers, top-5 by score, top-5 trending, and last updated timestamp. Cached 5 minutes.

Response fields:

Field Type Description
totalSignals long Total pain signals in the corpus
newSignalsLast7d long New signals detected in the last 7 days
avgGrowthRate double Average growth rate across all signals
topProviders string[] Top source providers by mention count
activeSourcesCount long Count of distinct active source providers
topSignals PainSignalListItem[] Top 5 by composite score
trending PainSignalListItem[] Top 5 by growth rate
lastUpdatedAt ISO instant When this overview was last computed
Terminal window
curl https://api.echosift.io/api/dashboard/overview \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Top N signals by growth rate. Cached 5 minutes.

Param Type Default Description
limit int 10 Max results (max 10)
Terminal window
curl "https://api.echosift.io/api/dashboard/trending?limit=5" \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Returns an array of PainSignalListItem.


Low-volume, high-growth signals.

Param Type Default Description
maxVolume long 100 Max mention volume threshold
minGrowth double 0.5 Minimum growth rate
limit int 10 Max results (max 10)
Terminal window
curl "https://api.echosift.io/api/dashboard/emerging?maxVolume=80&minGrowth=1.0" \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Top signals by a configurable metric.

Param Type Default Description
metric string score Sort by score, growth, or volume
limit int 10 Max results (max 10)

Global activity timeline across top signals.

Param Type Default Description
days int 30 Days of history (1-90)

Daily mention buckets grouped by macro area (for multi-series charts).

Param Type Default Description
days int 30 Days of history (1-90)

Returns MacroAreaTimelineBucket[]:

Field Type Description
date LocalDate Bucket date
macroArea string Area enum value
mentionCount long Mention count for this date and area

Paginated list with optional filters.

Param Type Default Description
query string - Text search on topic and summary
sortBy string score score, growth, volume, or lastSeenAt
direction string desc asc or desc
page int 0 Page number (0-based)
size int 20 Page size (max 100)
minScore double - Minimum score (inclusive)
minDocumentDiversity int - Minimum distinct source repos
macroArea string - One of 11 taxonomy values (case-sensitive)
painType string - bug, feature_request, complaint, or question
owner string - Substring match on the top GitHub owner

Returns PageResponse<PainSignalListItem>.

PainSignalListItem fields:

Field Type Description
id string Signal UUID
topic string LLM-generated topic label
score double Composite pain score [0-100]
volume long Total mention count
growth double Growth rate
lastSeenAt ISO instant Most recent mention
macroArea string Taxonomy area (nullable)
macroAreaConfidence double Classifier confidence [0-1] (nullable)
mentionsLastWindow int Mentions in the last 7-day window (nullable)
mentionsPrevWindow int Mentions in the prior 7-day window (nullable)
painType string Classification (nullable)
uniqueOwnerCount int Distinct GitHub owners
topOwnerName string Top GitHub owner (nullable for non-GitHub)
topOwnerDominancePct int Share of chunks from top owner
Terminal window
curl "https://api.echosift.io/api/pain-signals?macroArea=AI_AGENTS_LLM&sortBy=growth&size=20" \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Full detail for a single signal.

Additional fields beyond list item:

Field Type Description
summary string LLM-generated description
chunkCount long Evidence chunks attached
firstSeenAt ISO instant First mention timestamp
createdAt ISO instant Cluster creation timestamp
updatedAt ISO instant Cluster last update timestamp
Terminal window
curl "https://api.echosift.io/api/pain-signals/SIGNAL_UUID" \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Aggregated statistics with 7-day comparison.

Field Type Description
painSignalId string Signal UUID
totalMentions long All-time mention count
last7dMentions long Last 7 days
prev7dMentions long Prior 7 days
growthRate double (last7d - prev7d) / max(prev7d, 1)
sourceDistribution SourceDistribution[] Breakdown by provider

Daily mention buckets.

Param Type Default Description
days int 30 Days of history (1-365)

Returns { painSignalId, buckets: [{date, count}], totalMentions }.


Tracked owner count, score, and volume over time (from nightly snapshots).

Param Type Default Description
days int 90 Days of history (1-365)

Returns { painSignalId, points: [{date, ownerCount, score, volume}], trackingStartedAt }.


Paginated evidence items (developer quotes with source metadata).

Param Type Default Description
page int 0 Page number
size int 20 Page size (max 100)

EvidenceItem fields:

Field Type Description
chunkId string Chunk ID
documentId string Source document ID
painSignalId string Signal UUID
provider string Source platform (e.g. github, stackoverflow)
postTitle string Post title (nullable)
externalId string Original external post ID
createdAt ISO instant Chunk assignment timestamp
Terminal window
curl "https://api.echosift.io/api/pain-signals/SIGNAL_UUID/evidence?page=0&size=20" \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Provider distribution for a signal.

Param Type Default Description
cluster boolean false When true, aggregates across the similarity cluster

Returns SourceDistribution[]:

Field Type Description
provider string Source platform name
count long Mention count
percentage double Share of total [0-100]

Read-only access to an existing opportunity brief. Returns 404 when no brief has been generated or the brief is stale (older than 7 days).

See the get_brief MCP tool for the full field reference.


Batch timeline (sparklines) for multiple signals in one request.

Param Type Required Description
ids string yes Comma-separated signal UUIDs (max 50)
days int no Days of history (1-365, default 30)

Returns BatchTimelineItem[]:

Field Type Description
painSignalId string Signal UUID
buckets TimelineBucket[] Daily mention buckets (zeros omitted)

Semantic search over the full signal corpus. Returns signals ranked by relevance to the query.

Param Type Required Description
q string yes Search query (3-500 chars)
limit int no Max results (1-50, default 20)

Returns PageResponse<PainSignalListItem>.

Terminal window
curl "https://api.echosift.io/api/signals/semantic-search?q=webhook+retry+failure&limit=10" \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Returns 503 when the semantic search service is temporarily unavailable. Retry after a short delay.


List all generated opportunity briefs (summary only).

Returns OpportunityListItem[]:

Field Type Description
id string Brief UUID
painSignalId string Source signal UUID
topic string Signal topic label
patternStatement string Cross-cluster pattern statement
patternStrength int Model confidence (0-100)
generatedAt ISO instant Generation timestamp
macroArea string Area bucket (nullable)
fitWarning string Non-null when a wedge is needed (nullable)
Terminal window
curl https://api.echosift.io/api/opportunities \
-H "Authorization: Bearer es_YOUR_KEY_HERE"

Pipeline freshness: latest snapshot timestamp and total active signal count. Cached 60 seconds.

Field Type Description
latestSnapshotAt ISO instant When scores were last recomputed (null on fresh deploy)
totalActiveSignals long Active signals passing quality filters
Terminal window
curl https://api.echosift.io/api/meta/pipeline \
-H "Authorization: Bearer es_YOUR_KEY_HERE"