Skip to content
Scalekit Docs

Grain

scalekit19 toolsBearer TokenTranscriptionCollaborationAI

Grain's REST API for managing meeting recordings, transcripts, webhooks, and workspace data. Search and retrieve recordings and transcripts, upload and...

Grain connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'grain'
    const identifier = 'user_123'
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'grain_hooks_list',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • List users, teams, recordings — List the users in the Grain workspace, with their id, name, and email
  • Create recording upload url, hook — Generate a one-time upload URL for adding a new recording to Grain
  • Update recording — Update a Grain recording’s title
  • User recording unshare, recording share — Revoke a workspace user’s shared access to a Grain recording
  • Team recording unshare, recording share — Revoke a team’s shared access to a Grain recording
  • Get recording transcript text, recording transcript, recording — Get a Grain recording’s transcript as plain text, WebVTT, or SRT — ready to display or feed into subtitle/captioning tools, instead of the structured JSON segments returned by grain_recording_transcript_get

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

grain_hook_create#Register a webhook (hook) that Grain calls with an HTTP POST whenever the given event type occurs — new/updated/deleted recordings, highlights, or stories, or upload processing status changes.2 params

Register a webhook (hook) that Grain calls with an HTTP POST whenever the given event type occurs — new/updated/deleted recordings, highlights, or stories, or upload processing status changes.

NameTypeRequiredDescription
hook_typestringrequiredThe event type this webhook subscribes to.
hook_urlstringrequiredHTTPS URL that Grain will POST event payloads to.
grain_hook_delete#Delete a registered Grain webhook so it stops receiving event calls.1 param

Delete a registered Grain webhook so it stops receiving event calls.

NameTypeRequiredDescription
hook_idstringrequiredUUID of the webhook to delete. Use grain_hooks_list to discover hook ids.
grain_hooks_list#List the webhooks (hooks) registered on the Grain workspace, optionally filtered by event type or enabled/disabled state.2 params

List the webhooks (hooks) registered on the Grain workspace, optionally filtered by event type or enabled/disabled state.

NameTypeRequiredDescription
hook_typestringoptionalOnly return webhooks subscribed to this event type.
statestringoptionalOnly return webhooks in this state.
grain_meeting_types_list#List the meeting types configured in the Grain workspace, with their id, name, and scope (internal or external). Use this to resolve meeting type ids needed by grain_recordings_list.0 params

List the meeting types configured in the Grain workspace, with their id, name, and scope (internal or external). Use this to resolve meeting type ids needed by grain_recordings_list.

grain_recording_download#Download the underlying media file for a Grain recording (video/mp4 or audio/mp3, depending on the recording's media_type).1 param

