Grain

App · Meeting Notes · 3 actions

Pull your Grain meeting recordings, AI summaries, action items, and transcripts into your workflows.

Actions

ActionWhat it does
Get a recordingFetch one recording with its AI summary, action items, and highlights.
Get a transcriptFetch a recording's word-for-word transcript, both as one block of text and as timed segments.
List recordingsList the meeting recordings in your Grain workspace.

Get a recording

Fetch one recording with its AI summary, action items, and highlights.

Inputs

Recording IDrecording_idtextRequired
The Grain recording ID, as returned by List recordings.
Include AI summaryinclude_summarytrue/false
Include the AI-generated summary and action items. On by default.Default: true.

Outputs

action_itemslist
Action items Grain's AI picked out
duration_msnumber
How long the recording runs, in milliseconds
end_datetimetext
When the meeting ended
highlightslist
Clips someone highlighted in the recording
participantslist
The people on the call
recording_idtext
Recording ID. Use with Get a recording and Get a transcript.
sourcetext
Where the recording came from, for example 'zoom', 'teams', 'meet', or 'upload'
start_datetimetext
When the meeting started
summarytext
Grain's AI summary of the meeting, as Markdown. Empty when the summary wasn't requested or hasn't been generated.
tagslist
Tags applied to the recording
titletext
The recording's title
urltext
Link to watch the recording in Grain
Example output
{
  "action_items": [
    {
      "assignee": "Ada Lovelace",
      "completed": false,
      "text": "Send the SOC 2 report"
    }
  ],
  "duration_ms": 1920000,
  "end_datetime": "2026-07-29T15:32:00Z",
  "highlights": [
    {
      "highlight_id": "8f2b1c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "text": "We need SOC 2 before we can sign.",
      "timestamp_ms": 742000,
      "url": "https://grain.com/share/highlight/8f2b1c4d"
    }
  ],
  "participants": [
    {
      "confirmed_attendee": true,
      "email": "ada@example.com",
      "name": "Ada Lovelace",
      "scope": "internal"
    },
    {
      "confirmed_attendee": true,
      "email": "grace@example.com",
      "name": "Grace Hopper",
      "scope": "external"
    }
  ],
  "recording_id": "d1c9f7a2-3b4e-4c5d-9e8f-0a1b2c3d4e5f",
  "source": "zoom",
  "start_datetime": "2026-07-29T15:00:00Z",
  "summary": "Acme is evaluating three vendors and needs SOC 2 evidence before moving forward.",
  "tags": [
    "discovery",
    "enterprise"
  ],
  "title": "Acme discovery call",
  "url": "https://grain.com/share/recording/d1c9f7a2-3b4e-4c5d-9e8f-0a1b2c3d4e5f"
}

Get a transcript

Fetch a recording's word-for-word transcript, both as one block of text and as timed segments.

Inputs

Recording IDrecording_idtextRequired
The Grain recording ID, as returned by List recordings.

Outputs

recording_idtext
The recording the transcript belongs to
segmentslist
The transcript split into timed lines
texttext
The whole transcript as one string, one 'Speaker: line' per line. Handy for passing to an AI step.
Example output
{
  "recording_id": "d1c9f7a2-3b4e-4c5d-9e8f-0a1b2c3d4e5f",
  "segments": [
    {
      "end_ms": 3400,
      "speaker": "Ada Lovelace",
      "start_ms": 1200,
      "text": "Thanks for making the time."
    },
    {
      "end_ms": 5100,
      "speaker": "Grace Hopper",
      "start_ms": 3500,
      "text": "Happy to be here."
    }
  ],
  "text": "Ada Lovelace: Thanks for making the time.\nGrace Hopper: Happy to be here."
}

List recordings

List the meeting recordings in your Grain workspace.

Inputs

Started afterafter_datetimedate and time
Optional. Only return recordings that started after this time, as an ISO 8601 timestamp.
Started beforebefore_datetimedate and time
Optional. Only return recordings that started before this time, as an ISO 8601 timestamp.
Title containstitle_searchtext
Optional. Only return recordings whose title contains this text.

Outputs

recordingslist
The matching recordings
Example output
{
  "recordings": [
    {
      "duration_ms": 1920000,
      "end_datetime": "2026-07-29T15:32:00Z",
      "participants": [
        {
          "confirmed_attendee": true,
          "email": "ada@example.com",
          "name": "Ada Lovelace",
          "scope": "internal"
        },
        {
          "confirmed_attendee": true,
          "email": "grace@example.com",
          "name": "Grace Hopper",
          "scope": "external"
        }
      ],
      "recording_id": "d1c9f7a2-3b4e-4c5d-9e8f-0a1b2c3d4e5f",
      "source": "zoom",
      "start_datetime": "2026-07-29T15:00:00Z",
      "tags": [
        "discovery",
        "enterprise"
      ],
      "title": "Acme discovery call",
      "url": "https://grain.com/share/recording/d1c9f7a2-3b4e-4c5d-9e8f-0a1b2c3d4e5f"
    }
  ]
}

On this page