Zum Hauptinhalt springen

Aufnahmen

Eine Aufnahme gibt es einmal je aufgezeichnetem Meeting. Diese Endpunkte listen Aufnahmen, liefern Transkript und Zusammenfassungen, legen neue Aufnahmen aus Uploads oder URLs an und setzen ihre Tags.

Jeder Endpunkt unten zeigt in der Mitte seine Parameter und Antwortfelder und rechts ein Anfragebeispiel mit Beispielantwort.

Basis-URL https://api.sally.ioVersion v1.0 aktuell, noch nicht eingefrorenSo funktioniert die Versionierung

Listet die Aufnahmen eines Unternehmenskontos auf (paginiert, optional nach Datum gefiltert)​

GET/v1.0/directories/{directoryId}/recordings

Paginierung über ?page + ?pageSize (max. 100). Die optionalen Parameter ?createdAfter / ?createdBefore sind UTC ISO-8601 (YYYY-MM-DDTHH:MM:SSZ, siehe „Datum & Uhrzeit" oben). Absteigend nach Erstellungsdatum sortiert.

Feldübersicht aus der Spezifikation

Felder der Antwort:

  • page / pageSize / total / hasMore: Paginierungs-Hülle (aktuelle Seite, Seitengröße, Gesamtzahl, ob weitere Seiten folgen).
  • items (array): die Aufnahmen auf dieser Seite. Jeder Eintrag enthält:
    • recordingId (string): Id der Aufnahme.
    • name (string | null): Anzeigename der Aufnahme.
    • durationInSeconds (number | null): Dauer in Sekunden.
    • isManualUpload (boolean): true, wenn manuell hochgeladen (ohne Meeting-Bot).
    • isTranscriptionSucceeded (boolean): true, wenn ein verwertbares Transkript existiert. Ein Durchlauf, der ohne Ergebnis beendet wurde (kein gesprochenes Audio, leere Datei, Sprache nicht erkannt), lässt diesen Wert auf false.
    • isTranscriptionCompleted (boolean): true, sobald der Transkriptionsdurchlauf beendet ist, unabhängig davon, ob ein Transkript entstanden ist. Unterscheidet „läuft noch" von „ohne Ergebnis beendet".
    • transcriptionCompletionReason (string enum): warum der Durchlauf beendet wurde. Einer von succeeded, noSpokenAudio, fileEmpty, languageNotDetected, error, quotaExceeded, unknown. Der zugrunde liegende Fehlertext wird bewusst nicht offengelegt.
    • languageCode (string | null): Sprachcode der Aufnahme (IETF-Sprach-Tag, z. B. de-DE, en-US).
    • createdOn (string): Zeitstempel der Erstellung (ISO-8601).
    • tags (array): effektive Tags (eigene plus geerbte von verknüpften Terminen und deren Serienmaster). Jeder Tag enthält:
      • tagId (string): Id des Tags.
      • name (string): Anzeigename des Tags.
      • colorCode (string | null): ein Farbschlüssel aus der Sally-Tag-Palette (ein Farbname wie blue/red/green, kein roher Hex-Wert; vollständige Liste im Schema); null, wenn nicht gesetzt.

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

Query-Parameter

  • pagenumberoptional

    Seitennummer, beginnend bei 1. Standard: 1.

  • pageSizenumberoptional

    Einträge pro Seite. Standard: 25, maximal 100.

  • createdAfterstringoptional

    Nur Aufnahmen, die zu oder nach diesem UTC-ISO-8601-Zeitstempel erstellt wurden (YYYY-MM-DDTHH:MM:SSZ).

  • createdBeforestringoptional

    Nur Aufnahmen, die zu oder vor diesem UTC-ISO-8601-Zeitstempel erstellt wurden (YYYY-MM-DDTHH:MM:SSZ).

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: createdOn, durationInSeconds, isManualUpload, isTranscriptionCompleted, isTranscriptionSucceeded, languageCode, name, recordingId, tags, transcriptionCompletionReason.

    Beispiel: createdOn,durationInSeconds

Antwort: je Eintrag in items

  • recordingIdstringPflicht

    Id der Aufnahme.

  • namestringPflichtkann null sein

    Anzeigename der Aufnahme.

  • durationInSecondsnumberPflichtkann null sein

    Dauer in Sekunden.

  • isManualUploadbooleanPflicht

    True, wenn manuell hochgeladen (ohne Meeting-Bot).

  • isTranscriptionSucceededbooleanPflicht

    True, wenn ein verwertbares Transkript existiert. Das ist NICHT dasselbe wie ein beendeter Durchlauf: Auch eine Aufnahme ohne gesprochenes Audio wird beendet, und dann bleibt dieser Wert false.

  • isTranscriptionCompletedbooleanPflicht

    True, sobald der Transkriptionsdurchlauf beendet ist, unabhängig davon, ob ein Transkript entstanden ist. Damit unterscheidest du "läuft noch" von "ohne Ergebnis beendet"; ob es etwas zu lesen gibt, sagt dir isTranscriptionSucceeded.

  • transcriptionCompletionReasonstringPflicht

    Warum der Transkriptionsdurchlauf beendet wurde. unknown, solange er nicht beendet ist. Der zugrunde liegende Fehlertext wird bewusst nicht offengelegt.

    Erlaubte Werte: succeedednoSpokenAudiofileEmptylanguageNotDetectederrorquotaExceededunknown
  • languageCodestringPflichtkann null sein

    Sprachcode der Aufnahme (IETF-Sprach-Tag, z. B. de-DE, en-US).

  • createdOnstringPflicht

    Zeitstempel der Erstellung (ISO-8601).

  • tagsobject[]Pflicht

    Effektive Tags (eigene plus geerbte von verknüpften Terminen und deren Serienmaster).

    3 Unterfelder
    • tagIdstringPflicht

      Id des Tags.

    • namestringPflicht

      Anzeigename des Tags.

    • colorCodestringPflichtkann null sein

      Farbe des Tags als Schlüssel aus Sallys fester Tag-Palette: ein Farb-NAME, kein roher Hex-Wert. Einer von: indigo, purple, fuchsia, pink, rose, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, slate, gray, zinc, stone, neutral. Der Client ordnet den Schlüssel der tatsächlichen Farbe (hell/dunkel) zu; null oder ein unbekannter Schlüssel wird in der neutralen Standardfarbe dargestellt. Null, wenn nicht gesetzt.

Jede Seite trägt außerdem page, pageSize, total, hasMore.

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Gibt eine einzelne Aufnahme zurück​

GET/v1.0/directories/{directoryId}/recordings/{recordingId}
Feldübersicht aus der Spezifikation

Felder der Antwort:

  • recordingId (string): Id der Aufnahme.
  • name (string | null): Anzeigename der Aufnahme.
  • durationInSeconds (number | null): Dauer in Sekunden.
  • isManualUpload (boolean): true, wenn manuell hochgeladen (ohne Meeting-Bot).
  • isTranscriptionSucceeded (boolean): true, wenn ein verwertbares Transkript existiert. Ein Durchlauf, der ohne Ergebnis beendet wurde (kein gesprochenes Audio, leere Datei, Sprache nicht erkannt), lässt diesen Wert auf false.
  • isTranscriptionCompleted (boolean): true, sobald der Transkriptionsdurchlauf beendet ist, unabhängig davon, ob ein Transkript entstanden ist. Unterscheidet „läuft noch" von „ohne Ergebnis beendet".
  • transcriptionCompletionReason (string enum): warum der Durchlauf beendet wurde. Einer von succeeded, noSpokenAudio, fileEmpty, languageNotDetected, error, quotaExceeded, unknown. Der zugrunde liegende Fehlertext wird bewusst nicht offengelegt.
  • languageCode (string | null): Sprachcode der Aufnahme (IETF-Sprach-Tag, z. B. de-DE, en-US).
  • createdOn (string): Zeitstempel der Erstellung (ISO-8601).
  • tags (array): effektive Tags (eigene plus geerbte von verknüpften Terminen und deren Serienmaster). Jeder Tag enthält:
    • tagId (string): Id des Tags.
    • name (string): Anzeigename des Tags.
    • colorCode (string | null): ein Farbschlüssel aus der Sally-Tag-Palette (ein Farbname wie blue/red/green, kein roher Hex-Wert; vollständige Liste im Schema); null, wenn nicht gesetzt.

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

  • recordingIdstringPflicht

    Id der Aufnahme.

Query-Parameter

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: createdOn, durationInSeconds, isManualUpload, isTranscriptionCompleted, isTranscriptionSucceeded, languageCode, name, recordingId, tags, transcriptionCompletionReason.

    Beispiel: createdOn,durationInSeconds

Antwort

  • recordingIdstringPflicht

    Id der Aufnahme.

  • namestringPflichtkann null sein

    Anzeigename der Aufnahme.

  • durationInSecondsnumberPflichtkann null sein

    Dauer in Sekunden.

  • isManualUploadbooleanPflicht

    True, wenn manuell hochgeladen (ohne Meeting-Bot).

  • isTranscriptionSucceededbooleanPflicht

    True, wenn ein verwertbares Transkript existiert. Das ist NICHT dasselbe wie ein beendeter Durchlauf: Auch eine Aufnahme ohne gesprochenes Audio wird beendet, und dann bleibt dieser Wert false.

  • isTranscriptionCompletedbooleanPflicht

    True, sobald der Transkriptionsdurchlauf beendet ist, unabhängig davon, ob ein Transkript entstanden ist. Damit unterscheidest du "läuft noch" von "ohne Ergebnis beendet"; ob es etwas zu lesen gibt, sagt dir isTranscriptionSucceeded.

  • transcriptionCompletionReasonstringPflicht

    Warum der Transkriptionsdurchlauf beendet wurde. unknown, solange er nicht beendet ist. Der zugrunde liegende Fehlertext wird bewusst nicht offengelegt.

    Erlaubte Werte: succeedednoSpokenAudiofileEmptylanguageNotDetectederrorquotaExceededunknown
  • languageCodestringPflichtkann null sein

    Sprachcode der Aufnahme (IETF-Sprach-Tag, z. B. de-DE, en-US).

  • createdOnstringPflicht

    Zeitstempel der Erstellung (ISO-8601).

  • tagsobject[]Pflicht

    Effektive Tags (eigene plus geerbte von verknüpften Terminen und deren Serienmaster).

    3 Unterfelder
    • tagIdstringPflicht

      Id des Tags.

    • namestringPflicht

      Anzeigename des Tags.

    • colorCodestringPflichtkann null sein

      Farbe des Tags als Schlüssel aus Sallys fester Tag-Palette: ein Farb-NAME, kein roher Hex-Wert. Einer von: indigo, purple, fuchsia, pink, rose, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, slate, gray, zinc, stone, neutral. Der Client ordnet den Schlüssel der tatsächlichen Farbe (hell/dunkel) zu; null oder ein unbekannter Schlüssel wird in der neutralen Standardfarbe dargestellt. Null, wenn nicht gesetzt.

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Gibt das Transkript einer Aufnahme zurück (zeitcodierte Segmente plus Sprecher)​

GET/v1.0/directories/{directoryId}/recordings/{recordingId}/transcription
Feldübersicht aus der Spezifikation

Felder der Antwort:

  • recordingId (string): Id der zugehörigen Aufnahme.
  • speakers (array): Sprecher des Transkripts. Jeder Eintrag enthält:
    • speakerId (string): Id des Transkript-Sprechers (wird von jedem Segment referenziert).
    • speakerNumber (number): Sprechernummer.
    • name (string | null): Name des Sprechers.
    • emailAddress (string | null): E-Mail-Adresse des Sprechers.
  • segments (array): zeitcodierte Segmente. Jeder Eintrag enthält:
    • speakerId (string): Sprecher-Id des Segments (verweist auf die Liste speakers oben).
    • startTime (number): Startzeit in Sekunden.
    • endTime (number): Endzeit in Sekunden.
    • text (string | null): transkribierter Text des Segments.

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

  • recordingIdstringPflicht

    Id der Aufnahme.

Query-Parameter

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: recordingId, segments, speakers.

    Beispiel: recordingId,segments

Antwort

  • recordingIdstringPflicht

    Id der zugehörigen Aufnahme.

  • speakersobject[]Pflicht

    Sprecher des Transkripts.

    4 Unterfelder
    • speakerIdstringPflicht

      Id des Transkript-Sprechers.

    • speakerNumbernumberPflicht

      Sprechernummer.

    • namestringPflichtkann null sein

      Name des Sprechers.

    • emailAddressstringPflichtkann null sein

      E-Mail-Adresse des Sprechers.

  • segmentsobject[]Pflicht

    Zeitcodierte Segmente.

    4 Unterfelder
    • speakerIdstringPflicht

      Sprecher-Id des Segments.

    • startTimenumberPflicht

      Startzeit in Sekunden.

    • endTimenumberPflicht

      Endzeit in Sekunden.

    • textstringPflichtkann null sein

      Transkribierter Text des Segments.

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Gibt die Zusammenfassungen einer Aufnahme zurück​

GET/v1.0/directories/{directoryId}/recordings/{recordingId}/summaries

Mit ?includeDetails=true bettet jede Zusammenfassung zusätzlich ihre Abschnittseinträge ein (die strukturierten Ergebnisse des Meetingtemplates pro Abschnitt). Ohne den Parameter erhältst du nur die Texte der Zusammenfassungen. Eine einzelne Zusammenfassung anhand ihrer Id holst du über GET .../summaries/{recordingSummaryId}.

Feldübersicht aus der Spezifikation

Jeder Eintrag enthält:

  • recordingSummaryId (string): Id der Zusammenfassung.
  • recordingId (string): Id der zugehörigen Aufnahme.
  • appointmentId (string | null): Id des zugehörigen Termins (falls vorhanden).
  • languageCode (string | null): Sprachcode der Zusammenfassung (IETF-Sprach-Tag, z. B. de-DE, en-US).
  • summary (string | null): Text der Zusammenfassung.
  • isSummarizationCompleted (boolean): true, sobald der Zusammenfassungsdurchlauf beendet ist, unabhängig davon, ob er etwas erzeugt hat.
  • isSummarizationSucceeded (boolean): true, 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.
  • summarizationCompletionReason (string enum): warum der Durchlauf beendet wurde. Einer von succeeded, noTranscript, emptyResult, error, unknown. noTranscript ist ein erwartetes Ergebnis, kein Fehler. Der zugrunde liegende Fehlertext wird bewusst nicht offengelegt.
  • createdOn (string): Zeitstempel der Erstellung (ISO-8601).
  • sectionItems (array | null): die erzeugten Abschnittseinträge der Zusammenfassung (strukturierte Ergebnisse des Meetingtemplates pro Abschnitt). Null, sofern nicht geladen (nur mit ?includeDetails=true). Jeder Abschnittseintrag enthält:
    • sectionItemId (string): Id des Abschnittseintrags.
    • meetingTemplateSectionId (string | null): Id des Meetingtemplate-Abschnitts, aus dem dieser Eintrag erzeugt wurde (auflösen über GET /v1.0/directories/{directoryId}/meetingtemplates/{meetingTemplateId}); null bei abgeleiteten Einträgen (z. B. Aufgabeneinträge).
    • title (string): Titel des Template-Abschnittseintrags.
    • sectionType (string enum): Abschnittstyp des Eintrags. Einer von summary, tasks, topics, decisions, customList, freeText, unknown.
    • outputFormat (string enum): Ausgabeformat des Eintragsinhalts. Einer von html, markdown, unknown.
    • sortOrder (number): Reihenfolge innerhalb der Zusammenfassung.
    • content (string | null): Freitext- bzw. Markdown-Inhalt des Eintrags.
    • subject (string | null): Betreff der Aufgabe (bei aufgabenartigen Abschnittseinträgen).
    • description (string | null): Beschreibung der Aufgabe.
    • responsibleUserName (string | null): verantwortliche Person (Name).
    • responsibleUserEmail (string | null): verantwortliche Person (E-Mail).
    • dueDate (string | null): Fälligkeitsdatum (ISO-8601).

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

  • recordingIdstringPflicht

    Id der Aufnahme.

Query-Parameter

  • includeDetailsbooleanoptional

    Bei true enthält jede Zusammenfassung zusätzlich ihre sectionItems. Fehlt der Parameter oder ist er false, ist sectionItems null und nur der Text der Zusammenfassung wird zurückgegeben.

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden 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

  • recordingSummaryIdstringPflicht

    Id der Zusammenfassung.

  • recordingIdstringPflicht

    Id der zugehörigen Aufnahme.

  • appointmentIdstringPflichtkann null sein

    Id des zugehörigen Termins (falls vorhanden).

  • languageCodestringPflichtkann null sein

    Sprachcode der Zusammenfassung (IETF-Sprach-Tag, z. B. de-DE, en-US).

  • summarystringPflichtkann null sein

    Text der Zusammenfassung.

  • isSummarizationCompletedbooleanPflicht

    True, sobald der Zusammenfassungsdurchlauf beendet ist, unabhängig davon, ob er etwas erzeugt hat.

  • isSummarizationSucceededbooleanPflicht

    True, 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.

  • summarizationCompletionReasonstringPflicht

    Warum der Zusammenfassungsdurchlauf beendet wurde. noTranscript bedeutet, 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: succeedednoTranscriptemptyResulterrorunknown
  • createdOnstringPflicht

    Zeitstempel der Erstellung (ISO-8601).

  • sectionItemsobject[]Pflichtkann null sein

    Die 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.

    12 Unterfelder
    • sectionItemIdstringPflicht

      Id des Abschnittseintrags.

    • meetingTemplateSectionIdstringPflichtkann null sein

      Id des Meetingtemplate-Abschnitts, aus dem dieser Eintrag erzeugt wurde. Auflösen über GET /v1.0/directories/{directoryId}/meetingtemplates/{meetingTemplateId} (entspricht der meetingTemplateSectionId eines Abschnitts). Null bei abgeleiteten Einträgen ohne Template-Abschnitt (z. B. Aufgabeneinträge).

    • titlestringPflicht

      Titel des Template-Abschnittseintrags.

    • sectionTypestringPflicht

      Abschnittstyp des Eintrags.

      Erlaubte Werte: summarytaskstopicsdecisionscustomListfreeTextunknown
    • outputFormatstringPflicht

      Ausgabeformat des Eintragsinhalts.

      Erlaubte Werte: htmlmarkdownunknown
    • sortOrdernumberPflicht

      Reihenfolge innerhalb der Zusammenfassung.

    • contentstringPflichtkann null sein

      Freitext- bzw. Markdown-Inhalt des Eintrags.

    • subjectstringPflichtkann null sein

      Betreff der Aufgabe (bei aufgabenartigen Abschnittseinträgen).

    • descriptionstringPflichtkann null sein

      Beschreibung der Aufgabe.

    • responsibleUserNamestringPflichtkann null sein

      Verantwortliche Person (Name).

    • responsibleUserEmailstringPflichtkann null sein

      Verantwortliche Person (E-Mail).

    • dueDatestringPflichtkann null sein

      Fälligkeitsdatum (ISO-8601).

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Startet einen Aufnahme-Upload (Schritt 1/2) und gibt eine SAS-PUT-URL zurück​

POST/v1.0/directories/{directoryId}/recordings/uploads

Anschließend lädt der Client die Datei-Bytes per PUT direkt zur zurückgegebenen uploadUrl hoch (mit den requiredHeaders) und ruft danach POST .../uploads/{uploadId}/finalize auf. Das Transkriptionskontingent (Fair-Usage-Regel) wird bereits hier geprüft: Ist das Kontingent erschöpft, wird 429 mit dem Code FUP_LIMIT_EXCEEDED zurückgegeben.

Feldübersicht aus der Spezifikation

Felder im Body:

  • fileName (string, Pflicht): ursprünglicher Dateiname (inkl. Dateiendung, zur Ableitung von MIME-Typ bzw. Endung).
  • mimeType (string, Pflicht): MIME-Typ der Datei (Whitelist: Video mp4/mkv/avi/mov/webm, Audio mp3/wav/flac/ogg/amr/m4a/opus/aac).
  • sizeBytes (number, Pflicht): Dateigröße in Bytes (> 0, max. 5 GB).

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

Query-Parameter

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: maxBytes, requiredHeaders, storageMode, uploadId, uploadUrl.

    Beispiel: maxBytes,requiredHeaders

Request-Body application/json

  • fileNamestringPflicht

    Ursprünglicher Dateiname (inkl. Dateiendung, zur Ableitung von MIME-Typ bzw. Endung).

  • mimeTypestringPflicht

    MIME-Typ der Datei (Whitelist: Video mp4/mkv/avi/mov/webm, Audio mp3/wav/flac/ogg/amr/m4a/opus/aac).

    Beispiel: audio/mpeg
  • sizeBytesnumberPflicht

    Dateigröße in Bytes (> 0, max. 5 GB).

Antwort

  • uploadIdstringPflicht

    Upload-Token, wird im Abschluss-Schritt mitgegeben.

  • uploadUrlstringPflicht

    Absolute Azure-SAS-URL. Der Client lädt die Datei-Bytes per PUT direkt dorthin hoch (ohne Umweg über die API).

  • storageModestringPflicht

    Speichermodus.

    Beispiel: azure-blob
  • requiredHeadersobjectPflicht

    Header, die beim PUT mitgesendet werden müssen.

    Beispiel: {"x-ms-blob-type":"BlockBlob"}
  • maxBytesnumberPflicht

    Maximal erlaubte Upload-Größe in Bytes.

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Schließt einen Aufnahme-Upload ab (Schritt 2/2) und erstellt die Aufnahme​

POST/v1.0/directories/{directoryId}/recordings/uploads/{uploadId}/finalize

Rufe diesen Endpunkt nach einem erfolgreichen PUT der Datei-Bytes auf. Er prüft den Blob, legt den Datensatz der Aufnahme an und startet die Transkriptions-Pipeline. Gibt die recordingId zurück. Laufen zu viele Transkriptionen des Unternehmenskontos gleichzeitig, wird 429 mit dem Code TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgegeben.

Feldübersicht aus der Spezifikation

Felder im Body (alle optional):

  • languageCode (string, optional): Sprachcode des Audios (IETF-Sprach-Tag, z. B. de-DE, en-US). Weglassen oder null für automatische Erkennung.
  • speakerCount (number, optional): Anzahl der Sprecher (für die Sprechertrennung).
  • appointmentId (string, optional): optional verknüpfter Termin (GUID).

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

  • uploadIdstringPflicht

    Id des Uploads.

Query-Parameter

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: recordingId.

    Beispiel: recordingId

Request-Body application/json

  • languageCodestringoptionalkann null sein

    Sprachcode des Audios (IETF-Sprach-Tag, z. B. de-DE, en-US). Weglassen oder null für automatische Erkennung.

  • speakerCountnumberoptionalkann null sein

    Anzahl der Sprecher (für die Sprechertrennung).

  • appointmentIdstringoptionalkann null sein

    Optional verknüpfter Termin (GUID).

Antwort

  • recordingIdstringPflicht

    Id der erstellten Aufnahme (die Transkription wurde gestartet).

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Erstellt eine Aufnahme aus einer Datei-URL (kein Upload nötig)​

POST/v1.0/directories/{directoryId}/recordings/from-url

Sally lädt die Datei serverseitig von der URL, speichert sie und startet die Transkriptions- und Zusammenfassungs-Pipeline, genau wie bei einem abgeschlossenen Upload. Nutze diesen Weg statt des zweistufigen Uploads, wenn die Datei bereits über https erreichbar ist. Der Aufruf kehrt zurück, sobald die Datei geladen wurde und die Aufnahme existiert; die Transkription läuft dann im Hintergrund. Frage für das Ergebnis also GET .../recordings/{recordingId} ab oder nutze einen Webhook.

Feldübersicht aus der Spezifikation

Welche Bedingungen die URL erfüllen muss (jede davon wird durchgesetzt, ein Verstoß liefert 400):

  • Nur https. Kein http, kein anderes Schema.
  • Keine Zugangsdaten in der URL. Eine Form wie user:pass@host wird abgelehnt.
  • Nur öffentliche Ziele. Der Host wird aufgelöst und abgelehnt, wenn er in ein privates oder reserviertes Netz zeigt (Loopback, private Bereiche, Link-Local einschließlich Cloud-Metadaten, CGNAT, Multicast). Die geprüfte Adresse wird dann für die Verbindung fixiert, sodass eine DNS-Antwort, die sich zwischen Prüfung und Abruf ändert, uns nicht nach innen umleiten kann.
  • Keine Weiterleitungen. Übergib die endgültige Adresse; eine Weiterleitung wird abgelehnt statt verfolgt.
  • Ein unterstützter Medientyp, entweder über Content-Type oder über die Dateiendung: mp4, mkv, avi, mov, webm, mp3, wav, flac, ogg, amr, m4a, opus, aac.
  • Größenlimit wie vom Upload-Endpunkt zurückgegeben (maxBytes). Geprüft werden sowohl die angegebene Content-Length als auch die tatsächlichen Bytes.

Es gelten dieselben Lizenz-, Test- und Fair-Usage-Regeln wie bei einem Upload. Laufen zu viele Transkriptionen des Unternehmenskontos gleichzeitig, wird 429 mit dem Code TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgegeben und nichts geladen.

Felder im Body:

  • url (string): die https-URL der Datei.
  • name (string, optional): Name der Aufnahme. Die URL wird nie als Name verwendet, weil Presigned Links Zugangsdaten in ihrem Query-String enthalten.
  • languageCode (string, optional): IETF-Sprach-Tag des Audios, z. B. de-DE. Weglassen für automatische Erkennung.
  • speakerCount (number, optional): Anzahl der Sprecher, für die Sprechertrennung.

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

Query-Parameter

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: recordingId.

    Beispiel: recordingId

Request-Body application/json

  • urlstringPflicht

    Öffentlich erreichbare https-URL der Audio- oder Videodatei. Die URL muss auf die Datei selbst zeigen, nicht auf eine Landingpage oder eine Weiterleitung. Presigned Links (S3, Azure Blob, Google Cloud Storage) funktionieren, solange sie zum Zeitpunkt des Aufrufs gültig sind.

  • namestringoptionalkann null sein

    Name der Aufnahme. Wird er weggelassen, wird ein Name generiert; die URL wird nie als Name verwendet, da Presigned Links Zugangsdaten in ihrem Query-String enthalten.

  • languageCodestringoptionalkann null sein

    Sprachcode des Audios (IETF-Sprach-Tag, z. B. de-DE, en-US). Weglassen oder null für automatische Erkennung.

  • speakerCountnumberoptionalkann null sein

    Anzahl der Sprecher (für die Sprechertrennung).

Antwort

  • recordingIdstringPflicht

    Id der erstellten Aufnahme (die Transkription wurde gestartet).

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.

Ersetzt die direkten Tags einer Aufnahme (zuweisen/entfernen)​

PUT/v1.0/directories/{directoryId}/recordings/{recordingId}/tags

Vollständiges Ersetzen der DIREKTEN Tags der Aufnahme; von verknüpften Terminen bzw. Terminserien geerbte Tags bleiben dynamisch. Maximal 20 direkte Tags pro Aufnahme.

Feldübersicht aus der Spezifikation

Felder im Body:

  • tagIds (array of strings): Ids bestehender Tags, die zugewiesen werden sollen; die angegebene Menge ersetzt die aktuelle. Zuweisen funktioniert nur mit Tag-Ids, lege den Tag also zuerst über POST /v1.0/directories/{directoryId}/tags an und weise ihn dann hier zu.

Pfadparameter

  • directoryIdstringPflicht

    Id des Unternehmenskontos (des Sally-Firmenkontos), zu dem die Ressource gehört. Die Unternehmenskonten, die ein Token ansprechen kann, listet GET /v1.0/me/directories/memberships auf.

  • recordingIdstringPflicht

    Id der Aufnahme.

Query-Parameter

  • fieldsstringoptional

    Kommagetrennte 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, tags oder sectionItems wird ganz oder gar nicht zurückgegeben; attendees.name wird nicht unterstützt.

    Bei einer paginierten Antwort gilt die Auswahl für die Einträge in items; page, pageSize, total und hasMore werden immer zurückgegeben. Ein unbekannter Name wird mit 400 abgelehnt statt ignoriert.

    Hier auswählbar: colorCode, name, tagId.

    Beispiel: colorCode,name

Request-Body application/json

  • tagIdsstring[]optional

    Ids bestehender Tags, die zugewiesen werden sollen; die angegebene Menge ersetzt die aktuelle.

Antwort

  • tagIdstringPflicht

    Id des Tags.

  • namestringPflicht

    Anzeigename des Tags.

  • colorCodestringPflichtkann null sein

    Farbe des Tags als Schlüssel aus Sallys fester Tag-Palette: ein Farb-NAME, kein roher Hex-Wert. Einer von: indigo, purple, fuchsia, pink, rose, red, orange, amber, yellow, lime, green, emerald, teal, cyan, sky, blue, slate, gray, zinc, stone, neutral. Der Client ordnet den Schlüssel der tatsächlichen Farbe (hell/dunkel) zu; null oder ein unbekannter Schlüssel wird in der neutralen Standardfarbe dargestellt. Null, wenn nicht gesetzt.

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 code FUP_LIMIT_EXCEEDED oder TOO_MANY_CONCURRENT_TRANSCRIPTIONS zurückgeben.

  • 500

    Interner Serverfehler.