Query call data
Returns Call AI recordings and their metadata, participants, transcripts, themes, stats, and scores with the recordingsV2 query.
Prerequisites
- Authentication: A valid Call AI access token.
Endpoint
Section titled “Endpoint”POST /public/graphapiBase URL: https://api-gateway.callai.mindtickle.com.
Headers: Authorization: Bearer ACCESS_TOKEN, Content-Type: application/json.
Request
Section titled “Request”The primary query for retrieving data is recordingsV2. This query lets you fetch details of all the recordings.
| Parameter | Required | Description |
|---|---|---|
first |
Required | Specifies the number of recordings to fetch. |
after |
Required | Indicates the cursor position to start fetching from. Required for pagination. |
filters |
Required | Defines criteria to filter the results. Accepts a RecordingsV2Filters object with the properties listed below. |
filters.categoryId |
Required | A string denoting the category of recordings. Values: 1 for all accessible recordings, including the recordings of your team members, 2 for recordings where you were a participant, 3 for recordings shared with you, 4 for recordings bookmarked by you, 5 for recordings where you and your team members participated, and 6 for recordings shared by you. |
filters.personIds |
Optional | An array of IDs to filter by specific people. |
filters.date |
Optional | Filters by a specific date range. Requires an array of two values: start time and end time. |
filters.duration |
Optional | Filters recordings exceeding a minimum duration. Requires an array containing a single integer value in milliseconds. |
filters.title |
Optional | Filters recordings by matching the title string. |
filters.themeIds |
Optional | An array of IDs to filter by specific themes. |
filters.libraryIds |
Optional | An array of IDs to filter by specific libraries. |
filters.callScore |
Optional | An array of integers to filter by specific call scores. |
filters.recorderType |
Optional | An array of integers to filter by recorder type. |
filters.language |
Optional | An array of strings to filter by language. |
sort |
Optional | Defines the sorting order for the response. Pass an array where each element contains sortOrder and sortType. |
sort.sortOrder |
Not specified | asc or desc. |
sort.sortType |
Not specified | score, start_date, call_score, or last_shared. |
Provide both sortOrder and sortType when sorting, as shown below.
Request example
Section titled “Request example”{ recordingsV2( first: 1 after: "0" filters: { categoryId: "1" } sort: { sortType: "start_date", sortOrder: desc } ) { pageInfo { hasNextPage endCursor } edges { node { id mediaUrls { streamingSource } } } }}For subsequent pages, pass data.recordingsV2.pageInfo.endCursor as after while hasNextPage is true. Keep the filters and sorting unchanged. Check GraphQL errors before advancing; stop if a required continuation cursor is missing or repeats.
Response
Section titled “Response”The following fields are available within the node object, a nested field of edges, returned by the recordingsV2 query.
| Field | Description |
|---|---|
id |
A unique numerical identifier for the meeting. |
title |
The title of the meeting as it appears in the calendar event. |
description |
The description of the meeting as it appears in the calendar event. |
date |
The scheduled date and timestamp of the meeting, for example 2025-11-02T09:00:00.000Z. |
actualStartedAt |
The time when any participant actually joined the meeting. This may differ from the scheduled start time. |
aspectRatio |
The video display ratio, for example 16:9 for widescreen. Use this to size video players so recordings display correctly in your interface. |
actualEndedAt |
The time when all participants left the meeting. |
isNew |
Currently documented as returning null rather than a boolean value. |
duration |
The total duration of the meeting in seconds, for example 1385.72. |
sharedBy |
The name of the user who shared the meeting. |
sharedAt |
The timestamp indicating when the meeting was shared. |
sharedWithInternalV2 |
A list of internal users, within the organization, with whom the meeting was shared. Returns an array of InternalShareObjectV2. See Notes. |
sharedWithExternal |
A list of external users, outside the organization, with whom the meeting was shared. Returns an array of ExternalShareUser, where each element contains id, a unique share identifier, email, the email address of the recipient, and externalShareObject, which contains sharedBy, allowDownload, accessRemoved, and externalLink. Parameter: showAccessRemoved, boolean, default false. |
speakerEventsV2 |
Captures every instance a participant speaks. Multiple events may trigger for the same participant. Returns an array of SpeakerEventV2, one per speaker, containing speaker, the ParticipantV2 object who triggered the event, events, an array of SpeakerEvents detailing startTime in seconds, endTime in seconds, and startChunk, time, the total aggregated speaking time for this speaker, and percentage, the percentage of the total meeting time this speaker talked. |
participantsV2 |
Details of all meeting attendees. Returns an array of ParticipantV2, containing subfields such as id, name, email, and type. Parameters: excludeBots, boolean, specify whether to exclude the Call AI bot, and excludeUnknowns, boolean, specify whether to exclude unidentified participants. |
transcription |
The full meeting transcript. Contains meetingId, the ID of the meeting, chunks, an array of TranscriptChunk objects each containing text, startTime, endTime, and speakerEmails, and languageDirection, which indicates text direction with the values ltr for left to right or rtl for right to left. |
account |
Customer account information from your CRM, for example Salesforce or HubSpot. Contains subfields including id, name, and stage, for example “Prospect” or “Customer”. Use this to link recordings to customer accounts. |
themesV2 |
Details of all themes detected during the meeting. Returns a MeetingThemeV2 object containing meetingId, the ID of the meeting, spoken, an array of MeetingThemeDetails for themes spoken by internal reps, heard, an array of MeetingThemeDetails for themes spoken by external participants, and filler, an array of MeetingThemeDetails for filler words spoken by internal participants. Each MeetingThemeDetails object includes id, themeDetails with name, keywords, and counts, and keywordOccurrence. |
aggregatedThemes |
A consolidated view of spoken and heard themes, similar to themesV2. Returns an array of AggregatedThemes containing type, the THEME_TYPE of SPOKEN, HEARD, or ALL, and themes, an array of AggregatedTheme objects containing theme with id, name, and keywords, startChunk, endChunk, startTime, and endTime. If type is ALL, the themes field includes both. Parameter: types, an input array of THEME_TYPE to specify which themes to request. |
mediaUrls |
URLs to access the recording. Includes streamingSource, the URL for online playback, downloadSource, the URL for downloading the file, and label, the quality type, for example “HD” or “Audio”. |
isBookmarked |
Returns true if you have bookmarked this recording. |
isDeleted |
Returns true if the recording has been deleted. |
stats |
Conversation analytics and engagement metrics. Includes interchanges, the number of speaker turn-taking occurrences, avgPatienceTeam and avgPatienceProspect, the average response time in seconds, talktime, the total team talk time in milliseconds with team talk percentage and team listen percentage, questions, team and prospect question arrays containing fields such as displayId and chunkId, and longestMonologue, the longest uninterrupted speaking segments for team and prospect. |
notes |
Your private, paginated notes on this recording. Returns an array of Note objects containing id, noteEntities, type, content, and taggedTimestamps. Parameters: count, how many notes to fetch, and cursor, the next cursor position for pagination. |
notesTaggedTimestamps |
A list of all video timestamps you have referenced in your notes. |
conversations |
Paginated one-on-one message threads about the recording. Returns an array of Conversation objects containing id, author, recipient, and an array of messages. Parameters: count and cursor. |
conversationsTaggedTimestamps |
All video timestamps referenced in conversation messages. |
discussions |
Paginated group discussion threads about this recording. Returns an array of Discussion objects containing an id and an array of comments. Parameters: count and cursor. |
discussionsTaggedTimestamps |
All video timestamps referenced in discussion comments. |
libraries |
Content libraries containing this recording. Includes id, name, description, type, which is SCOPED or PUBLIC, and creator user details. |
notesByIds |
Specific notes fetched without pagination. Parameter: ids, an array of note IDs. |
conversationsByIds |
Specific private conversation threads fetched without pagination. Parameter: ids, an array of conversation IDs. |
discussionsByIds |
Specific public group discussion threads fetched without pagination. Parameter: ids, an array of discussion IDs. |
snippets |
Shorter video clips created from this recording. Returns id, startTime, and endTime. Parameters: contexts and snippetIds. |
sharedWithMTDetails |
Status of sharing to the Mindtickle learning platform. Includes status, which is SUCCESS, PENDING, FAILURE, or NOT_INITIATED, sharedBy, and sharedOn timestamps. |
score |
AI-powered call quality scores and analysis. Includes callScore, score, scoreLevel, and totalLevel. |
host |
Information about the meeting organizer. Includes id, name, emails, type, which is TEAM, PROSPECT, or UNKNOWN, and a full user object if the host is a registered user. |
recorderType |
Numeric code indicating which recording tool was used in the meeting, for example Zoom or Google Meet. |
recordingType |
Returns VIDEO or AUDIO. Helps determine if video features such as thumbnails are available. |
thumbnailUrlV2 |
Preview image URL for video recordings. Returns null for audio. Parameter: type, which currently only accepts TEAM_FIRST. |
allPermittedUsers |
Complete list of users who have permission to access the recording. Includes id, name, email, and designation. |
nextStepsV2 |
AI-extracted action items from the meeting. Includes descriptions, timestamps of mentions, and user feedback on accuracy. |
meetingUrl |
Different URL formats for accessing the recording page. Includes primary for the main view, embedded, and standalone URLs. |
meetingType |
Categorizes the recording as EXTERNAL, with customers, or INTERNAL, team only. |
transcriptReady |
Returns true if transcription is complete and available. |
movieReady |
Returns true if the video is processed and ready for playback. |
language |
The primary language code for the recording, for example en for English or es for Spanish. |
internalAccessType |
Returns ALL, everyone in the company, or DEFAULT, restricted access. |
externalShareUrl |
Public URL for sharing outside your organization. Returns null if not shared. |
hasExternalSharePublicLink |
Returns true if a public share link exists, even if it is expired or revoked. |
keyMomentsV2 |
AI-identified key moments from the meeting. Includes timestamp, endTime, text description, and topic. |
keyMomentsByIds |
Specific key moments fetched by ID. Parameter: ids, an array of key moment IDs. |
copilot |
Contains an isEnabled boolean indicating whether Mindtickle Copilot features are available for this recording. |
callSummary |
AI-generated meeting summary. Includes concise summary text, processing state, errorCode, and genericFeedback. |
- Behavior: The response contains only the fields you request in the query.
- Shared with internal users:
sharedWithInternalV2segregates recipients into two lists:users, onboarded Mindtickle users, andemails, users who are not onboarded but share the company email domain and are not Call AI users. Items in both lists includesnippetandsharedAtmetadata, items in theuserslist contain auserobject, and items in theemailslist contain anemailaddress field. - Rate limits: Use a batch size of fewer than 10 meetings where possible and wait at least 60 seconds between successive batches. See Interacting with the API.
- Errors: A failed GraphQL request can still return HTTP
200 OKwith anerrorsarray in the body. See Error handling. - Permissions: You can only access data for call recordings you are authorized to view within Call AI.