Zusammenfassungen
Eine Zusammenfassung gehört zu einer Aufnahme und existiert einmal je Sprache. Mit diesen Endpunkten durchsuchst du Zusammenfassungen, rufst eine einzelne per Id ab und lädst sie als fertige Datei herunter.
Jeder Endpunkt unten zeigt in der Mitte seine Parameter und Antwortfelder. Rechts findest du Anfragebeispiele in cURL, JavaScript und Python, eine Beispielantwort und Ausprobieren, das die Anfrage mit deinem eigenen Token wirklich abschickt.
Durchsucht Zusammenfassungen (Parameter im Body)
Durchsucht Zusammenfassungen und gibt pro Treffer einen gekürzten Ausschnitt aus dem Text der Zusammenfassung zurück.
Feldübersicht aus der Spezifikation
Felder im Body:
search(string, optional, min. 3 Zeichen): Teilstring ohne Beachtung der Groß- und Kleinschreibung, der an beliebiger Stelle im Text der Zusammenfassung, in den erzeugten Abschnittseinträgen (Titel/Inhalt/Betreff/Beschreibung) UND in den Zellen eines strukturierten Tabellenabschnitts gesucht wird; eine Aufnahme ist ein Treffer, wenn IRGENDEINER davon passt.page(number, optional, Standard1): Seitennummer, beginnend bei 1.pageSize(number, optional, Standard25): Seitengröße, max.100.
Pfadparameter
directoryIdstringPflichtId des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet
GET /v1.0/me/directories/membershipsauf.
Query-Parameter
fieldsstringoptionalKommagetrennte Liste der Felder, die zurückgegeben werden sollen. Lässt du den Parameter weg, bekommst du alle Felder, auch solche, die in Zukunft hinzukommen. Das ist deine Entscheidung: Nenne deine Felder explizit, wenn du davor geschützt sein willst.
Nur Felder der ersten Ebene können angegeben werden. Eine verschachtelte Liste wie
attendees,tagsodersectionItemswird ganz oder gar nicht zurückgegeben;attendees.namewird nicht unterstützt.Bei einer paginierten Antwort gilt die Auswahl für die Einträge in
items;page,pageSize,totalundhasMorewerden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.Hier auswählbar:
appointmentId,createdOn,languageCode,recordingId,recordingSummaryId,snippet.Beispiel:appointmentId,createdOn
Request-Body application/json
searchstringoptionalkann null seinTeilstring-Suche ohne Beachtung der Groß- und Kleinschreibung im Text der Zusammenfassung und in den erzeugten Abschnittseinträgen (Titel/Inhalt/Betreff/Beschreibung). Mindestens 3 Zeichen.
pagenumberoptionalSeite (beginnend bei 1, Standard 1).
pageSizenumberoptionalSeitengröße (Standard 25, max. 100).
Antwort: je Eintrag in items
recordingSummaryIdstringPflichtId der Zusammenfassung.
recordingIdstringPflichtId der zugehörigen Aufnahme.
appointmentIdstringPflichtkann null seinId des zugehörigen Termins (falls vorhanden).
languageCodestringPflichtkann null seinSprachcode der Zusammenfassung (IETF-Sprach-Tag, z. B.
de-DE,en-US).snippetstringPflichtGekürzter Ausschnitt aus dem Text der Zusammenfassung (max. 300 Zeichen).
createdOnstringPflichtZeitstempel der Erstellung (ISO-8601).
Jede Seite trägt außerdem page, pageSize, total, hasMore.
Statuscodes
- 200Erfolg
- 400
Ungültige Anfrage (Validierungsfehler).
- 401
Fehlender oder ungültiger Bearer-Token.
- 403
Verboten (unzureichende Berechtigungen).
- 404
Ressource nicht gefunden oder nicht zugänglich.
- 429
Rate-Limit überschritten (pro Token/IP). Transkriptions-Uploads können außerdem den
codeFUP_LIMIT_EXCEEDEDoderTOO_MANY_CONCURRENT_TRANSCRIPTIONSzurückgeben. - 500
Interner Serverfehler.
Gibt eine einzelne Zusammenfassung anhand ihrer Id zurück
Gibt die vollständige Zusammenfassung zur angegebenen recordingSummaryId zurück. 404, wenn die Zusammenfassung nicht existiert oder der Aufrufer keinen Zugriff auf die zugrunde liegende Aufnahme hat. Gültige Ids erhältst du über die Suche nach Zusammenfassungen (POST .../summaries/search) oder über GET .../recordings/{recordingId}/summaries.
Feldübersicht aus der Spezifikation
Pfadparameter:
directoryId(string): Id des Unternehmenskontos (der Organisation), zu dem die Zusammenfassung gehört.recordingSummaryId(string): Id der Zusammenfassung, die zurückgegeben werden soll.
Felder der Antwort:
recordingSummaryId(string): Id dieser Zusammenfassung. Eine Aufnahme kann mehrere Zusammenfassungen haben, eine pro Sprache.recordingId(string): Id der Aufnahme, aus der diese Zusammenfassung erzeugt wurde.appointmentId(string | null): Id des eigenen Termins des Aufrufers, der mit der Aufnahme verknüpft ist; null, wenn die Aufnahme mit keinem Termin verknüpft ist.languageCode(string | null): Sprache des Zusammenfassungstexts als IETF-Sprach-Tag (z. B.de-DE,en-US); null, wenn unbekannt.summary(string | null): der Text der Zusammenfassung (Markdown); null, wenn kein Text erzeugt wurde.createdOn(string): Zeitstempel der Erstellung der Zusammenfassung (UTC ISO-8601).sectionItems(array): die strukturierten Ergebnisse pro Abschnitt aus dem Meetingtemplate, das diese Zusammenfassung erzeugt hat (bei diesem Endpunkt immer enthalten). Jeder Eintrag enthält:sectionItemId(string): Id des Abschnittseintrags.meetingTemplateSectionId(string | null): Id des Meetingtemplate-Abschnitts, aus dem dieser Eintrag erzeugt wurde (auflösen überGET .../meetingtemplates/{meetingTemplateId}); null bei abgeleiteten Einträgen ohne Template-Abschnitt (z. B. Aufgabeneinträge).title(string): Titel des Abschnittseintrags.sectionType(string enum): der Abschnittstyp (summary,tasks,topics,decisions,customList,freeText,table,appointmentoderemail).outputFormat(string enum): das Format voncontent(htmlodermarkdown).sortOrder(number): Reihenfolge des Eintrags innerhalb der Zusammenfassung.content(string | null): der Freitext- bzw. Markdown-Inhalt des Eintrags. Beitable,appointmentundemailenthält er eine lesbare Markdown-Darstellung der eigenen Felder unten, sodass auch ein Client, der nurcontentliest, den Abschnitt sieht;outputFormatist dannmarkdown.tableVariant(string enum | null): nur beitable.structuredbedeutet, dass die Spalten im Template festgelegt sind und das Ergebnis intableDatasteht;freebedeutet, dass Sally sie gewählt hat und das Ergebnis eine Markdown-Tabelle incontentist.tableData(object | null): Spalten und Zeilen eines strukturiertentable-Abschnitts.followUpMeetingStartTime/followUpMeetingEndTime(string | null): die vereinbarte Uhrzeit einesappointment-Abschnitts, ohne Zeitzone.followUpMeetingParticipants(array | null): Teilnehmende einesappointment-Abschnitts.emailRecipients(array | null): Empfänger einesemail-Abschnitts,toundccin einer Liste, unterschieden überkind.subject(string | null): Betreff der Aufgabe (bei aufgabenartigen Abschnittseinträgen).description(string | null): Beschreibung der Aufgabe (bei aufgabenartigen Abschnittseinträgen).responsibleUserName(string | null): Name der verantwortlichen Person (Aufgabeneinträge).responsibleUserEmail(string | null): E-Mail der verantwortlichen Person (Aufgabeneinträge).dueDate(string | null): Fälligkeitsdatum des Aufgabeneintrags (ISO-8601).
Pfadparameter
directoryIdstringPflichtId des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet
GET /v1.0/me/directories/membershipsauf.recordingSummaryIdstringPflichtId der Zusammenfassung.
Query-Parameter
fieldsstringoptionalKommagetrennte Liste der Felder, die zurückgegeben werden sollen. Lässt du den Parameter weg, bekommst du alle Felder, auch solche, die in Zukunft hinzukommen. Das ist deine Entscheidung: Nenne deine Felder explizit, wenn du davor geschützt sein willst.
Nur Felder der ersten Ebene können angegeben werden. Eine verschachtelte Liste wie
attendees,tagsodersectionItemswird ganz oder gar nicht zurückgegeben;attendees.namewird nicht unterstützt.Bei einer paginierten Antwort gilt die Auswahl für die Einträge in
items;page,pageSize,totalundhasMorewerden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.Hier auswählbar:
appointmentId,createdOn,isSummarizationCompleted,isSummarizationSucceeded,languageCode,recordingId,recordingSummaryId,sectionItems,summarizationCompletionReason,summary.Beispiel:appointmentId,createdOn
Antwort
recordingSummaryIdstringPflichtId der Zusammenfassung.
recordingIdstringPflichtId der zugehörigen Aufnahme.
appointmentIdstringPflichtkann null seinId des zugehörigen Termins (falls vorhanden).
languageCodestringPflichtkann null seinSprachcode der Zusammenfassung (IETF-Sprach-Tag, z. B.
de-DE,en-US).summarystringPflichtkann null seinText der Zusammenfassung.
isSummarizationCompletedbooleanPflichtTrue, sobald der Zusammenfassungsdurchlauf beendet ist, unabhängig davon, ob er etwas erzeugt hat.
isSummarizationSucceededbooleanPflichtTrue, wenn es etwas zu lesen gibt: Text der Zusammenfassung oder mindestens ein Abschnittseintrag. Auch ein Durchlauf über eine Aufnahme ohne Transkript wird beendet, und dann bleibt dieser Wert false.
summarizationCompletionReasonstringPflichtWarum der Zusammenfassungsdurchlauf beendet wurde.
noTranscriptbedeutet, dass es nichts zusammenzufassen gab; das ist ein erwartetes Ergebnis und kein Fehler.unknown, solange er nicht beendet ist. Der zugrunde liegende Fehlertext wird bewusst nicht offengelegt.Erlaubte Werte:succeedednoTranscriptemptyResulterrorunknowncreatedOnstringPflichtZeitstempel der Erstellung (ISO-8601).
sectionItemsobject[]Pflichtkann null seinDie erzeugten Abschnittseinträge der Zusammenfassung (die strukturierten Ergebnisse des Meetingtemplates pro Abschnitt). Null, wenn nicht geladen (der Listen-Endpunkt der Aufnahmen füllt dieses Feld nur mit
?includeDetails=true); der Endpunkt für eine einzelne Zusammenfassung liefert es immer mit.18 Unterfelder
sectionItemIdstringPflichtId des Abschnittseintrags.
meetingTemplateSectionIdstringPflichtkann null seinId des Meetingtemplate-Abschnitts, aus dem dieser Eintrag erzeugt wurde. Auflösen über
GET /v1.0/directories/{directoryId}/meetingtemplates/{meetingTemplateId}(entspricht dermeetingTemplateSectionIdeines Abschnitts). Null bei abgeleiteten Einträgen ohne Template-Abschnitt (z. B. Aufgabeneinträge).titlestringPflichtTitel des Template-Abschnittseintrags.
sectionTypestringPflichtAbschnittstyp des Eintrags.
Erlaubte Werte:summarytaskstopicsdecisionscustomListfreeTexttableappointmentemailunknownoutputFormatstringPflichtAusgabeformat des Eintragsinhalts.
Erlaubte Werte:htmlmarkdownunknownsortOrdernumberPflichtReihenfolge innerhalb der Zusammenfassung.
contentstringPflichtkann null seinFreitext- bzw. Markdown-Inhalt des Eintrags. Bei den Abschnittstypen, die ihr Ergebnis in eigenen Feldern ablegen (Tabelle, Termin, E-Mail), enthält er eine lesbare Markdown-Darstellung dieser Felder, sodass auch ein Client, der nur dieses eine Feld liest, den Abschnitt sieht. Die eigenen Felder werden unverändert daneben zurückgegeben.
subjectstringPflichtkann null seinBetreff der Aufgabe (bei aufgabenartigen Abschnittseinträgen).
descriptionstringPflichtkann null seinBeschreibung der Aufgabe.
responsibleUserNamestringPflichtkann null seinVerantwortliche Person (Name).
responsibleUserEmailstringPflichtkann null seinVerantwortliche Person (E-Mail).
dueDatestringPflichtkann null seinFälligkeitsdatum (ISO-8601).
tableVariantstringPflichtkann null seinNur bei
sectionType: table.structuredbedeutet, dass das Template die Spalten festgelegt hat und das Ergebnis intableDatasteht.freebedeutet, dass Sally die Spalten selbst gewählt hat und das Ergebnis eine Markdown-Tabelle incontentist. Bei allen anderen Abschnittstypen null.Erlaubte Werte:freestructuredunknowntableDataanyPflichtkann null seinDas Tabellenergebnis, nur gesetzt bei
sectionType: tablemittableVariant: structured. BeitableVariant: freeist es null und die Tabelle steht als Markdown-Tabelle incontent.followUpMeetingStartTimestringPflichtkann null seinBeginn des vorgeschlagenen Folgetermins als LOKALES Datum mit Uhrzeit OHNE Zeitzone (
YYYY-MM-DDTHH:mm:ss, z. B.2026-10-16T09:00:00). Bewusst kein UTC-Zeitpunkt: Vereinbart wurde im Meeting eine Uhrzeit (Donnerstag um neun), und eine Zeitzone würde diese Uhrzeit für jeden Leser in einer anderen Zone verschieben. Wende die Zeitzone der Beteiligten an. Nur gesetzt beisectionType: appointment.followUpMeetingEndTimestringPflichtkann null seinEnde des vorgeschlagenen Folgetermins, im selben lokalen Zeitformat wie
followUpMeetingStartTime. Null, wenn im Meeting ein Beginn, aber kein Ende genannt wurde.followUpMeetingParticipantsobject[]Pflichtkann null seinDie Personen, die im Meeting für den Folgetermin genannt wurden. Nur gesetzt bei
sectionType: appointment.4 Unterfelder
userIdstringPflichtkann null seinId des zugeordneten Nutzerkontos, oder null, wenn für diese Person kein Konto gefunden wurde. Auflösen über
GET /v1.0/directories/{directoryId}/memberships/users/{userId}.namestringPflichtName der Person, wie er im Meeting erkannt wurde.
emailstringPflichtkann null seinE-Mail-Adresse, wie sie im Meeting erkannt wurde, in Kleinbuchstaben. Null, wenn die Person im Meeting ohne Adresse genannt wurde.
isExternalbooleanPflichtkann null seinTrue, wenn die Person als nicht zur eigenen Organisation gehörend erkannt wurde. Null, wenn das Meeting keinen Hinweis darauf gab.
emailRecipientsobject[]Pflichtkann null seinEmpfänger der vorgeschlagenen E-Mail, direkt und in Kopie (siehe
kind). Nur gesetzt beisectionType: email; der Betreff steht insubject, der Text indescription.4 Unterfelder
userIdstringPflichtkann null seinId des zugeordneten Nutzerkontos, oder null, wenn für diese Person kein Konto gefunden wurde. Auflösen über
GET /v1.0/directories/{directoryId}/memberships/users/{userId}.namestringPflichtName der Person, wie er im Meeting erkannt wurde.
emailstringPflichtkann null seinE-Mail-Adresse, wie sie im Meeting erkannt wurde, in Kleinbuchstaben. Null, wenn die Person im Meeting ohne Adresse genannt wurde.
kindstringPflichtOb die Person direkter Empfänger (
to) oder in Kopie (cc) ist.Erlaubte Werte:tocc
Statuscodes
- 200Erfolg
- 400
Ungültige Anfrage (Validierungsfehler).
- 401
Fehlender oder ungültiger Bearer-Token.
- 404
Ressource nicht gefunden oder nicht zugänglich.
- 429
Rate-Limit überschritten (pro Token/IP). Transkriptions-Uploads können außerdem den
codeFUP_LIMIT_EXCEEDEDoderTOO_MANY_CONCURRENT_TRANSCRIPTIONSzurückgeben. - 500
Interner Serverfehler.
Gibt eine Zusammenfassung als fertige Dokumentdatei zurück
Gibt dieselbe Datei zurück, die die Sally-Weboberfläche für diese Zusammenfassung herunterlädt: mit Branding, Logos, Kopf- und Fußzeile, Tabellen und der Abschnittsreihenfolge des Meetingtemplates. Die Datei wird bei der Anfrage erzeugt und direkt in der Antwort zurückgegeben; es gibt keinen Auftrag, der abgefragt werden muss.
Immer die vollständige Zusammenfassung in der Sprachfassung, die recordingSummaryId bezeichnet (eine Aufnahme hat eine Zusammenfassung pro Sprache, siehe GET .../recordings/{recordingId}/summaries). Eigene Einblicke und einzelne Abschnitte sind nicht Teil dieses Dokuments.
Feldübersicht aus der Spezifikation
Pfadparameter:
directoryId(string): Id des Unternehmenskontos, zu dem die Zusammenfassung gehört.recordingSummaryId(string): Id der Zusammenfassung.
Abfrageparameter:
format(string enum, Pflicht): einer der Wertepdf,docx,odt,txt,md.languageCode(string enum, optional): einer der Wertede-DE,en-US,es-ES,fr-FR,it-IT,nl-NL,pl-PL; Standard ist die Sprache des Token-Inhabers.
Dieser Endpunkt unterstützt ?fields= nicht.
Pfadparameter
directoryIdstringPflichtId des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet
GET /v1.0/me/directories/membershipsauf.recordingSummaryIdstringPflichtId der Zusammenfassung.
Query-Parameter
formatstringPflichtDateiformat des Dokuments.
Erlaubte Werte:pdfdocxodttxtmdlanguageCodestringoptionalIETF-Sprach-Tag für die Beschriftungen und das Datumsformat im Dokument, z. B.
de-DE. Standard ist die Sprache des Token-Inhabers, genau wie in der Sally-Weboberfläche. Die Sprache des Inhalts ändert sich dadurch NICHT, und die Schrift richtet sich immer nach der Sprache der Aufnahme, sodass chinesische Schriftzeichen auch miten-US-Beschriftungen lesbar bleiben.Erlaubte Werte:de-DEen-USes-ESfr-FRit-ITnl-NLpl-PL
Statuscodes
- 200Die Datei selbst. `Content-Disposition` enthält den Dateinamen, den die Sally-Weboberfläche für denselben Download verwendet (ASCII in `filename`, UTF-8 in `filename*`).
- 400
formatfehlt oder ist unbekannt, oderlanguageCodeist unbekannt. Der Body nennt die erlaubten Werte (code:UNKNOWN_DOCUMENT_FORMAToderUNKNOWN_LANGUAGE_CODE). - 401
Fehlender oder ungültiger Bearer-Token.
- 403
Das Unternehmenskonto hat diesen Download für seine Mitglieder gesperrt (
code:SUMMARY_DOWNLOAD_PREVENTED). - 404
Die Quelle existiert nicht, gehört zu einem anderen Unternehmenskonto, oder der Aufrufer hat keinen Zugriff auf die zugrunde liegende Aufnahme.
- 409
Die Zusammenfassung hat keinen Inhalt, der in ein Dokument übernommen werden könnte (sie wurde erzeugt, bevor es Meetingtemplates gab, oder ihr Template hat keine Abschnitte) (
code:SUMMARY_HAS_NO_CONTENT). - 429
Rate-Limit überschritten (pro Token/IP). Transkriptions-Uploads können außerdem den
codeFUP_LIMIT_EXCEEDEDoderTOO_MANY_CONCURRENT_TRANSCRIPTIONSzurückgeben. - 500
Interner Serverfehler.