For Agents
Pull meeting recordings, transcripts (JSON, TXT, VTT, SRT), and shareable links from Grain, plus manage tags, sharing, and webhook hooks for downstream automation.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Grain API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fgrain.com%2Fgrain" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fgrain.com%2Fgrain" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Grain API.
List and retrieve meeting recordings via /v2/recordings
Pull transcripts in JSON, TXT, VTT, or SRT format from /v2/recordings/{id}/transcript variants
Generate signed download URLs for recordings with /v2/recordings/{id}/download
GET STARTED
Use for: List my recent Grain meeting recordings, Retrieve the transcript of a meeting as plain text, Get the SRT subtitles for a recorded call, Tag a recording as 'customer-feedback'
Not supported: Does not host or join live calls, run conversation analytics, or schedule meetings - use for managing existing Grain recordings, transcripts, hooks, sharing, and workspace metadata only.
Jentic publishes the only available OpenAPI specification for Grain API, keeping it validated and agent-ready. Grain is a meeting recording, transcription, and notes platform that captures conversations and lets teams search, share, and clip them. The API exposes 22 endpoints covering OAuth2 token issuance, recording listing and retrieval, multi-format transcripts (JSON, TXT, VTT, SRT), download URL generation, tagging, sharing recordings to users and teams, webhook (hooks) management, and user and team listings. Authentication supports OAuth2, Personal Access Tokens, and Workspace Access Tokens.
Tag recordings via PUT and DELETE on /v2/recordings/{id}/tags
Share or unshare recordings to specific users or teams
Create and delete webhook hooks for recording events through /v2/hooks endpoints
List workspace users and teams via /v2/users and /v2/teams
Patterns agents use Grain API for, with concrete tasks.
★ Customer Call Knowledge Base
Customer success teams ingest every recorded customer call, pull transcripts via /v2/recordings/{id}/transcript, and feed them into a searchable knowledge base. The JSON transcript variant includes speaker turns and timestamps, making it easy to chunk for retrieval. Recordings the user does not own or have shared access to are not returned, so workspace-level permissions still apply.
Call POST /v2/recordings to list the last 50 recordings, then GET /v2/recordings/{id}/transcript for each and chunk the speaker turns into a vector store.
Automated Sales Coaching Snippets
Sales managers tag recordings with /v2/recordings/{id}/tags and share key moments to a coaching team via /v2/recordings/{id}/teams. A webhook registered through POST /v2/hooks/create can fire on new recordings so the workflow runs without polling. The API does not perform the coaching analysis itself - pair with an LLM to extract talk-time, objections, and follow-ups.
Register a hook on recording.created, fetch the new recording's transcript on the webhook, and POST to an LLM endpoint for coaching analysis.
Meeting Notes Sync to Productivity Tools
Productivity stacks pull Grain transcripts and metadata to surface meeting notes inside Notion, Linear, or Slack. GET /v2/recordings/{id}/transcript.txt returns a plain-text body suited for posting into chat or note tools. Sharing primitives let an agent automatically grant viewer access to the meeting attendees.
GET /v2/recordings/{id}/transcript.txt for a recording id and POST the body into a Slack channel via the appropriate webhook.
Subtitles and Accessibility Workflow
Marketing and accessibility teams pull SRT or VTT subtitles for recordings used as web video assets. GET /v2/recordings/{id}/transcript.srt and .vtt return ready-to-attach caption files matching the recording's audio track, removing the need for a separate transcription pipeline.
GET /v2/recordings/{id}/transcript.vtt and upload the body alongside the recording's MP4 to a video CMS as a caption track.
Agent-Driven Meeting Recall via Jentic
An assistant answering 'what did we agree with Acme last week?' uses Jentic to discover Grain, list recent recordings, fetch the matching transcript, and reason over the content. The OAuth token sits in Jentic's Jentic One instance, so the agent never handles the raw secret. Workspace-level permissions still apply to which recordings are visible.
Use the Jentic SDK to search 'list grain meeting recordings', load POST /v2/recordings, then chain GET /v2/recordings/{id}/transcript for the most relevant match.
22 endpoints — jentic publishes the only available openapi specification for grain api, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/_/public-api/v2/recordings
List meeting recordings
/_/public-api/v2/recordings/{recording_id}
Get a specific recording
/_/public-api/v2/recordings/{recording_id}/transcript
Get JSON transcript with speaker turns
/_/public-api/v2/recordings/{recording_id}/transcript.srt
Get SRT subtitle transcript
/_/public-api/v2/recordings/{recording_id}/download
Get a signed recording download URL
/_/public-api/v2/recordings/{recording_id}/tags
Add a tag to a recording
/_/public-api/v2/hooks/create
Create a webhook for recording events
/_/public-api/v2/oauth2/token
Generate or refresh an OAuth2 token
/_/public-api/v2/recordings
List meeting recordings
/_/public-api/v2/recordings/{recording_id}
Get a specific recording
/_/public-api/v2/recordings/{recording_id}/transcript
Get JSON transcript with speaker turns
/_/public-api/v2/recordings/{recording_id}/transcript.srt
Get SRT subtitle transcript
/_/public-api/v2/recordings/{recording_id}/download
Get a signed recording download URL
What agents get from Jentic-routed access to this vendor.
Setup
Wiring Grain by hand means handling its bearer auth, learning the /_/public-api/v2 path layout, and stitching together recording, transcript, tag, and sharing calls yourself. Through Jentic you install once, import the Grain API from the API Directory, store the bearer token once, and your agent calls it.
Permission scoping
Grain puts the recording id in the URL path (/recordings/{recording_id}/transcript, /recordings/{recording_id}/tags), so a rule can pin your agent to one recording: it can read the transcript and manage tags for that recording and nothing else. You choose the operations it may call, so ones like deleting a tag or removing a recording share are not included unless you add them.
Credential isolation
Your Grain bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'get a recording transcript' or 'tag a call recording', and Jentic returns the matching Grain operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using Grain API through Jentic.
Why is there no official OpenAPI spec for Grain API?
Grain does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Grain API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.
What authentication does the Grain API use?
Grain supports HTTP Bearer authentication, with three token types accepted: OAuth2 access tokens (issued via POST /_/public-api/oauth2/token), Personal Access Tokens, and Workspace Access Tokens. All three are sent as Authorization: Bearer <token>. Through Jentic, the chosen token type is stored in your Jentic One instance and injected at execution time.
What transcript formats does the Grain API return?
Four formats are supported per recording: GET /_/public-api/v2/recordings/{recording_id}/transcript returns JSON with speaker turns and timestamps, .txt returns plain text, .vtt returns WebVTT captions, and .srt returns SRT subtitles. Pick JSON for agent processing and SRT or VTT when attaching captions to a video player.
What are the rate limits for the Grain API?
The Jentic-generated spec does not declare rate limits. Limits are enforced at the Grain gateway tied to the workspace and token type, with OAuth2 and Workspace tokens typically receiving higher concurrency than Personal Access Tokens. Cache transcripts since they do not change after a recording finalises.
How do I retrieve a meeting transcript through Jentic?
Search Jentic for 'get a grain meeting transcript', load GET /_/public-api/v2/recordings/{recording_id}/transcript, and execute with the recording_id. The Jentic SDK returns the JSON body so the agent can iterate over speaker turns and timestamps directly.
Can I subscribe to new recording events with webhooks?
Yes. POST /_/public-api/v2/hooks/create registers a webhook URL and event type, POST /_/public-api/v2/hooks lists active hooks, and DELETE /_/public-api/v2/hooks/{hook_id} removes one. Use this to trigger transcript fetching on recording.created rather than polling the recordings list.
Can I limit what my agent is allowed to do with the Grain API?
Yes. Jentic One is self-hosted by you, so your own rules decide which Grain operations and which stored token the agent may use. Because Grain puts the recording id in the URL path, such as /recordings/{recording_id}/transcript and /recordings/{recording_id}/tags, you can pin the agent to a single recording so it reads that transcript and manages its tags and nothing else. You choose the operations it may call, so destructive ones like deleting a tag or removing a recording share stay off unless you explicitly add them.
/_/public-api/v2/recordings/{recording_id}/tags
Add a tag to a recording
/_/public-api/v2/hooks/create
Create a webhook for recording events
/_/public-api/v2/oauth2/token
Generate or refresh an OAuth2 token