Signals

Create a signal

Required permissions: settings:write.

Create a signal that describes what you want to detect. Send the returned key to POST /v1/discoveries immediately. After the run settles, read its error and blockedSignals before reporting results.

post/v1/signals

Request

  • Base URL: https://api.trayo.ai
  • URL: https://api.trayo.ai/v1/signals
  • Auth: HTTP bearer

Request body

signalKeystring required

Stable public identifier, lowercase alphanumeric with underscores or hyphens (champion_move, funding-round), 3-60 characters, starting and ending with a letter or digit. This is the signal's identity — it appears in the path of every other signal route and cannot be renamed. A key that is already taken is a 409 (signal_key_conflict); a reserved product-managed key is a 400.

type'news' | 'jobs' | 'job_change' required

What this signal searches. news searches the open web. jobs finds hiring activity in job postings from about the last 60 days only: a longer lookback does not reach older postings, so report a jobs signal's period as about 60 days. job_change finds people who started a new role. While the run is active, keep polling it. After it settles, read blockedSignals and error before reporting an empty result.

technology is system-managed and not authorable. reddit is not authorable here either: those signals require a competitor list and this route has no field for one.

detectsstring required

Describe what counts as a match in plain language.

salesIntentstring

Why a match matters commercially.

includesstring[]

Examples of what counts. For job_change, list every title and scope you would accept: a move matches a role the definition describes, or the company-wide chief who directly owns it (a Chief Accounting Officer for Corporate Controller), never another neighbouring title. A company-wide title such as CFO does not match a regional or divisional one (CFO, Latin America) unless you list that scope. Naming senior titles too (Chief Supply Chain Officer beside VP Logistics) makes the search look for them.

excludesstring[]

Cases that never count: each one vetoes a match, except one that names another signal ("this belongs to X"), which sends the match to that signal instead.

weightinteger

Relative importance, 1-3. Default 1.

Response

Signal created, and usable immediately: name its key in POST /v1/discoveries as soon as this answers.

signalKeystring required

The stable public identifier. There is no separate row id.

typestring nullable required
entityTypestring required
detectsstring required
salesIntentstring nullable required
includesstring[] required
excludesstring[] required
weightnumber required
createdAtstring date-time required
updatedAtstring date-time required

Changes

No recorded changes to this operation across all 1 revision of this API.