Launch a freeform multi-source signal search. Returns a searchId to poll for results.
signal_searches row and enqueues the signalSearch Trigger.dev orchestrator, which fans out across every enabled datasource adapter (LinkedIn posts, Reddit, news, SEC filings, G2/Capterra, Hacker News, X, Bluesky, web mentions). The response is immediate (201 with a searchId); poll getSignalSearch for progress.
query (string, required, 1-500 chars) — the freeform search text dispatched to every adapter.filterPrompt (string, optional, up to 1000 chars) — an LLM relevance instruction applied server-side once raw results arrive.GET (list prior searches — listSignalSearches) and DELETE (clear all search history — clearSignalSearchHistory). Both are documented in the OpenAPI spec under the same path; this page covers the creation flow.
pending or running search younger than 10 minutes is allowed per user. Concurrent starts return 409 with A search is already in progress. Wait for the active search to complete (poll getSignalSearch) before starting another.Lifecycle. pending then running then completed (or failed). Results stream in per-source, so polling getSignalSearch during a running state returns partial rows — the UI can render them incrementally.Chained call. On a 201 response, pass the returned searchId to getSignalSearch to poll results.Retry safety. If the Trigger.dev dispatch fails, the server rolls back the signal_searches row so the caller can retry without leaving orphan records.Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Search created and Trigger.dev task dispatched.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Lifecycle state of a signal search. pending = created, task not yet started. running = Trigger.dev task in flight. completed = all sources scanned (results may still be filtered). failed = orchestrator errored.
pending, running, completed, failed