Skip to main content

Webhook Event Types

Complete reference of all webhook event types with payload examples.

Overview

Trix emits events when resources change in your account. Subscribe to specific event types to receive real-time notifications via webhooks.

Current emit coverage. As of 2026-04-16 the API routes fire webhooks for: memory events (memory.created / updated / deleted / restored / verified plus the four memory.bulk_* variants), relationship.{created, updated, deleted}, cluster.{created, updated, deleted, memory_added, memory_removed}, space.{created, updated, deleted}, plus non-memory events (hub.member.*, conversation.member.*, request.*, node.terminal.closed).
memory.accessed is the only event in this page still reserved — the hot-path volume + access-pattern leak risk make it an explicit non-goal for now (ADR-146, Option C).

Event Payload Structure

All events follow this structure:

event-structure.json
{
  "id": "evt_abc123",
  "event": "memory.created",
  "created_at": "2024-01-15T10:30:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": { ... },
  "metadata": { ... }
}

Memory Events

memory.created

Triggered when a new memory is created.

memory.created
{
  "id": "evt_abc123",
  "event": "memory.created",
  "created_at": "2024-01-15T10:30:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "mem_456",
    "content": "User prefers dark mode and compact layouts",
    "type": "text",
    "space_id": "spc_123",
    "tags": ["preference", "ui"],
    "priority": 1,
    "metadata": {
      "source": "api",
      "session_id": "sess_789"
    },
    "created_at": "2024-01-15T10:30:00Z"
  }
}

memory.updated

Triggered when a memory's content or metadata is modified.

memory.updated
{
  "id": "evt_def456",
  "event": "memory.updated",
  "created_at": "2024-01-15T11:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "mem_456",
    "content": "User prefers dark mode with high contrast",
    "type": "text",
    "space_id": "spc_123",
    "tags": ["preference", "ui", "accessibility"],
    "priority": 1,
    "updated_at": "2024-01-15T11:00:00Z"
  }
}

memory.deleted

Triggered when a memory is deleted.

memory.deleted
{
  "id": "evt_ghi789",
  "event": "memory.deleted",
  "created_at": "2024-01-15T12:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "mem_456",
    "deleted_at": "2024-01-15T12:00:00Z"
  }
}

memory.accessed (planned)

Will trigger when a memory is read or retrieved. Not emitted yet.

memory.accessed
{
  "id": "evt_jkl012",
  "event": "memory.accessed",
  "created_at": "2024-01-15T13:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "mem_456",
    "access_type": "search",
    "session_id": "sess_999",
    "accessed_at": "2024-01-15T13:00:00Z"
  }
}

Relationship Events

relationship.created

Triggered when a relationship between memories is created.

relationship.created
{
  "id": "evt_rel001",
  "event": "relationship.created",
  "created_at": "2024-01-15T14:00:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "rel_123",
    "source_memory_id": "mem_001",
    "target_memory_id": "mem_002",
    "relationship_type": "supports",
    "weight": 0.85,
    "metadata": {
      "reason": "Both discuss user preferences"
    },
    "created_at": "2024-01-15T14:00:00Z"
  }
}

relationship.updated

Triggered when a relationship is modified.

relationship.updated
{
  "id": "evt_rel002",
  "event": "relationship.updated",
  "created_at": "2024-01-15T14:30:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "rel_123",
    "source_memory_id": "mem_001",
    "target_memory_id": "mem_002",
    "relationship_type": "supports",
    "weight": 0.95,
    "updated_at": "2024-01-15T14:30:00Z"
  }
}

relationship.deleted

Triggered when a relationship is removed.

relationship.deleted
{
  "id": "evt_rel003",
  "event": "relationship.deleted",
  "created_at": "2024-01-15T15:00:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "rel_123",
    "source_memory_id": "mem_001",
    "target_memory_id": "mem_002",
    "deleted_at": "2024-01-15T15:00:00Z"
  }
}

Cluster Events

cluster.created

Triggered when a new cluster is created.

cluster.created
{
  "id": "evt_clu001",
  "event": "cluster.created",
  "created_at": "2024-01-15T16:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "clu_789",
    "name": "User Preferences",
    "description": "All memories about user settings and preferences",
    "color": "#4F46E5",
    "space_id": "spc_123",
    "memory_count": 0,
    "created_at": "2024-01-15T16:00:00Z"
  }
}

cluster.updated

Triggered when a cluster's metadata is modified.

cluster.updated
{
  "id": "evt_clu002",
  "event": "cluster.updated",
  "created_at": "2024-01-15T16:30:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "clu_789",
    "name": "User Preferences & Settings",
    "description": "Updated description",
    "color": "#7C3AED",
    "updated_at": "2024-01-15T16:30:00Z"
  }
}