Download the underlying media file for a Grain recording (video/mp4 or audio/mp3, depending on the recording's media_type).

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to download.
grain_recording_get#Get a single Grain recording by id, with optional inclusion of highlights, participants, AI summary/action items, private notes, calendar event, HubSpot links, and screenshares.9 params

Get a single Grain recording by id, with optional inclusion of highlights, participants, AI summary/action items, private notes, calendar event, HubSpot links, and screenshares.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to fetch. Use grain_recordings_list to discover recording ids.
include_ai_action_itemsbooleanoptionalInclude AI-detected action items in the response.
include_ai_summarybooleanoptionalInclude the AI-generated meeting summary in the response.
include_calendar_eventbooleanoptionalInclude the linked calendar event details in the response.
include_highlightsbooleanoptionalInclude the recording's highlights in the response.
include_hubspotbooleanoptionalInclude linked HubSpot company and deal ids in the response.
include_participantsbooleanoptionalInclude the recording's participant list in the response.
include_private_notesbooleanoptionalPersonal Access Token only. Include the caller's private notes on the recording.
include_screensharesbooleanoptionalInclude screenshare timing segments in the response.
grain_recording_share_team#Share a Grain recording with a specific team, granting all of the team's members access to view it.2 params

Share a Grain recording with a specific team, granting all of the team's members access to view it.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to share.
team_idstringrequiredUUID of the team to share the recording with. Use grain_teams_list to discover team ids.
grain_recording_share_user#Share a Grain recording with a specific workspace user, granting them access to view it.2 params

Share a Grain recording with a specific workspace user, granting them access to view it.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to share.
user_idstringrequiredUUID of the workspace user to share the recording with. Use grain_users_list to discover user ids.
grain_recording_tag_add#Add a tag to a Grain recording, for later filtering and organization.2 params

Add a tag to a Grain recording, for later filtering and organization.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to tag.
tagstringrequiredTag to add. Must start with a letter or digit and contain only letters, digits, and hyphens.
grain_recording_tag_remove#Remove a tag from a Grain recording.2 params

Remove a tag from a Grain recording.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to remove the tag from.
tagstringrequiredExact tag name to remove.
grain_recording_transcript_get#Get the structured JSON transcript of a Grain recording: an array of segments, each with a start/end timestamp (ms), the spoken text, and the speaker's name and participant id.1 param

Get the structured JSON transcript of a Grain recording: an array of segments, each with a start/end timestamp (ms), the spoken text, and the speaker's name and participant id.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording whose transcript should be fetched.
grain_recording_transcript_text_get#Get a Grain recording's transcript as plain text, WebVTT, or SRT — ready to display or feed into subtitle/captioning tools, instead of the structured JSON segments returned by grain_recording_transcript_get.2 params

Get a Grain recording's transcript as plain text, WebVTT, or SRT — ready to display or feed into subtitle/captioning tools, instead of the structured JSON segments returned by grain_recording_transcript_get.

NameTypeRequiredDescription
formatstringrequiredText format to return: 'txt' (speaker name + text per line), 'vtt' (WebVTT), or 'srt' (SubRip subtitles).
recording_idstringrequiredUUID of the recording whose transcript should be fetched.
grain_recording_unshare_team#Revoke a team's shared access to a Grain recording.2 params

Revoke a team's shared access to a Grain recording.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to unshare.
team_idstringrequiredUUID of the team whose access should be revoked.
grain_recording_unshare_user#Revoke a workspace user's shared access to a Grain recording.2 params

Revoke a workspace user's shared access to a Grain recording.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to unshare.
user_idstringrequiredUUID of the workspace user whose access should be revoked.
grain_recording_update#Update a Grain recording's title.2 params

Update a Grain recording's title.

NameTypeRequiredDescription
recording_idstringrequiredUUID of the recording to update.
titlestringrequiredNew title for the recording.
grain_recording_upload_url_create#Generate a one-time upload URL for adding a new recording to Grain. After calling this, PUT the raw file bytes (.mov, .mp4, .mp3, or .m4a) to the returned url; Grain processes the file asynchronously and reports progress via 'upload_status' webhooks.2 params

Generate a one-time upload URL for adding a new recording to Grain. After calling this, PUT the raw file bytes (.mov, .mp4, .mp3, or .m4a) to the returned url; Grain processes the file asynchronously and reports progress via 'upload_status' webhooks.

NameTypeRequiredDescription
filenamestringrequiredName of the file to upload, including its extension. Supported extensions: .mov, .mp4, .mp3, .m4a.
user_idstringoptionalUUID of the workspace user who should own the uploaded recording. Required when authenticating with a Workspace Access Token; not used with a Personal Access Token. Use grain_users_list to discover user ids.
grain_recordings_list#List meeting recordings in the Grain workspace (or, with a Personal Access Token, the caller's own recordings). Supports filtering by date range, title search, team, meeting type, attendance, and participant scope, plus optional inclusion of highlights, participants, AI summary/action items, and more. Returns a page of recordings and a cursor for the next page.16 params

List meeting recordings in the Grain workspace (or, with a Personal Access Token, the caller's own recordings). Supports filtering by date range, title search, team, meeting type, attendance, and participant scope, plus optional inclusion of highlights, participants, AI summary/action items, and more. Returns a page of recordings and a cursor for the next page.

NameTypeRequiredDescription
after_datetimestringoptionalOnly return recordings whose start_datetime is after this ISO8601 timestamp (inclusive).
attendancestringoptionalPersonal Access Token only. 'hosted' returns only recordings the caller hosted; 'attended' returns only recordings the caller attended.
before_datetimestringoptionalOnly return recordings whose start_datetime is before this ISO8601 timestamp (exclusive).
cursorstringoptionalPagination cursor from a previous response's cursor field, used to fetch the next page.
include_ai_action_itemsbooleanoptionalInclude AI-detected action items in the response.
include_ai_summarybooleanoptionalInclude the AI-generated meeting summary in the response.
include_calendar_eventbooleanoptionalInclude the linked calendar event details in the response.
include_highlightsbooleanoptionalInclude each recording's highlights in the response.
include_hubspotbooleanoptionalInclude linked HubSpot company and deal ids in the response.
include_participantsbooleanoptionalInclude each recording's participant list in the response.
include_private_notesbooleanoptionalPersonal Access Token only. Include the caller's private notes on each recording.
include_screensharesbooleanoptionalInclude screenshare timing segments in the response.
meeting_type_idstringoptionalOnly return recordings matching this meeting type id (UUID). Use grain_meeting_types_list to discover meeting type ids.
participant_scopestringoptional'internal' returns only internal/team meetings; 'external' returns only external/customer meetings.
team_idstringoptionalOnly return recordings belonging to this team id (UUID). Use grain_teams_list to discover team ids.
title_searchstringoptionalReturn recordings whose title matches this search string.
grain_teams_list#List the teams configured in the Grain workspace, with their id and name. Use this to resolve team ids needed by other tools such as grain_recording_share_team or grain_recordings_list.0 params

List the teams configured in the Grain workspace, with their id and name. Use this to resolve team ids needed by other tools such as grain_recording_share_team or grain_recordings_list.

grain_users_list#List the users in the Grain workspace, with their id, name, and email. Use this to resolve user ids needed by other tools such as grain_recording_share_user or grain_recording_upload_url_create.0 params

List the users in the Grain workspace, with their id, name, and email. Use this to resolve user ids needed by other tools such as grain_recording_share_user or grain_recording_upload_url_create.