Summaries
A summary belongs to one recording and exists once per language. Use these endpoints to search summaries and to fetch a single summary by its id.
Every endpoint below shows its parameters and response fields in the middle and a request sample with an example response on the right.
Searches recording summaries (parameters in the body)
/v1.0/directories/{directoryId}/summaries/searchSearches recording summaries and returns a truncated snippet of the summary text per hit.
Field overview from the specification
Body fields:
search(string, optional, min. 3 characters): case-insensitive substring, matched anywhere over the summary text AND the generated section items (title/content/subject/description); a recording is a hit if ANY of these matches.page(number, optional, default1): 1-based page number.pageSize(number, optional, default25): page size, max.100.
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,createdOn,languageCode,recordingId,recordingSummaryId,snippet.Example:appointmentId,createdOn
Request body application/json
searchstringoptionalnullableCase-insensitive substring match over the summary text and the generated section items (title/content/subject/description). Min. 3 characters.
pagenumberoptionalPage (1-based, default 1).
pageSizenumberoptionalPage size (default 25, max 100).
Response: each entry in items
recordingSummaryIdstringrequiredId of the recording summary.
recordingIdstringrequiredAssociated recording id.
appointmentIdstringrequirednullableAssociated appointment id (if present).
languageCodestringrequirednullableLanguage code of the summary (IETF language tag, e.g.
de-DE,en-US).snippetstringrequiredTruncated excerpt of the summary text (max. 300 characters).
createdOnstringrequiredCreation timestamp (ISO-8601).
Every page also carries page, pageSize, total, hasMore.
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 403
Forbidden (insufficient permissions).
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.
Returns a single recording summary by id
/v1.0/directories/{directoryId}/summaries/{recordingSummaryId}Returns the full recording summary for the given recordingSummaryId. 404 if the summary does not exist or the caller cannot access the underlying recording. Obtain valid ids from the summary search (POST .../summaries/search) or from GET .../recordings/{recordingId}/summaries.
Field overview from the specification
Path parameters:
directoryId(string): id of the directory (organization) the summary belongs to.recordingSummaryId(string): id of the recording summary to return.
Response fields:
recordingSummaryId(string): id of this summary. A recording can have several summaries — one per language.recordingId(string): id of the recording this summary was generated from.appointmentId(string | null): id of the caller’s own appointment linked to the recording; null if the recording is not linked to an appointment.languageCode(string | null): language of the summary text as an IETF language tag (e.g.de-DE,en-US); null if unknown.summary(string | null): the summary text (Markdown); null if no summary text was generated.createdOn(string): creation timestamp of the summary (UTC ISO-8601).sectionItems(array): the structured, per-section results of the meeting template that produced this summary (always included on this endpoint). Each item has:sectionItemId(string): id of the section item.meetingTemplateSectionId(string | null): id of the meeting-template section this item was generated from (resolve viaGET .../meetingtemplates/{meetingTemplateId}); null for derived items without a template section (e.g. task items).title(string): title of the section item.sectionType(string enum): the section type (summary,tasks,topics,decisions,customListorfreeText).outputFormat(string enum): the format ofcontent(htmlormarkdown).sortOrder(number): order of the item within the summary.content(string | null): the free-text/Markdown content of the item.subject(string | null): task subject (for task-like section items).description(string | null): task description (for task-like section items).responsibleUserName(string | null): name of the responsible person (task items).responsibleUserEmail(string | null): email of the responsible person (task items).dueDate(string | null): due date of the task item (ISO-8601).
Path parameters
directoryIdstringrequiredId of the directory (the Sally company account) the resource belongs to. The directories a token can address are listed by
GET /v1.0/me/directories/memberships.recordingSummaryIdstringrequiredId of the recording summary.
Query parameters
fieldsstringoptionalComma-separated list of the fields to return. Leave it out and you get every field — including fields added in the future, which is your call to make: name your fields if you want to be shielded from that.
Only first-level fields can be named. A nested list such as
attendees,tagsorsectionItemsis returned whole or not at all;attendees.nameis not supported.On a paged response the selection applies to the entries in
items;page,pageSize,totalandhasMoreare always returned. An unknown name is rejected with 400 rather than ignored.Selectable here:
appointmentId,createdOn,isSummarizationCompleted,isSummarizationSucceeded,languageCode,recordingId,recordingSummaryId,sectionItems,summarizationCompletionReason,summary.Example:appointmentId,createdOn
Response
recordingSummaryIdstringrequiredId of the recording summary.
recordingIdstringrequiredAssociated recording id.
appointmentIdstringrequirednullableAssociated appointment id (if present).
languageCodestringrequirednullableLanguage code of the summary (IETF language tag, e.g.
de-DE,en-US).summarystringrequirednullableSummary text.
isSummarizationCompletedbooleanrequiredTrue once the summarization run has finished, whether or not it produced anything.
isSummarizationSucceededbooleanrequiredTrue when there is something to read: summary text or at least one section item. A run over a recording without a transcript finishes too, and then this stays false.
summarizationCompletionReasonstringrequiredWhy the summarization run ended.
noTranscriptmeans there was nothing to summarize, which is an expected outcome and not a failure.unknownwhile it has not finished. The underlying error text is deliberately not exposed.Allowed values:succeedednoTranscriptemptyResulterrorunknowncreatedOnstringrequiredCreation timestamp (ISO-8601).
sectionItemsobject[]requirednullableThe generated section items of the summary (the structured, per-section results of the meeting template). Null when not loaded (the recordings list endpoint only fills this with
?includeDetails=true); the single-summary endpoint always includes it.12 child fields
sectionItemIdstringrequiredId of the section item.
meetingTemplateSectionIdstringrequirednullableId of the meeting template section this item was generated from. Resolve it via
GET /v1.0/directories/{directoryId}/meetingtemplates/{meetingTemplateId}(matches a section’smeetingTemplateSectionId). Null for derived items without a template section (e.g. task items).titlestringrequiredTitle of the template section item.
sectionTypestringrequiredSection type of the item.
Allowed values:summarytaskstopicsdecisionscustomListfreeTextunknownoutputFormatstringrequiredOutput format of the item content.
Allowed values:htmlmarkdownunknownsortOrdernumberrequiredOrder within the summary.
contentstringrequirednullableFree-text/Markdown content of the item.
subjectstringrequirednullableTask subject (for task-like section items).
descriptionstringrequirednullableTask description.
responsibleUserNamestringrequirednullableResponsible person (name).
responsibleUserEmailstringrequirednullableResponsible person (email).
dueDatestringrequirednullableDue date (ISO-8601).
Status codes
- 200Success
- 400
Invalid request (validation error).
- 401
Missing or invalid bearer token.
- 404
Resource not found or not accessible.
- 429
Rate limit exceeded (per token/IP). Transcription uploads may also return
codeFUP_LIMIT_EXCEEDEDorTOO_MANY_CONCURRENT_TRANSCRIPTIONS. - 500
Internal server error.