cluster.deleted

Triggered when a cluster is deleted.

cluster.deleted
{
  "id": "evt_clu003",
  "event": "cluster.deleted",
  "created_at": "2024-01-15T17:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "clu_789",
    "deleted_at": "2024-01-15T17:00:00Z"
  }
}

cluster.memory_added

Triggered when a memory is added to a cluster.

cluster.memory_added
{
  "id": "evt_clu004",
  "event": "cluster.memory_added",
  "created_at": "2024-01-15T17:30:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "cluster_id": "clu_789",
    "memory_id": "mem_456",
    "added_at": "2024-01-15T17:30:00Z"
  }
}

cluster.memory_removed

Triggered when a memory is removed from a cluster.

cluster.memory_removed
{
  "id": "evt_clu005",
  "event": "cluster.memory_removed",
  "created_at": "2024-01-15T18:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "cluster_id": "clu_789",
    "memory_id": "mem_456",
    "removed_at": "2024-01-15T18:00:00Z"
  }
}

Space Events

space.created

Triggered when a new space is created.

space.created
{
  "id": "evt_spc001",
  "event": "space.created",
  "created_at": "2024-01-15T19:00:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "spc_new",
    "name": "Project Alpha",
    "description": "Memories for Project Alpha",
    "is_default": false,
    "created_at": "2024-01-15T19:00:00Z"
  }
}

space.updated

Triggered when a space's metadata is modified.

space.updated
{
  "id": "evt_spc002",
  "event": "space.updated",
  "created_at": "2024-01-15T19:30:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "spc_new",
    "name": "Project Alpha - Phase 2",
    "description": "Updated for phase 2",
    "updated_at": "2024-01-15T19:30:00Z"
  }
}

space.deleted

Triggered when a space is deleted.

space.deleted
{
  "id": "evt_spc003",
  "event": "space.deleted",
  "created_at": "2024-01-15T20:00:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "spc_old",
    "deleted_at": "2024-01-15T20:00:00Z"
  }
}

Audio Events

audio.uploaded

Triggered when an audio file is uploaded for processing.

audio.uploaded
{
  "id": "evt_aud001",
  "event": "audio.uploaded",
  "created_at": "2024-01-15T21:00:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "aud_123",
    "filename": "meeting-recording.mp3",
    "size_bytes": 15728640,
    "duration_seconds": 1847,
    "mime_type": "audio/mpeg",
    "status": "processing",
    "uploaded_at": "2024-01-15T21:00:00Z"
  }
}

audio.transcribed

Triggered when audio transcription is complete.

audio.transcribed
{
  "id": "evt_aud002",
  "event": "audio.transcribed",
  "created_at": "2024-01-15T21:05:00Z",
  "account_id": "acc_xyz",
  "space_id": "spc_123",
  "data": {
    "id": "aud_123",
    "memory_id": "mem_aud123",
    "filename": "meeting-recording.mp3",
    "duration_seconds": 1847,
    "transcript_length": 12450,
    "language": "en",
    "confidence": 0.94,
    "completed_at": "2024-01-15T21:05:00Z"
  }
}

Feedback Events

feedback.submitted

Triggered when feedback is submitted for a memory or search result.

feedback.submitted
{
  "id": "evt_fbk001",
  "event": "feedback.submitted",
  "created_at": "2024-01-15T22:00:00Z",
  "account_id": "acc_xyz",
  "data": {
    "id": "fbk_123",
    "memory_id": "mem_456",
    "feedback_type": "relevance",
    "rating": 5,
    "comment": "Very helpful memory",
    "submitted_at": "2024-01-15T22:00:00Z"
  }
}

Test Event

webhook.test

Sent when you use the "Test Webhook" feature. Use this to verify your endpoint.

webhook.test
{
  "id": "evt_test_001",
  "event": "webhook.test",
  "created_at": "2024-01-15T10:00:00Z",
  "account_id": "acc_xyz",
  "data": {
    "webhook_id": "whk_123",
    "message": "This is a test event",
    "test": true
  }
}

Test events are not retried and don't count toward your event quota.

Subscribing to Events

When creating a webhook, specify which events to receive:

subscribe-specific.json
{
  "name": "My Webhook",
  "url": "https://your-server.com/webhook",
  "events": [
    "memory.created",
    "memory.updated",
    "cluster.memory_added"
  ]
}

Subscribe to All Events

Use the wildcard pattern to receive all events:

subscribe-all.json
{
  "name": "All Events Webhook",
  "url": "https://your-server.com/webhook",
  "events": ["*"]
}

Subscribing to all events can generate high volume. Consider using specific events for production.