Event types

Subscribe to the events relevant to your integration. Each event includes a type string and a data object with event-specific fields.
EventDescription
meeting.completedA meeting recording has finished and the recording is available.
transcript.readyA transcript has been generated and is available for retrieval.
summary.readyA summary has been generated (including after regeneration).
action_item.createdOne or more action items were extracted from a meeting.
action_item.completedAn action item was marked as completed.

meeting.completed

Fired when a meeting recording ends and the recording file is processed. This is typically the first event in the pipeline after a meeting finishes.
Payload
{
  "id": "evt_mc_a1b2c3d4",
  "type": "meeting.completed",
  "created_at": "2026-04-10T14:48:00Z",
  "data": {
    "meeting_id": "mtg_8f3k2j1m4n5p",
    "title": "Weekly Product Sync",
    "platform": "zoom",
    "started_at": "2026-04-10T14:00:00Z",
    "ended_at": "2026-04-10T14:47:32Z",
    "duration_seconds": 2852,
    "participant_count": 6,
    "recording": {
      "file_size_bytes": 34521088,
      "format": "webm"
    }
  }
}
data.meeting_id
string
The unique meeting identifier. Use this to fetch the full meeting object via GET /meetings/:id.
data.title
string
The meeting title.
data.platform
string
Platform where the meeting was recorded.
data.started_at
string
When the recording started.
data.ended_at
string
When the recording ended.
data.duration_seconds
integer
Duration in seconds.
data.participant_count
integer
Number of identified participants.
data.recording
object
Recording metadata including file_size_bytes and format.

transcript.ready

Fired when the transcript for a meeting has been generated. This typically occurs 1-3 minutes after meeting.completed, depending on the meeting length.
Payload
{
  "id": "evt_tr_e5f6g7h8",
  "type": "transcript.ready",
  "created_at": "2026-04-10T14:50:22Z",
  "data": {
    "meeting_id": "mtg_8f3k2j1m4n5p",
    "transcript_id": "trs_9a2b3c4d5e6f",
    "language": "en",
    "duration_seconds": 2852,
    "word_count": 4231,
    "confidence": 0.96,
    "segment_count": 87
  }
}
data.meeting_id
string
The meeting this transcript belongs to.
data.transcript_id
string
The transcript identifier. Use this to fetch the full transcript via GET /transcripts/:id.
data.language
string
Detected language (ISO 639-1).
data.duration_seconds
integer
Duration of the transcribed audio.
data.word_count
integer
Total words in the transcript.
data.confidence
number
Overall transcription confidence score (0 to 1).
data.segment_count
integer
Number of speaker-attributed segments.

summary.ready

Fired when a summary has been generated or regenerated. This typically occurs 15-30 seconds after transcript.ready.
Payload
{
  "id": "evt_sr_i9j0k1l2",
  "type": "summary.ready",
  "created_at": "2026-04-10T14:51:44Z",
  "data": {
    "meeting_id": "mtg_8f3k2j1m4n5p",
    "summary_id": "sum_1g2h3i4j5k6l",
    "format": "structured",
    "language": "en",
    "action_item_count": 4,
    "decision_count": 2,
    "is_regeneration": false
  }
}
data.meeting_id
string
The meeting this summary belongs to.
data.summary_id
string
The summary identifier. Use this to fetch the full summary via GET /summaries/:id.
data.format
string
Summary format: structured, narrative, or bullet_points.
data.language
string
Language of the summary.
data.action_item_count
integer
Number of action items extracted.
data.decision_count
integer
Number of key decisions identified.
data.is_regeneration
boolean
true if this summary was produced by a regeneration request, false if it was the initial generation.

action_item.created

Fired when action items are extracted from a meeting. This event fires once per meeting and includes all action items identified in that meeting.
Payload
{
  "id": "evt_ac_m3n4o5p6",
  "type": "action_item.created",
  "created_at": "2026-04-10T14:51:44Z",
  "data": {
    "meeting_id": "mtg_8f3k2j1m4n5p",
    "meeting_title": "Weekly Product Sync",
    "action_items": [
      {
        "id": "act_p6q7r8",
        "title": "Complete Stripe payment integration testing",
        "assignee": "Priya Patel",
        "due_date": "2026-04-11",
        "priority": "high"
      },
      {
        "id": "act_s9t0u1",
        "title": "Fix checkout page crash on Safari (BUG-442)",
        "assignee": "James Rodriguez",
        "due_date": "2026-04-14",
        "priority": "high"
      },
      {
        "id": "act_v2w3x4",
        "title": "Fix email notification delay (BUG-445)",
        "assignee": "James Rodriguez",
        "due_date": "2026-04-14",
        "priority": "high"
      },
      {
        "id": "act_y5z6a7",
        "title": "Prepare sprint 14 backlog for Friday planning",
        "assignee": "Sarah Chen",
        "due_date": "2026-04-12",
        "priority": "medium"
      }
    ]
  }
}
data.meeting_id
string
The meeting where these action items were identified.
data.meeting_title
string
Title of the meeting.
data.action_items
array
Array of action item summaries. Each includes id, title, assignee, due_date, and priority. Use the List action items endpoint for full details.

action_item.completed

Fired when an action item is marked as completed, either via the API or from the Mavio dashboard.
Payload
{
  "id": "evt_ao_q7r8s9t0",
  "type": "action_item.completed",
  "created_at": "2026-04-11T16:32:08Z",
  "data": {
    "action_item_id": "act_p6q7r8",
    "title": "Complete Stripe payment integration testing",
    "assignee": "Priya Patel",
    "meeting_id": "mtg_8f3k2j1m4n5p",
    "meeting_title": "Weekly Product Sync",
    "completed_at": "2026-04-11T16:32:08Z",
    "completed_by": "api"
  }
}
data.action_item_id
string
The completed action item identifier.
data.title
string
Title of the completed action item.
data.assignee
string
Name of the person who was assigned.
data.meeting_id
string
The meeting this action item came from.
data.meeting_title
string
Title of the meeting.
data.completed_at
string
ISO 8601 timestamp of completion.
data.completed_by
string
How the item was completed: api (via the API), dashboard (via the Mavio web app), or integration (via a connected integration like Slack).

Event timeline

For a typical meeting, events fire in this order:
meeting.completed     →  Recording is ready
    ↓ (~1-3 min)
transcript.ready      →  Transcript is available
    ↓ (~15-30 sec)
summary.ready         →  Summary is generated
action_item.created   →  Action items are extracted (fires with summary.ready)
If you only need to know when a meeting is fully processed, subscribe to summary.ready. By the time this event fires, the transcript, summary, and action items are all available.