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.


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)

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"

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 opportunity_brief MCP tool for the full field reference.


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"