getMeetingTranscript
The full speaker-by-speaker transcript behind a meeting-summary note, as a PAGEABLE window of ordered { speaker, text } utterances.
The full speaker-by-speaker transcript behind a meeting-summary note, as a PAGEABLE window of ordered { speaker, text } utterances. When the Goliath notetaker attends a meeting, the summary lands as an AI note on each meeting contact and the complete transcript is archived separately: this operation reads that archive. Pass the noteId of the meeting-summary note (from getContact notes[] or a NOTE entry in listContactActivities). Use it whenever the summary is not enough: extracting commitments, action items, exact quotes, pricing figures, or who-said-what. PAGE THE WHOLE MEETING before concluding: a full page (as many utterances as you asked for) means more remain: request again with offset advanced by the count you received until a short page arrives. Action items cluster near the END of a meeting, so an unpaged first window is exactly the wrong place to stop. Returns null (not an error) when the note is not a meeting-summary note, the note is hidden from the caller, or no archive exists; a null on a random note means "this note has no meeting transcript", not a failure. The meeting notetaker is feature-flag gated per org: where the flag is off this operation is refused, which also means no workspace has summary notes to point at it. Quote selectively rather than echoing whole pages back to the user.
curl https://server.goliathdata.com/api/v1/call \
-H "Authorization: Bearer $GOLIATH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "getMeetingTranscript",
"variables": {
"noteId": "<noteId>"
}
}'import { GoliathClient } from '@goliath-data/sdk'
const goliath = new GoliathClient({
apiKey: process.env.GOLIATH_API_KEY!,
baseUrl: 'https://server.goliathdata.com',
})
const result = await goliath.communications.getMeetingTranscript({
noteId: '<noteId>'
})const res = await fetch('https://server.goliathdata.com/api/v1/call', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.GOLIATH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
operationId: 'getMeetingTranscript',
variables: {
noteId: '<noteId>'
}
}),
})
const { data, errors } = await res.json()limit is clamped to 300.
Variables
The example sends only what the schema requires. Some operations also need one of several optional variables (one filter or another, say); the description above says which.
Default 0.
Default 150.
Response
What comes back under data: a list shows as one entry, and a value as its type.
{
"data": {
"meetingNotetakerQuery": {
"transcriptForNote": [
{
"speaker": "…",
"text": "…"
}
]
}
}
}Errors
unknown_variableA variable the operation does not declare. A typo is refused rather than silently dropped.
unauthorizedNo bearer header, or the key is invalid or revoked.
insufficient_scopeThe key lacks the scope the operation requires.
forbiddenA referenced record does not exist, was deleted, or is outside your organization. The gateway cannot tell those apart.
Behaviour
A read. It rejects an Idempotency-Key header with 400 bad_request.