{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/nylas/refs/heads/main/json-schema/nylas-notetaker-media.schema.json",
  "title": "Nylas notetaker.media notification object",
  "description": "Sent when a recording or transcription is processing, available, or deleted. When the [retention window](/docs/v3/notetaker/retention-policies/) elapses, Nylas sends a final `notetaker.media` notification with `status: media_deleted` and no `media` object. This schema describes `data.object` inside the Nylas notification envelope.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the Notetaker bot."
    },
    "grant_id": {
      "type": "string",
      "description": "The grant ID that owns this Notetaker."
    },
    "object": {
      "type": "string",
      "description": "Always `notetaker`.",
      "enum": [
        "notetaker"
      ]
    },
    "meeting_settings": {
      "type": "object",
      "description": "Configuration for what the Notetaker captured.",
      "properties": {
        "video_recording": {
          "type": "boolean",
          "description": "Whether video recording was enabled."
        },
        "audio_recording": {
          "type": "boolean",
          "description": "Whether audio recording was enabled."
        },
        "transcription": {
          "type": "boolean",
          "description": "Whether transcription was enabled."
        },
        "summary": {
          "type": "boolean",
          "description": "Whether AI summary generation was enabled."
        },
        "summary_settings": {
          "type": "object",
          "description": "Custom instructions for summary generation.",
          "properties": {
            "custom_instructions": {
              "type": "string",
              "description": "Prompt instructions for the AI summary."
            }
          }
        },
        "action_items": {
          "type": "boolean",
          "description": "Whether AI action item extraction was enabled."
        },
        "action_items_settings": {
          "type": "object",
          "description": "Custom instructions for action item extraction.",
          "properties": {
            "custom_instructions": {
              "type": "string",
              "description": "Prompt instructions for action item extraction."
            }
          }
        },
        "leave_after_silence_seconds": {
          "type": "integer",
          "description": "Seconds of silence before the bot automatically left the meeting."
        },
        "messages": {
          "type": "object",
          "description": "Custom announcements posted by the bot to the meeting chat. Present only when configured. See [Custom announcements](/docs/v3/notetaker/custom-announcements/).",
          "properties": {
            "on_join": {
              "type": "array",
              "description": "Messages posted shortly after the bot joins, each on its own delay.",
              "items": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ],
                    "description": "Message format. Currently only `text`."
                  },
                  "content": {
                    "type": "string",
                    "description": "The message text (1\u20131,000 characters, HTML stripped)."
                  },
                  "send_after_ms": {
                    "type": "integer",
                    "description": "Delay in milliseconds from bot-join before posting (1\u2013600,000)."
                  }
                }
              }
            },
            "on_participant_join": {
              "type": "array",
              "description": "Messages posted on a trailing debounce when participants join.",
              "items": {
                "type": "object",
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "text"
                    ],
                    "description": "Message format. Currently only `text`."
                  },
                  "content": {
                    "type": "string",
                    "description": "The message text (1\u20131,000 characters, HTML stripped)."
                  },
                  "debounce_ms": {
                    "type": "integer",
                    "description": "Trailing debounce window in milliseconds (1\u2013600,000)."
                  }
                }
              }
            }
          }
        }
      }
    },
    "meeting_provider": {
      "type": "string",
      "description": "The video conferencing provider.",
      "enum": [
        "Google Meet",
        "Zoom",
        "Microsoft Teams"
      ]
    },
    "meeting_link": {
      "type": "string",
      "description": "URL of the meeting the Notetaker attended."
    },
    "join_time": {
      "type": "integer",
      "description": "Unix timestamp when the Notetaker joined."
    },
    "event": {
      "type": "object",
      "description": "Calendar event associated with this Notetaker.",
      "properties": {
        "ical_uid": {
          "type": "string",
          "description": "iCalendar UID of the associated event."
        },
        "event_id": {
          "type": "string",
          "description": "Nylas event ID of the associated event."
        },
        "master_event_id": {
          "type": "string",
          "description": "Master event ID for recurring events."
        }
      }
    },
    "status": {
      "type": "string",
      "description": "Media processing status.",
      "enum": [
        "available",
        "media_deleted",
        "media_error",
        "processing"
      ]
    },
    "state": {
      "type": "string",
      "description": "Current state matching the media status.",
      "enum": [
        "available",
        "media_deleted",
        "media_error",
        "processing"
      ]
    },
    "media": {
      "type": "object",
      "description": "Signed URLs for the media artifacts. Only present when `status` is `available`. Each sub-field is individually optional depending on the notetaker's `meeting_settings` \u2014 for example, `transcript` is only present if `transcription` was enabled, and `recording_file_format` is `mp3` instead of `mp4` for audio-only recordings.",
      "properties": {
        "recording": {
          "type": "string",
          "description": "Signed URL to download the video/audio recording. Omitted when not available."
        },
        "recording_duration": {
          "type": "string",
          "description": "Duration of the recording in seconds. Omitted when not available."
        },
        "recording_file_format": {
          "type": "string",
          "description": "File format of the recording. `mp4` for video recordings, `mp3` for audio-only recordings. Omitted when not available.",
          "enum": [
            "mp4",
            "mp3"
          ]
        },
        "thumbnail": {
          "type": "string",
          "description": "Signed URL for the recording thumbnail image. Omitted when not available."
        },
        "transcript": {
          "type": "string",
          "description": "Signed URL to download the transcript. Omitted when not available."
        },
        "summary": {
          "type": "string",
          "description": "Signed URL to download the AI-generated summary. Omitted when not available."
        },
        "action_items": {
          "type": "string",
          "description": "Signed URL to download the AI-extracted action items. Omitted when not available."
        },
        "retained_until": {
          "type": "integer",
          "description": "Unix timestamp when the media files will be automatically deleted per the notetaker's resolved `retention_time`. The clock starts when the media was first stored. Present whenever media is available; see [Notetaker retention policies](/docs/v3/notetaker/retention-policies/)."
        }
      }
    }
  },
  "required": [
    "id",
    "object",
    "status"
  ],
  "x-nylas-trigger": "notetaker.media",
  "x-nylas-category": "Notetaker",
  "x-provenance": {
    "method": "authored",
    "publisher": "Nylas",
    "source": "https://developer.nylas.com/docs/reference/notifications/notetaker/notetaker-media/",
    "derived_from": "nylas/developer.nylas.com@a7995fb6:src/_component-data/notification-schemas.json",
    "generated": "2026-09-28"
  },
  "examples": [
    {
      "id": "<NOTETAKER_ID>",
      "grant_id": "<NYLAS_GRANT_ID>",
      "object": "notetaker",
      "meeting_settings": {
        "video_recording": true,
        "audio_recording": true,
        "transcription": true,
        "summary": true,
        "summary_settings": {
          "custom_instructions": "Focus on action items related to the product launch."
        },
        "action_items": true,
        "action_items_settings": {
          "custom_instructions": "Group action items by team member."
        },
        "leave_after_silence_seconds": 300,
        "messages": {
          "on_join": [
            {
              "type": "text",
              "content": "\ud83d\udc4b Hey team! I'm your AI notetaker \u2014 here to capture the key points.",
              "send_after_ms": 5000
            }
          ],
          "on_participant_join": [
            {
              "type": "text",
              "content": "\ud83d\udc4b Welcome! Recording and transcription are running.",
              "debounce_ms": 3000
            }
          ]
        }
      },
      "meeting_provider": "Google Meet",
      "meeting_link": "https://meet.google.com/abc-defg-hij",
      "join_time": 1737500936,
      "event": {
        "ical_uid": "<ICAL_UID>",
        "event_id": "<EVENT_ID>",
        "master_event_id": "<MASTER_EVENT_ID>"
      },
      "status": "available",
      "state": "available",
      "media": {
        "recording": "<SIGNED_URL>",
        "recording_duration": "1800",
        "recording_file_format": "mp4",
        "thumbnail": "<SIGNED_URL>",
        "transcript": "<SIGNED_URL>",
        "summary": "<SIGNED_URL>",
        "action_items": "<SIGNED_URL>"
      }
    }
  ]
}