Events

Get an event

Required permissions: events:read.

Always returns people and signals expanded — unlike the list route, there is no expand parameter here because it is not needed.

get/v1/events/{id}

Request

  • Base URL: https://api.trayo.ai
  • URL: https://api.trayo.ai/v1/events/{id}
  • Auth: HTTP bearer

Path parameters

idstring uuid required

Response

The event, always expanded.

idstring uuid required
accountIdstring uuid required
accountNamestring required

The account this event is about, named. On every event, expanded or not, so a digest can say which company without a second call — there is no route that turns an accountId back into a company.

accountUrlstring uri nullable required

That account's website as an absolute HTTP or HTTPS URL, or null when the workspace does not know one — same field, and same rule, as url on GET /v1/accounts.

titlestring required
summarystring nullable required
whyItMattersstring nullable required

Why this event matters to YOUR workspace — one short paragraph relating the event to your solutions and the signals it matched, written by discovery when it wrote the event. summary says what happened; this says why you should care. It is the same text the Trayo app shows under "Why it matters" and that webhook payloads carry as whyItMatters.

null when discovery did not produce one — older events, and events whose signal type skips that stage. Never an empty string.

urlstring nullable required
publicationstring nullable required
eventDatestring date-time required
signalTypestring required
signalKeysstring[] required

Which of YOUR signals matched this event, by signalKey — the slug you named the signal, the same value POST /v1/discoveries takes in its signalKeys and ?signalKey= filters on here. On EVERY event, compact reads included, sorted and without repeats so two reads of one event agree.

This is the per-event attribution signalType does not give you. signalType is the kind of source a signal reads — news, jobs, job_change — and your signals usually share a handful of those between them; signalKeys names the signals themselves. So a run over many signals stays attributable event by event, and a run per signal is not needed to tell which one fired.

Usually one key. Several when several of your signals matched the same event, which Trayo records on the one event rather than duplicating it. [] only where no signal is linked at all: an event from before these links were recorded, or one whose signal has since been deleted.

expand=signals carries the same keys with each match's type, confidence and evidence; this field is the keys alone, and it costs no expansion.

state'live' | 'dismissed' required

The only two states this API publishes. An event that has not reached one of them is not addressable yet — it 404s.

dismissed means Trayo withdrew an event it had produced. To dismiss one yourself send DELETE /v1/events/{id}; the event then reads back in neither state.

dismissalReasonstring nullable required

Why Trayo withdrew this event — a short machine-readable tag such as stale_job_change, no_signal_match or within_batch_duplicate:{eventId}. The vocabulary is Trayo's own and grows over time, so read it as a label, not an enum.

Only ever set on an event whose state is dismissed, and only when a reason was recorded. null on every live event.

createdAtstring date-time required

Changes

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