Skip to main content

Webhook Events

The 60 events SOAT emits, grouped by the resource_type each carries. Every name is <resource type, plural>.<verb>. A webhook subscribes to them by exact name, to one resource type's with <plural>.*, or to all of them with *.

Each event arrives as the envelope described in Webhooks → Event Payload: the name below is the event field and the X-Soat-Event header, the heading above each table is the resource_type field, and data carries the resource in the same shape the REST API returns it.

An orchestration emit_event node also emits events, under whatever name the template author chose. Those are not listed here — they are yours, not SOAT's — and they carry resource_type: orchestration_run.

agent​

EventDescription
agents.createdAn agent was created.
agents.updatedAn agent was updated.
agents.deletedAn agent was deleted.

approval​

EventDescription
approvals.createdAn approval request was raised and is pending.
approvals.approvedA pending approval was approved.
approvals.rejectedA pending approval was rejected.
approvals.expiredA pending approval passed its deadline unanswered.

audit​

EventDescription
audit_entries.createdAn audit entry was recorded.

conversation​

EventDescription
conversations.createdA conversation was created.
conversations.updatedA conversation was updated.
conversations.deletedA conversation was deleted.

conversation_message​

EventDescription
conversation_messages.createdA message was added to a conversation; the payload carries the message plus its conversation_id.
conversation_messages.generatedAn assistant message was generated in a conversation; the payload carries the message plus conversation_id, generation_id and trace_id.
conversation_messages.deletedA message was removed from a conversation; the payload carries the message as it stood plus its conversation_id.

decision​

EventDescription
decisions.completedA decision settled with its answers; the payload carries the decision, answers included.
decisions.failedA decision settled without answers; the payload carries the decision and its error.

document​

EventDescription
documents.createdA document was created.
documents.updatedA document was updated.
documents.deletedA document was deleted.
documents.withdrawnA document was withdrawn: it leaves listings and knowledge search, its chunks are dropped from the index, and the withdrawal is recorded as a version. It stays readable by id and can be restored.
documents.restoredA withdrawn document was restored from an earlier version: its content is re-chunked and re-indexed, and it returns to listings and knowledge search.
documents.ingestedA document finished ingestion and is indexed (status=ready); the payload carries the document plus its final chunk_count.
documents.ingest_failedA document ingestion settled in failure (status=failed); the payload carries the document plus the error reason (e.g. FILE_PARSE_FAILED, INGESTION_TIMEOUT).

eval_run​

EventDescription
eval_runs.completedAn eval run reached a terminal status with its items scored; the payload is the run, carrying the pass/fail verdict consumed by eval-gated promotion.
eval_runs.failedAn eval run could not be executed to completion (infrastructure failure).

exception​

EventDescription
exceptions.createdAn exception was filed.

file​

EventDescription
files.createdA file was uploaded.
files.updatedA file was updated.
files.deletedA file was deleted.

generation​

EventDescription
generations.requires_actionA generation paused for a client-side tool result; the payload carries the generation plus the pending required_action.
generations.completedA generation completed; a turn run in a session carries its session_id.
generations.failedA generation failed.
generations.content_purgedA generation's content was redacted, leaving its auditable skeleton.
generations.chain_limitA continuation chain reached its generation budget and was refused; the payload carries the root generation plus chain_size, limit, limit_source, refused_agent_id and refused_initiator_generation_id.

guardrail​

EventDescription
guardrails.tripwireA guardrail tripwire aborted a tool call; the payload carries the guardrail plus guardrail_version and the aborted call (tool_id, tool_name, action, agent_id, generation_id, orchestration_run_id, node_id).

memory​

EventDescription
memories.retractedA memory was retracted: the fact stopped holding with nothing replacing it, so it leaves knowledge search, dedup and the default listing. It stays readable by id, with its assertions.

orchestration_run​

EventDescription
orchestration_runs.startedAn orchestration run started.
orchestration_runs.awaiting_inputAn orchestration run paused waiting for input.
orchestration_runs.completedAn orchestration run completed.
orchestration_runs.failedAn orchestration run failed.

project​

EventDescription
projects.pausedA project was paused: nothing new starts in it, and the runs and tasks it had in motion park at their next checkpoint.
projects.resumedA project was resumed: the runs and tasks its pause held are handed back, and its schedules fire again.

quota​

EventDescription
quotas.exceededA quota limit was exceeded; the payload carries the quota plus the breached window_key and the observed_value.

session​

EventDescription
sessions.createdA session was created.
sessions.updatedA session was updated.
sessions.deletedA session was deleted.
sessions.generation_startedA generation started in a session; the payload is the session, before the generation is created. The turn settles as a generations.* event.

task​

EventDescription
tasks.createdA task was created.
tasks.transitionedA task moved to a new state; the payload carries the task plus transition and from_state.
tasks.migratedA task moved onto a newer workflow version; the payload carries the task plus from_state and from_workflow_version.
tasks.closedA task reached a terminal state.
tasks.stalledA task exceeded its stall threshold without progress.
tasks.pausedA task's automation was paused by an operator.
tasks.resumedA task's automation was resumed.
tasks.approval_failedA task's approved transition could no longer apply; the payload carries the task plus transition and error_code.
tasks.automation_retryingA task's automation is being retried; the payload carries the task plus attempt, max_attempts, error, generation_id and orchestration_run_id.
tasks.automation_rejectedA task's automation rejected the task; the payload carries the task plus result, transition and error_code.
tasks.automation_unroutedA task matched no automation route; the payload carries the task plus result.

trace​

EventDescription
traces.content_purgedA trace's content was redacted, leaving its auditable skeleton.

usage_threshold​

EventDescription
usage_thresholds.crossedA usage threshold was crossed.