Configuring Read AI as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Read AI option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
Read AI’s API uses OAuth 2.0. Unlike most connectors, Read AI has no developer portal: applications are registered by each account through a single API call, and you then authorize your application to generate the credentials Nekt needs. The guide below covers every step.Before starting, make sure your workspace has the Downloads option enabled under Workspace Settings → Reports & Sharing. Read AI requires it for any API access.
- Client ID: From the application you register on your Read AI account (guide below).
- Client Secret: From the same application.
- Refresh token: Generated with the Google OAuth Playground (guide below).
- Start Date: (Optional) The earliest meeting start date from which records will be synced. If omitted, the full history available in the API is synced.
- Lookback (days): (Optional, default 1) Read AI generates summaries, transcripts and metrics only after a meeting ends. Each sync re-reads meetings that started within this many days of the previous run so those fields are picked up once they exist.
How to register your Read AI application and generate the Refresh token
How to register your Read AI application and generate the Refresh token
1
Register an application on your Read AI account
Read AI registers applications through an API call rather than a settings screen. Paste the command below into a terminal and run it — you can change Copy the client_id and client_secret from the response.
client_name to anything you like:The
redirect_uris value above points at the Google OAuth Playground, which is what lets you generate the refresh token in the browser in the next steps. Keep it exactly as written.2
Open the Google OAuth Playground
The Google OAuth Playground is a free tool that generates your Refresh token in the browser — no coding involved. Click the link below to open it pre-configured for Read AI:Open Read AI OAuth Playground →
3
Configure the OAuth Playground
In the OAuth Playground, click the gear icon (⚙️) on the right side to open “OAuth 2.0 configuration” and update these values:
- Replace
READ_AI_CLIENT_IDwith your Client ID - Replace
READ_AI_CLIENT_SECRETwith your Client Secret - Verify the endpoints:
- OAuth authorization endpoint:
https://authn.read.ai/oauth2/auth - OAuth token endpoint:
https://authn.read.ai/oauth2/token
- OAuth authorization endpoint:
- Click Close
4
Authorize and get your Refresh token
If your browser is signed in to more than one Read AI account, do this step in a private/incognito window so you are prompted to log in with the right one.
- In Step 1 of the playground (left side), the scopes are already filled in — click Authorize APIs
- You’ll be redirected to Read AI — log in with the account whose meetings you want to sync and click Allow Access
- After returning to the playground, click Exchange authorization code for tokens (Step 2)
- Your refresh_token appears in the response on the right side
If Read AI signs you in through SSO and does not send you back to the playground automatically, click Authorize APIs again — you are already authenticated at that point and the flow will skip the sign-in step.
5
Paste your credentials in Nekt
Back in Nekt, fill in the three fields:
- Client ID: From your Read AI application
- Client Secret: From your Read AI application
- Refresh token: The
refresh_tokenvalue you just copied
The application belongs to whoever registered it, which is why each account uses its own Client ID and Client Secret. Authorize with an account that can see the meetings you intend to sync.
2. Select streams
Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.- Layer: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
- Folder: a folder can be created inside the selected layer to group all tables being created from this new data source.
- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
- Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
- Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:- Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
- Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.Streams and Fields
Every stream is keyed by the meetingid, so they can all be joined together on that field. Below you’ll find all available data streams from Read AI and their corresponding fields:
Meetings
Meetings
Core metadata for every meeting Read AI recorded — who took part, when it happened and on which platform. This is the cheapest stream to sync, since it requests none of Read AI’s generated content.Key Fields:
id- Unique identifier of the meeting (ULID)title- Title of the meeting, as taken from the calendar eventreport_url- URL of the meeting report in the Read AI web app
start_time- When the meeting actually started (UTC), used as the incremental replication keyend_time- When the meeting ended (UTC); empty while the meeting is still in progressscheduled_start_time- When the meeting was scheduled to start (UTC)scheduled_end_time- When the meeting was scheduled to end (UTC)duration_seconds- Actual duration of the meeting in secondsstart_time_ms,end_time_ms,scheduled_start_time_ms,scheduled_end_time_ms- The same timestamps in epoch milliseconds, as returned by the API
owner_name- Display name of the meeting owner (the Read AI user the report belongs to)owner_email- Email address of the meeting ownerparticipants- People invited to or present in the meeting, as a JSON array of objects with name, email, invited and attendedparticipant_count- Number of people listed as participantsattendee_count- Number of participants who actually attended
platform- Conferencing platform the meeting took place on (for example zoom, google_meet or teams)platform_id- Identifier of the meeting on that platformfolders- Names of the Read AI folders the report is filed underlive_enabled- Whether real-time data capture was enabled for this meeting
Meeting Summaries
Meeting Summaries
Read AI’s generated write-up of each meeting: what was discussed, what was decided and what needs to happen next.Key Fields:
id- Unique identifier of the meeting, matching the Meetings streamstart_time- When the meeting started (UTC), used as the incremental replication keystart_time_ms- The same timestamp in epoch milliseconds
summary- Narrative summary of what was discussed during the meetingchapter_summaries- Section-by-section breakdown of the meeting, as a JSON array of chapter objects with their titles, timings and summariesaction_items- Follow-up tasks identified during the meeting, as a JSON array of objectskey_questions- Notable questions raised during the meeting, as a JSON array of objectstopics- Subjects detected in the meeting, as a JSON array of objects
Read AI produces these fields only after a meeting ends, so they are empty for meetings still in progress. The connector’s lookback setting re-reads recent meetings so the content is captured once available.
Meeting Metrics
Meeting Metrics
Read AI’s scoring of how each meeting went.Key Fields:
id- Unique identifier of the meeting, matching the Meetings streamstart_time- When the meeting started (UTC), used as the incremental replication keystart_time_ms- The same timestamp in epoch milliseconds
read_score- Read AI’s overall quality score for the meetingsentiment- Sentiment detected across the meeting, from negative to positiveengagement- How engaged the participants were during the meetingmetrics- The complete metrics object returned by the API, as JSON, so any score not broken out above remains available
Meeting Transcripts
Meeting Transcripts
The full transcript of each meeting, one row per meeting.Key Fields:
id- Unique identifier of the meeting, matching the Meetings streamstart_time- When the meeting started (UTC), used as the incremental replication keystart_time_ms- The same timestamp in epoch milliseconds
transcript_text- Full transcript as plain text, with each line prefixed by the name of the speakerspeakers- People who spoke during the meeting, as a JSON array of objects with their namesturns- Individual speaking turns, as a JSON array of objects with the speaker, the spoken text and the start and end timestamps in epoch millisecondsspeaker_count- Number of distinct speakers detected in the transcriptturn_count- Number of speaking turns in the transcript
Meeting Recordings
Meeting Recordings
Download references for meeting recordings.Key Fields:
id- Unique identifier of the meeting, matching the Meetings streamstart_time- When the meeting started (UTC), used as the incremental replication keystart_time_ms- The same timestamp in epoch milliseconds
recording_download- Download reference for the meeting recording, as returned by the API
Implementation Notes
Authentication
- Read AI’s API is in open beta. Access tokens last 10 minutes and refresh tokens are single-use — Read AI issues a new one on every refresh. Nekt handles this automatically and stores the rotated token between runs.
- Because each refresh token can only be used once, avoid using the same OAuth client with another tool at the same time. If the token chain breaks, re-run the authorization flow and update the source with a new refresh token.
- Read AI has stated that static API keys and personal access tokens are planned for the API’s general availability, which will simplify this setup.
API Limits & Performance
- Read AI enforces a limit of 100 requests per minute per user, and the meetings endpoint returns at most 10 meetings per request. Initial backfills over a long meeting history therefore take a while; the connector paces itself to stay within the limit and retries automatically if it is hit.
- Each stream reads the meetings endpoint separately, requesting only the content it needs. Selecting fewer streams makes extractions meaningfully faster — sync
Meeting Transcriptsonly if you actually need transcript text.
Data Quality Considerations
- Meetings still in progress are synced with the fields Read AI has at that moment; summaries, transcripts and metrics arrive afterwards and are filled in on a later run thanks to the lookback setting.
- Nested values such as
participants,turnsandaction_itemsare delivered as JSON strings, which you can parse in a Query when you need the individual elements. - Real-time transcripts of ongoing meetings (Read AI’s live endpoint) are not extracted: that data only exists when someone keeps the live dashboard open during a call, which does not fit a scheduled extraction.