Speechmind API Documentation

Welcome to the SpeechMind GraphQL API v2.

This reference document provides detailed information about the endpoints and features of the SpeechMind API v2. It covers the available queries, mutations, types, and input objects, along with usage examples and expected input/output formats.

This updated version of the API introduces enhanced features and improved functionality across the three main processes explained in the next chapters.

Authentication is required to access most API features. Clients must first obtain a JSON Web Token (JWT) through the authentication endpoint and include it in the Authorization header of all subsequent requests:

API Endpoints
https://api-v2.speechmind.com/external/v2/graphql
Headers
# // Your API key
x-api-key: <your-api-key>
Version

2.0.0

Authentication Guide for using the API

To access the SpeechMind API, you need to authenticate using an API key. Follow the steps below to generate and use your API key:

🔑 Steps to Generate Your API Key

  1. Log in to your SpeechMind account.
  2. Navigate to Account > Organisation you find a Developers API section.
  3. Click on Generate New API Key.
  4. Copy the generated key and store it securely.

🚀 Using the API Key

Include your API key in the request headers under the x-api-key field when making API calls.

Example Request Header

x-api-key: <your-api-key>

Queries

getAllProjects

Description

It returns all projects for a user.

Response

Returns [ApiProjectType]

Example

Query
query getAllProjects {
  getAllProjects {
    slug
    name
  }
}
Response
{
  "data": {
    "getAllProjects": [
      {
        "slug": "abc123",
        "name": "xyz789"
      }
    ]
  }
}

getProtocolBySlug

Description

It validates the user's authentication using an API key passed in the request header and returns the protocol associated with the specified slug.

Response

Returns an EditSpeakerDataTypeWithSpeaker

Arguments
Name Description
protocolSlug - String! ID of the protocol

Example

Query
query getProtocolBySlug($protocolSlug: String!) {
  getProtocolBySlug(protocolSlug: $protocolSlug) {
    protocol {
      ...ApiProtocolTypeFragment
    }
    speakerList
    summaryPerSpeakerList {
      ...ApiSummaryPerSpeakerItemTypeWithSpeakerFragment
    }
    attendees {
      ...ApiSpeakerTypeFragment
    }
    serverLoad
  }
}
Variables
{"protocolSlug": "xyz789"}
Response
{
  "data": {
    "getProtocolBySlug": {
      "protocol": ApiProtocolType,
      "speakerList": GenericScalar,
      "summaryPerSpeakerList": [
        ApiSummaryPerSpeakerItemTypeWithSpeaker
      ],
      "attendees": [ApiSpeakerType],
      "serverLoad": "abc123"
    }
  }
}

getProtocolsByProject

Description

It returns all the documents from a project.

Response

Returns [ApiProtocolType]

Arguments
Name Description
slug - String! Slug of the project

Example

Query
query getProtocolsByProject($slug: String!) {
  getProtocolsByProject(slug: $slug) {
    slug
    name
    date
    language
    empty
    editStage
    creatingStep
    creatingStepList
    status
    renamedSpeakers
  }
}
Variables
{"slug": "xyz789"}
Response
{
  "data": {
    "getProtocolsByProject": [
      {
        "slug": "xyz789",
        "name": "xyz789",
        "date": "xyz789",
        "language": "xyz789",
        "empty": false,
        "editStage": true,
        "creatingStep": "xyz789",
        "creatingStepList": ["abc123"],
        "status": false,
        "renamedSpeakers": false
      }
    ]
  }
}

getRephraseElementByProtocolSlug

Description

It validates the user's authentication using an API key passed in the request header and returns the rephrase element associated with the specified protocol slug.

Response

Returns [RephraseReturnObject]

Arguments
Name Description
protocolSlug - String!

Example

Query
query getRephraseElementByProtocolSlug($protocolSlug: String!) {
  getRephraseElementByProtocolSlug(protocolSlug: $protocolSlug) {
    agendaItemId
    agendaItemDepth
    refactoredSuggestion
  }
}
Variables
{"protocolSlug": "xyz789"}
Response
{
  "data": {
    "getRephraseElementByProtocolSlug": [
      {
        "agendaItemId": "xyz789",
        "agendaItemDepth": 987,
        "refactoredSuggestion": ["abc123"]
      }
    ]
  }
}

getResults

Response

Returns an ApiResultsType

Arguments
Name Description
protocolSlug - String! ID of the protocol

Example

Query
query getResults($protocolSlug: String!) {
  getResults(protocolSlug: $protocolSlug) {
    creationDone
    protocol {
      ...ApiProtocolTypeFragment
    }
    agendaItemList {
      ...ApiAgendaItemTypeFragment
    }
    taskItemList {
      ...ApiTaskTypeFragment
    }
  }
}
Variables
{"protocolSlug": "abc123"}
Response
{
  "data": {
    "getResults": {
      "creationDone": true,
      "protocol": ApiProtocolType,
      "agendaItemList": [ApiAgendaItemType],
      "taskItemList": [ApiTaskType]
    }
  }
}

getTextsegmentsByProtocolAndPage

Description

It validates the user's authentication using an API key passed in the request header and returns the text segments associated with the specified protocol slug and page number.

Response

Returns a TextsegmentListTypeV2

Arguments
Name Description
protocolSlug - String! ID of the protocol
page - Int! Page number must start from page 1

Example

Query
query getTextsegmentsByProtocolAndPage(
  $protocolSlug: String!,
  $page: Int!
) {
  getTextsegmentsByProtocolAndPage(
    protocolSlug: $protocolSlug,
    page: $page
  ) {
    textsegmentList {
      ...ApiTextsegmentTypeV2Fragment
    }
  }
}
Variables
{"protocolSlug": "xyz789", "page": 987}
Response
{
  "data": {
    "getTextsegmentsByProtocolAndPage": {
      "textsegmentList": [ApiTextsegmentTypeV2]
    }
  }
}

getTranscriptByAgendaItemId

Description

It validates the user's authentication using an API key passed in the request header and returns the text segments between the specified start and end IDs.

Response

Returns [ApiTextsegmentTypeV2]

Arguments
Name Description
protocolSlug - String! ID of the protocol
agendaItemId - String! ID of the agenda item

Example

Query
query getTranscriptByAgendaItemId(
  $protocolSlug: String!,
  $agendaItemId: String!
) {
  getTranscriptByAgendaItemId(
    protocolSlug: $protocolSlug,
    agendaItemId: $agendaItemId
  ) {
    id
    speakerObj {
      ...ApiSpeakerTypeFragment
    }
    textJson {
      ...TranscriptSegmentFragment
    }
    pos
  }
}
Variables
{
  "protocolSlug": "abc123",
  "agendaItemId": "abc123"
}
Response
{
  "data": {
    "getTranscriptByAgendaItemId": [
      {
        "id": "xyz789",
        "speakerObj": ApiSpeakerType,
        "textJson": [TranscriptSegment],
        "pos": 123
      }
    ]
  }
}

getUploadUrl

Description

It validates the user's authentication using an API key passed in the request header and returns a presigned URL for uploading files to AWS S3.

Response

Returns an AWSUrlObject

Arguments
Name Description
uniqueObjName - String! Unique name of the audio file together with the file ending (e.g. .ogg, .mp3, .mp4)

Example

Query
query getUploadUrl($uniqueObjName: String!) {
  getUploadUrl(uniqueObjName: $uniqueObjName) {
    url
    fields
  }
}
Variables
{"uniqueObjName": "xyz789"}
Response
{
  "data": {
    "getUploadUrl": {
      "url": "xyz789",
      "fields": GenericScalar
    }
  }
}

getUsageRecordsByApiKey

Description

Get the usage records by API key.

Response

Returns [ApiUsageRecordType]

Example

Query
query getUsageRecordsByApiKey {
  getUsageRecordsByApiKey {
    id
    email
    amount
    createdAt
  }
}
Response
{
  "data": {
    "getUsageRecordsByApiKey": [
      {
        "id": "abc123",
        "email": "abc123",
        "amount": 123,
        "createdAt": "xyz789"
      }
    ]
  }
}

Mutations

addGlossary

Description

Add a glossary entry for the authenticated API user and apply it retroactively to all agenda items, text segments, and task items of the specified protocol. The glossary maps a spoken/misrecognised term to its correct spelling.

Response

Returns an AddGlossaryMutation

Arguments
Name Description
correctWord - String! The correct spelling that should replace the term
protocolSlug - String! Slug of the protocol to update
term - String! The misrecognised or incorrect term as it appears in the transcript

Example

Query
mutation addGlossary(
  $correctWord: String!,
  $protocolSlug: String!,
  $term: String!
) {
  addGlossary(
    correctWord: $correctWord,
    protocolSlug: $protocolSlug,
    term: $term
  ) {
    success
  }
}
Variables
{
  "correctWord": "abc123",
  "protocolSlug": "abc123",
  "term": "abc123"
}
Response
{"data": {"addGlossary": {"success": true}}}

createApiOrganization

Response

Returns a CreateApiOrganizationMutation

Arguments
Name Description
name - String!

Example

Query
mutation createApiOrganization($name: String!) {
  createApiOrganization(name: $name) {
    organization {
      ...ApiOrganizationTypeFragment
    }
    plainKey
  }
}
Variables
{"name": "xyz789"}
Response
{
  "data": {
    "createApiOrganization": {
      "organization": ApiOrganizationType,
      "plainKey": "xyz789"
    }
  }
}

createProject

Description

Create a new project. User can upload files into a project. Pass the resulting slug into the import audio mutation.

Response

Returns a CreateProjectMutation

Arguments
Name Description
name - String! Name of the project

Example

Query
mutation createProject($name: String!) {
  createProject(name: $name) {
    project {
      ...ApiProjectTypeFragment
    }
  }
}
Variables
{"name": "abc123"}
Response
{"data": {"createProject": {"project": ApiProjectType}}}

deleteAgendaItemById

Description

Delete a specific agenda item by its ID. Use this when text segments were assigned to a TOP that does not exist in the external system and the item should be removed entirely. All associated AgendaItemText and ResolutionItem records are cascade-deleted.

Response

Returns a DeleteAgendaItemByIdMutation

Arguments
Name Description
agendaItemId - Int! ID of the agenda item to delete

Example

Query
mutation deleteAgendaItemById($agendaItemId: Int!) {
  deleteAgendaItemById(agendaItemId: $agendaItemId) {
    success
  }
}
Variables
{"agendaItemId": 123}
Response
{"data": {"deleteAgendaItemById": {"success": false}}}

deleteAudioByProtocolSlug

Arguments
Name Description
protocolSlug - String!

Example

Query
mutation deleteAudioByProtocolSlug($protocolSlug: String!) {
  deleteAudioByProtocolSlug(protocolSlug: $protocolSlug) {
    success
    protocol {
      ...ApiProtocolTypeFragment
    }
  }
}
Variables
{"protocolSlug": "xyz789"}
Response
{
  "data": {
    "deleteAudioByProtocolSlug": {
      "success": true,
      "protocol": ApiProtocolType
    }
  }
}

deleteProtocol

Response

Returns a DeleteProtocolMutation

Arguments
Name Description
protocolSlug - String!

Example

Query
mutation deleteProtocol($protocolSlug: String!) {
  deleteProtocol(protocolSlug: $protocolSlug) {
    success
  }
}
Variables
{"protocolSlug": "abc123"}
Response
{"data": {"deleteProtocol": {"success": false}}}

extendAgendaItem

Description

Extend an agenda item by its ID by user input. It validates the user's authentication using an API key passed in the request header and extends the content of the agenda item in case it's too short.

Response

Returns an ExtendAgendaItemByIdMutation

Arguments
Name Description
agendaItemId - String! Agenda item to be extended by user prompt
userInput - String Prompt by the user to extend the agenda item

Example

Query
mutation extendAgendaItem(
  $agendaItemId: String!,
  $userInput: String
) {
  extendAgendaItem(
    agendaItemId: $agendaItemId,
    userInput: $userInput
  ) {
    rephraseElement {
      ...ApiRephraseElementFragment
    }
  }
}
Variables
{
  "agendaItemId": "abc123",
  "userInput": "abc123"
}
Response
{
  "data": {
    "extendAgendaItem": {
      "rephraseElement": ApiRephraseElement
    }
  }
}

initProtocol

Description

Mutation to upload and register an audio file for processing. This mutation allows users to upload an audio file and register it for further processing. It validates the user's authentication using an API key passed in the request header and processes the provided audio metadata.

Response

Returns an InitProtocolMutation

Arguments
Name Description
agendaItemList - [AgendaItemListInput] Agenda list of the audio file
date - Date! Date of the audio file
language - String! Language of the audio file
name - String! Name of the audio file
projectSlug - String! Slug of the project
speakerList - [PersonInputList] List of speakers to rename
typeOfDocument - String! Type of the document
uniqueObjName - String! Unique Name of the audio file

Example

Query
mutation initProtocol(
  $agendaItemList: [AgendaItemListInput],
  $date: Date!,
  $language: String!,
  $name: String!,
  $projectSlug: String!,
  $speakerList: [PersonInputList],
  $typeOfDocument: String!,
  $uniqueObjName: String!
) {
  initProtocol(
    agendaItemList: $agendaItemList,
    date: $date,
    language: $language,
    name: $name,
    projectSlug: $projectSlug,
    speakerList: $speakerList,
    typeOfDocument: $typeOfDocument,
    uniqueObjName: $uniqueObjName
  ) {
    protocol {
      ...ApiProtocolTypeFragment
    }
    success
  }
}
Variables
{
  "agendaItemList": [AgendaItemListInput],
  "date": "2007-12-03",
  "language": "xyz789",
  "name": "abc123",
  "projectSlug": "abc123",
  "speakerList": [PersonInputList],
  "typeOfDocument": "xyz789",
  "uniqueObjName": "abc123"
}
Response
{
  "data": {
    "initProtocol": {
      "protocol": ApiProtocolType,
      "success": false
    }
  }
}

initProtocolMulti

Description

Mutation to upload and register multiple audio files for a single session. Works identically to initProtocol but accepts a list of unique object names. All files are passed together to the audio converter as a multi-file session. The protocol slug is derived from the first entry in unique_obj_names.

Response

Returns an InitProtocolMultiMutation

Arguments
Name Description
addressConfig - AddressConfigInput Naming convention configuration for this protocol. Controls which speaker fields are shown in the formatted name output (gender, givenName, familyName, preTitle, postTitle, party, posLong, posShort). Stored as addressnameConfiguration in the protocol's meta_data.
agendaItemList - [AgendaItemListInput] Agenda list of the session
date - Date! Date of the session
language - String! Language of the audio files
name - String! Name of the session
projectSlug - String! Slug of the project
speakerList - [PersonInputList] List of speakers to pre-register
typeOfDocument - String! Type of the document
uniqueObjNames - [String]! List of unique names of the audio files (e.g. ['part1.mp3', 'part2.mp3'])

Example

Query
mutation initProtocolMulti(
  $addressConfig: AddressConfigInput,
  $agendaItemList: [AgendaItemListInput],
  $date: Date!,
  $language: String!,
  $name: String!,
  $projectSlug: String!,
  $speakerList: [PersonInputList],
  $typeOfDocument: String!,
  $uniqueObjNames: [String]!
) {
  initProtocolMulti(
    addressConfig: $addressConfig,
    agendaItemList: $agendaItemList,
    date: $date,
    language: $language,
    name: $name,
    projectSlug: $projectSlug,
    speakerList: $speakerList,
    typeOfDocument: $typeOfDocument,
    uniqueObjNames: $uniqueObjNames
  ) {
    protocol {
      ...ApiProtocolTypeFragment
    }
    success
  }
}
Variables
{
  "addressConfig": AddressConfigInput,
  "agendaItemList": [AgendaItemListInput],
  "date": "2007-12-03",
  "language": "abc123",
  "name": "xyz789",
  "projectSlug": "xyz789",
  "speakerList": [PersonInputList],
  "typeOfDocument": "abc123",
  "uniqueObjNames": ["abc123"]
}
Response
{
  "data": {
    "initProtocolMulti": {
      "protocol": ApiProtocolType,
      "success": true
    }
  }
}

renameSpeakerInTextsegment

Description

Rename speaker in text segments for a given protocol. It validates the user's authentication using an API key passed in the request header and processes the provided protocol slug and speaker information.

Arguments
Name Description
protocolSlug - String! Name of the protocol
speakerList - [SpeakerDataInput]! List of speakers to rename

Example

Query
mutation renameSpeakerInTextsegment(
  $protocolSlug: String!,
  $speakerList: [SpeakerDataInput]!
) {
  renameSpeakerInTextsegment(
    protocolSlug: $protocolSlug,
    speakerList: $speakerList
  ) {
    success
    nextSteps
  }
}
Variables
{
  "protocolSlug": "xyz789",
  "speakerList": [SpeakerDataInput]
}
Response
{
  "data": {
    "renameSpeakerInTextsegment": {
      "success": true,
      "nextSteps": "abc123"
    }
  }
}

rephraseAgendaItem

Description

Rephrase an agenda item by its ID by user input. It validates the user's authentication using an API key passed in the request header and rephrases the content of the agenda item.

Response

Returns a RephraseAgendaItemByIdMutation

Arguments
Name Description
agendaItemId - String! Agenda item to be extended by user prompt
userInput - String! Prompt by the user to extend the agenda item

Example

Query
mutation rephraseAgendaItem(
  $agendaItemId: String!,
  $userInput: String!
) {
  rephraseAgendaItem(
    agendaItemId: $agendaItemId,
    userInput: $userInput
  ) {
    rephraseElement {
      ...ApiRephraseElementFragment
    }
  }
}
Variables
{
  "agendaItemId": "abc123",
  "userInput": "abc123"
}
Response
{
  "data": {
    "rephraseAgendaItem": {
      "rephraseElement": ApiRephraseElement
    }
  }
}

shortenAgendaItem

Description

Shortens an agenda item by its ID by user input. It validates the user's authentication using an API key passed in the request header and shortens the content of the agenda item in case it's too long.

Response

Returns a ShortenAgendaItemByIdMutation

Arguments
Name Description
agendaItemId - String! Agenda item to be extended by user prompt
userInput - String Prompt by the user to extend the agenda item

Example

Query
mutation shortenAgendaItem(
  $agendaItemId: String!,
  $userInput: String
) {
  shortenAgendaItem(
    agendaItemId: $agendaItemId,
    userInput: $userInput
  ) {
    rephraseElement {
      ...ApiRephraseElementFragment
    }
  }
}
Variables
{
  "agendaItemId": "xyz789",
  "userInput": "abc123"
}
Response
{
  "data": {
    "shortenAgendaItem": {
      "rephraseElement": ApiRephraseElement
    }
  }
}

splitTextsegment

Description

Split a single text segment into two or more segments, each optionally assigned to a different speaker. The original segment is deleted and replaced by the new ones. Segment positions in the protocol are updated automatically.

Response

Returns a SplitTextsegmentMutation

Arguments
Name Description
newSegments - [NewSegmentInput]! Ordered list of replacement segments. Must cover the full content of the original segment.
textsegmentId - Int! ID of the text segment to split

Example

Query
mutation splitTextsegment(
  $newSegments: [NewSegmentInput]!,
  $textsegmentId: Int!
) {
  splitTextsegment(
    newSegments: $newSegments,
    textsegmentId: $textsegmentId
  ) {
    success
    newTextsegmentIds
  }
}
Variables
{"newSegments": [NewSegmentInput], "textsegmentId": 123}
Response
{"data": {"splitTextsegment": {"success": false, "newTextsegmentIds": [123]}}}

updateAddressConfig

Description

Sets or updates the addressnameConfiguration for an existing protocol. Controls which speaker name fields are included in the formatted output (e.g. in the generated protocol document).

All boolean flags default to True if addressConfig is omitted. Pass False for each field you want to hide.

Response

Returns an UpdateAddressConfigMutation

Arguments
Name Description
addressConfig - AddressConfigInput! Naming convention configuration. gender: Herr/Frau/Divers prefix. givenName / familyName: name parts. preTitle / postTitle: academic titles. party: party or organisation. posLong: Funktionsbezeichnung lang. posShort: Funktionsbezeichnung kurz.
protocolSlug - String! Slug of the protocol to update

Example

Query
mutation updateAddressConfig(
  $addressConfig: AddressConfigInput!,
  $protocolSlug: String!
) {
  updateAddressConfig(
    addressConfig: $addressConfig,
    protocolSlug: $protocolSlug
  ) {
    success
    protocol {
      ...ApiProtocolTypeFragment
    }
  }
}
Variables
{
  "addressConfig": AddressConfigInput,
  "protocolSlug": "abc123"
}
Response
{
  "data": {
    "updateAddressConfig": {
      "success": false,
      "protocol": ApiProtocolType
    }
  }
}

updateAgendaItemById

Description

Update a specific agenda item by its ID. It validates the user's authentication using an API key passed in the request header and processes the provided agenda item data.

Response

Returns an UpdateAgendaItemByIdMutation

Arguments
Name Description
agendaItem - AgendaItemInput! Agenda item to be updated
agendaItemId - Int! ID of the agenda item to be updated

Example

Query
mutation updateAgendaItemById(
  $agendaItem: AgendaItemInput!,
  $agendaItemId: Int!
) {
  updateAgendaItemById(
    agendaItem: $agendaItem,
    agendaItemId: $agendaItemId
  ) {
    agendaItem {
      ...ApiAgendaItemTypeFragment
    }
  }
}
Variables
{"agendaItem": AgendaItemInput, "agendaItemId": 123}
Response
{
  "data": {
    "updateAgendaItemById": {
      "agendaItem": ApiAgendaItemType
    }
  }
}

updateAllAgendaItemsByDepth

Description

Setting the detail depth of the agenda items for a given protocol. Depth can't be bigger than the max_depth of the agenda items.

Arguments
Name Description
depth - Int! New detail depth of the agenda item
protocolSlug - String! Name of the protocol

Example

Query
mutation updateAllAgendaItemsByDepth(
  $depth: Int!,
  $protocolSlug: String!
) {
  updateAllAgendaItemsByDepth(
    depth: $depth,
    protocolSlug: $protocolSlug
  ) {
    agendaItemList {
      ...ApiAgendaItemTypeFragment
    }
    success
  }
}
Variables
{"depth": 987, "protocolSlug": "xyz789"}
Response
{
  "data": {
    "updateAllAgendaItemsByDepth": {
      "agendaItemList": [ApiAgendaItemType],
      "success": false
    }
  }
}

Types

AWSUrlObject

Fields
Field Name Description
url - String AWS Url bucket name
fields - GenericScalar { "Content-Type": "multipart/form-data", "key": "test-audio.ogg", "x-amz-algorithm": "AWS4-HMAC-SHA256", "x-amz-credential": "", "x-amz-date": "20250512T105036Z", "policy": "", "x-amz-signature": "" }
Example
{
  "url": "abc123",
  "fields": GenericScalar
}

AddGlossaryMutation

Description

Add a glossary entry for the authenticated API user and apply it retroactively to all agenda items, text segments, and task items of the specified protocol. The glossary maps a spoken/misrecognised term to its correct spelling.

Fields
Field Name Description
success - Boolean True if the glossary entry was saved and applied
Example
{"success": true}

AddressConfigInput

Description

Controls which speaker name fields are included in the formatted name output. Corresponds to addressnameConfiguration stored in the protocol's meta_data. All fields default to True if the addressConfig is not provided at all.

Fields
Input Field Description
gender - Boolean Include gender prefix (Herr/Frau/Divers)
givenName - Boolean Include given name
familyName - Boolean Include family name
preTitle - Boolean Include pre-title (e.g. Dr., Prof.)
postTitle - Boolean Include post-title (e.g. MBA)
party - Boolean Include party / organization
posLong - Boolean Include long position title (Funktionsbezeichnung lang)
posShort - Boolean Include short position title (Funktionsbezeichnung kurz)
Example
{
  "gender": false,
  "givenName": false,
  "familyName": false,
  "preTitle": false,
  "postTitle": true,
  "party": true,
  "posLong": false,
  "posShort": true
}

AgendaItemInput

Fields
Input Field Description
title - String Title of the agenda item
depth - Int Depth of the agenda item
textList - [TextListItemInput] Text list of the agenda item
resolutionList - [ResolutionInputType] Resolution list of the agenda item
systemId - String ID of the agenda item in the external system (e.g. RIS/Session TOP-ID)
Example
{
  "title": "abc123",
  "depth": 987,
  "textList": [TextListItemInput],
  "resolutionList": [ResolutionInputType],
  "systemId": "abc123"
}

AgendaItemListInput

Fields
Input Field Description
title - String! Name of the agenda item
systemId - String ID of the agenda item in external system
startTime - String Timestamp 'HH:MM:SS' of the start time of the agenda item
resolution - String Resolution text of the agenda item in external system
Example
{
  "title": "xyz789",
  "systemId": "abc123",
  "startTime": "xyz789",
  "resolution": "xyz789"
}

AgendaItemTextType

Description

New structured representation of a single detail-depth text block.

Fields
Field Name Description
depth - Int Detail depth index (0 = full text, 1 = bullet points, 2 = result / summary)
name - String Human-readable label for this depth (e.g. 'Verlauf', 'Stichpunkte', 'Ergebnis', 'Notizen')
text - GenericScalar List of sentences / bullet points for this depth
hasBulletpoints - Boolean Whether the text is rendered as bullet points
Example
{
  "depth": 987,
  "name": "xyz789",
  "text": GenericScalar,
  "hasBulletpoints": false
}

ApiAgendaItemType

Fields
Field Name Description
id - String ID of the agenda item
classType - String Class type of the agenda item
title - String Title of the agenda item
depth - Int Depth of the textlist
maxDepth - Int Maximal depth of the textlist
metaData - String Meta data of the agenda item
textList - GenericScalar LEGACY. Flat dict of depth → sentence list: {"0": [...], "1": [...], "2": [...]}
resolutionList - [ResolutionType] LEGACY. List of resolutions as {resolution, decision} objects
texts - [AgendaItemTextType] New structured text blocks per detail depth, including name and bulletpoint flag.
resolutions - [ResolutionItemType] New structured resolutions including id and optional numerical voting results.
createdAt - DateTime Creation date of the agenda item
updatedAt - DateTime Last update date of the agenda item
Example
{
  "id": "abc123",
  "classType": "abc123",
  "title": "abc123",
  "depth": 123,
  "maxDepth": 123,
  "metaData": "xyz789",
  "textList": GenericScalar,
  "resolutionList": [ResolutionType],
  "texts": [AgendaItemTextType],
  "resolutions": [ResolutionItemType],
  "createdAt": "2007-12-03T10:15:30Z",
  "updatedAt": "2007-12-03T10:15:30Z"
}

ApiOrganizationType

Fields
Field Name Description
id - String ID of the organization
name - String Name of the organization
Example
{
  "id": "abc123",
  "name": "abc123"
}

ApiProjectType

Fields
Field Name Description
slug - String Slug of the project
name - String Name of the project
Example
{
  "slug": "abc123",
  "name": "xyz789"
}

ApiProtocolType

Fields
Field Name Description
slug - String ID of the protocol
name - String Name of the protocol
date - String Date of the protocol
language - String Language of the protocol
empty - Boolean Empty status of the protocol
editStage - Boolean DEPRICATED: Edit stage of the protocol
creatingStep - String Creation step of the protocol
creatingStepList - [String] Chronological list of all processing steps completed up to and including the current step. Derived from the known pipeline order — no separate history is stored in the database.
status - Boolean Status of the protocol, status can be True or False
renamedSpeakers - Boolean Variable to indicate if the speakers in the document were renamed
Example
{
  "slug": "abc123",
  "name": "abc123",
  "date": "abc123",
  "language": "xyz789",
  "empty": false,
  "editStage": false,
  "creatingStep": "xyz789",
  "creatingStepList": ["xyz789"],
  "status": true,
  "renamedSpeakers": true
}

ApiRephraseElement

Fields
Field Name Description
id - String ID of the rephrase element
status - String Processing status of the rephrase element
userInput - String User input of the rephrase element
rephraseType - String Rephrase type of the rephrase element
Example
{
  "id": "abc123",
  "status": "abc123",
  "userInput": "abc123",
  "rephraseType": "xyz789"
}

ApiResultsType

Fields
Field Name Description
creationDone - Boolean Protocol creation status
protocol - ApiProtocolType Protocol object
agendaItemList - [ApiAgendaItemType] List of agenda items
taskItemList - [ApiTaskType] List of tasks
Example
{
  "creationDone": true,
  "protocol": ApiProtocolType,
  "agendaItemList": [ApiAgendaItemType],
  "taskItemList": [ApiTaskType]
}

ApiSpeakerType

Fields
Field Name Description
slug - String Slug of the speaker
gender - String Gender of the speaker
givenName - String Given name of the speaker
familyName - String Family name of the speaker
party - String Partei Firma of the speaker
preTitle - String Pre Titel of the speaker
posShort - String Pos Short of the speaker
posLong - String Pos Long of the speaker
postTitle - String Post Titel of the speaker
systemId - String External System ID of the speaker
specialCase - Boolean Special Case of the speaker
Example
{
  "slug": "xyz789",
  "gender": "xyz789",
  "givenName": "xyz789",
  "familyName": "abc123",
  "party": "abc123",
  "preTitle": "abc123",
  "posShort": "abc123",
  "posLong": "xyz789",
  "postTitle": "abc123",
  "systemId": "abc123",
  "specialCase": true
}

ApiSummaryPerSpeakerItemTypeWithSpeaker

Fields
Field Name Description
speakerObj - ApiSpeakerType Object of the speaker
textList - GenericScalar { "0": ["Die Software funktioniert gut."], "1": ["Bitte fügen Sie eine Chat-Funktion hinzu."], "2": ["Das Login über Google sollte schneller sein."] ... }
speakerSuggestion - String Speaker suggestion
createdAt - DateTime Creation date of the summary
updatedAt - DateTime Last update date of the summary
Example
{
  "speakerObj": ApiSpeakerType,
  "textList": GenericScalar,
  "speakerSuggestion": "xyz789",
  "createdAt": "2007-12-03T10:15:30Z",
  "updatedAt": "2007-12-03T10:15:30Z"
}

ApiTaskType

Fields
Field Name Description
id - String ID of the task
text - String Text of the task
date - String Date of the task
assignedTo - String Assigned person for the task
done - Boolean Task completion status
createdAt - DateTime Creation date of the task
updatedAt - DateTime Last update date of the task
Example
{
  "id": "abc123",
  "text": "xyz789",
  "date": "abc123",
  "assignedTo": "xyz789",
  "done": true,
  "createdAt": "2007-12-03T10:15:30Z",
  "updatedAt": "2007-12-03T10:15:30Z"
}

ApiTextsegmentTypeV2

Fields
Field Name Description
id - String ID of the TextSegment
speakerObj - ApiSpeakerType Object of the speaker
textJson - [TranscriptSegment] List of transcript segments
pos - Int Position of the text segment
Example
{
  "id": "abc123",
  "speakerObj": ApiSpeakerType,
  "textJson": [TranscriptSegment],
  "pos": 987
}

ApiUsageRecordType

Fields
Field Name Description
id - String ID of the usage record
email - String E-Mail of the account that created the usage record
amount - Int Amount of budget that was used in seconds
createdAt - String Timestamp of the creation
Example
{
  "id": "abc123",
  "email": "xyz789",
  "amount": 123,
  "createdAt": "xyz789"
}

Boolean

Description

The Boolean scalar type represents true or false.

CreateApiOrganizationMutation

Fields
Field Name Description
organization - ApiOrganizationType
plainKey - String
Example
{
  "organization": ApiOrganizationType,
  "plainKey": "xyz789"
}

CreateProjectMutation

Description

Create a new project. User can upload files into a project. Pass the resulting slug into the import audio mutation.

Fields
Field Name Description
project - ApiProjectType
Example
{"project": ApiProjectType}

Date

Description

The Date scalar type represents a Date value as specified by iso8601.

Example
"2007-12-03"

DateTime

Description

The DateTime scalar type represents a DateTime value as specified by iso8601.

Example
"2007-12-03T10:15:30Z"

DeleteAgendaItemByIdMutation

Description

Delete a specific agenda item by its ID. Use this when text segments were assigned to a TOP that does not exist in the external system and the item should be removed entirely. All associated AgendaItemText and ResolutionItem records are cascade-deleted.

Fields
Field Name Description
success - Boolean True if the agenda item was deleted
Example
{"success": false}

DeleteAudioByProtocolSlugMutation

Fields
Field Name Description
success - Boolean
protocol - ApiProtocolType
Example
{"success": false, "protocol": ApiProtocolType}

DeleteProtocolMutation

Fields
Field Name Description
success - Boolean
Example
{"success": false}

EditSpeakerDataTypeWithSpeaker

Fields
Field Name Description
protocol - ApiProtocolType Protocol object
speakerList - GenericScalar { "Rafiq": { "duration": 77.32, "textsegment": [ { "id": 8, "textsegment_duration": 5.8, "text": "Hello world.", "time": { "start_time": 12.97, "end_time": 14.48 } } ] } }
summaryPerSpeakerList - [ApiSummaryPerSpeakerItemTypeWithSpeaker] List of summaries per speaker
attendees - [ApiSpeakerType] List of attendees set on initProtocol mutation
serverLoad - String Current processing queue load. Based on the number of protocols currently being processed today. "low" = fewer than 10, "medium" = 10–19, "high" = 20 or more. When "high", processing times may be longer than usual.
Example
{
  "protocol": ApiProtocolType,
  "speakerList": GenericScalar,
  "summaryPerSpeakerList": [
    ApiSummaryPerSpeakerItemTypeWithSpeaker
  ],
  "attendees": [ApiSpeakerType],
  "serverLoad": "xyz789"
}

ExtendAgendaItemByIdMutation

Description

Extend an agenda item by its ID by user input. It validates the user's authentication using an API key passed in the request header and extends the content of the agenda item in case it's too short.

Fields
Field Name Description
rephraseElement - ApiRephraseElement
Example
{"rephraseElement": ApiRephraseElement}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

GenericScalar

Description

The GenericScalar scalar type represents a generic GraphQL scalar value that could be: String, Boolean, Int, Float, List or Object.

Example
GenericScalar

InitProtocolMultiMutation

Description

Mutation to upload and register multiple audio files for a single session. Works identically to initProtocol but accepts a list of unique object names. All files are passed together to the audio converter as a multi-file session. The protocol slug is derived from the first entry in unique_obj_names.

Fields
Field Name Description
protocol - ApiProtocolType Protocol object
success - Boolean Indicates if import was successful
Example
{"protocol": ApiProtocolType, "success": false}

InitProtocolMutation

Description

Mutation to upload and register an audio file for processing. This mutation allows users to upload an audio file and register it for further processing. It validates the user's authentication using an API key passed in the request header and processes the provided audio metadata.

Fields
Field Name Description
protocol - ApiProtocolType Protocol object
success - Boolean Indicates if import audio was successful
Example
{"protocol": ApiProtocolType, "success": true}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

NewSegmentInput

Fields
Input Field Description
speakerSlug - String! Slug of the speaker for this segment (from getProtocolBySlug speakerList keys)
textJson - [TextJsonItemInput]! List of transcript sentences for this segment
Example
{
  "speakerSlug": "abc123",
  "textJson": [TextJsonItemInput]
}

PersonInputList

Fields
Input Field Description
gender - String! Gender of the speaker [w, m, d]
givenName - String! Given name of the speaker
familyName - String! Family name of the speaker
party - String Partei Firma of the speaker. Default = null
preTitle - String Pre Titel of the speaker. Default = null
postTitle - String Post Titel of the speaker. Default = null
systemId - String External System ID of the speaker. Default = null
Example
{
  "gender": "abc123",
  "givenName": "xyz789",
  "familyName": "abc123",
  "party": "abc123",
  "preTitle": "xyz789",
  "postTitle": "xyz789",
  "systemId": "xyz789"
}

RenameSpeakerInTextsegmentMutation

Description

Rename speaker in text segments for a given protocol. It validates the user's authentication using an API key passed in the request header and processes the provided protocol slug and speaker information.

Fields
Field Name Description
success - Boolean Indicates if the rename operation was successful
nextSteps - String Next steps after the rename operation
Example
{"success": false, "nextSteps": "xyz789"}

RephraseAgendaItemByIdMutation

Description

Rephrase an agenda item by its ID by user input. It validates the user's authentication using an API key passed in the request header and rephrases the content of the agenda item.

Fields
Field Name Description
rephraseElement - ApiRephraseElement
Example
{"rephraseElement": ApiRephraseElement}

RephraseReturnObject

Fields
Field Name Description
agendaItemId - String! ID of the agenda item
agendaItemDepth - Int! Depth of the agenda item
refactoredSuggestion - [String] String list of refactored suggestions
Example
{
  "agendaItemId": "xyz789",
  "agendaItemDepth": 987,
  "refactoredSuggestion": ["abc123"]
}

ResolutionInputType

Fields
Input Field Description
resolution - String Resolution text. Default = null
decision - String Decision text. Default = null
Example
{
  "resolution": "abc123",
  "decision": "xyz789"
}

ResolutionItemType

Description

New structured resolution with optional voting result fields.

Fields
Field Name Description
id - Int ID of the resolution item
resolution - String Resolution text (Beschlusstext)
decision - String Decision text (Abstimmungsergebnis als Text)
positiveVote - Int Number of yes votes
negativeVote - Int Number of no votes
neutralVote - Int Number of abstentions
numberAttendees - Int Total number of attendees who voted
Example
{
  "id": 987,
  "resolution": "xyz789",
  "decision": "xyz789",
  "positiveVote": 123,
  "negativeVote": 123,
  "neutralVote": 123,
  "numberAttendees": 987
}

ResolutionType

Fields
Field Name Description
resolution - String Resolution text
decision - String Decision text
Example
{
  "resolution": "xyz789",
  "decision": "xyz789"
}

ShortenAgendaItemByIdMutation

Description

Shortens an agenda item by its ID by user input. It validates the user's authentication using an API key passed in the request header and shortens the content of the agenda item in case it's too long.

Fields
Field Name Description
rephraseElement - ApiRephraseElement
Example
{"rephraseElement": ApiRephraseElement}

SpeakerDataInput

Fields
Input Field Description
oldSlug - String! Current slug of the speaker
gender - String Gender of the new speaker
givenName - String Given name of the new speaker
familyName - String Family name of the new speaker
party - String Party of the new speaker
preTitle - String Pre-title of the new speaker
postTitle - String Post-title of the new speaker
posLong - String Long position of the new speaker
posShort - String Short position of the new speaker
systemId - String External System ID of the new speaker
specialCase - Boolean Mark this speaker as a special case. When True, only the givenName field is used as the display name and the speaker is excluded from the summary output. Use this for background noise, unknown persons, etc.
Example
{
  "oldSlug": "abc123",
  "gender": "abc123",
  "givenName": "xyz789",
  "familyName": "abc123",
  "party": "xyz789",
  "preTitle": "xyz789",
  "postTitle": "xyz789",
  "posLong": "xyz789",
  "posShort": "abc123",
  "systemId": "xyz789",
  "specialCase": false
}

SplitTextsegmentMutation

Description

Split a single text segment into two or more segments, each optionally assigned to a different speaker. The original segment is deleted and replaced by the new ones. Segment positions in the protocol are updated automatically.

Fields
Field Name Description
success - Boolean True if the split was applied successfully
newTextsegmentIds - [Int] IDs of the newly created text segments
Example
{"success": false, "newTextsegmentIds": [123]}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"abc123"

TextJsonItemInput

Fields
Input Field Description
text - String! Transcribed sentence
startTime - Float Start time of the sentence in seconds
endTime - Float End time of the sentence in seconds
Example
{
  "text": "abc123",
  "startTime": 123.45,
  "endTime": 123.45
}

TextListItemInput

Fields
Input Field Description
depth - String! Identifier like '0', '1', '2'
sentenceList - [String]! List of sentences for this detail depth
Example
{
  "depth": "xyz789",
  "sentenceList": ["abc123"]
}

TextsegmentListTypeV2

Fields
Field Name Description
textsegmentList - [ApiTextsegmentTypeV2] List of text segments
Example
{"textsegmentList": [ApiTextsegmentTypeV2]}

TranscriptSegment

Fields
Field Name Description
text - String Transcription text
startTime - Float Start time of the segment in seconds
endTime - Float End time of the segment in seconds
Example
{
  "text": "xyz789",
  "startTime": 123.45,
  "endTime": 123.45
}

UpdateAddressConfigMutation

Description

Sets or updates the addressnameConfiguration for an existing protocol. Controls which speaker name fields are included in the formatted output (e.g. in the generated protocol document).

All boolean flags default to True if addressConfig is omitted. Pass False for each field you want to hide.

Fields
Field Name Description
success - Boolean True if the config was saved successfully
protocol - ApiProtocolType Updated protocol object
Example
{"success": false, "protocol": ApiProtocolType}

UpdateAgendaItemByIdMutation

Description

Update a specific agenda item by its ID. It validates the user's authentication using an API key passed in the request header and processes the provided agenda item data.

Fields
Field Name Description
agendaItem - ApiAgendaItemType Updated agenda item
Example
{"agendaItem": ApiAgendaItemType}

UpdateAllAgendaItemsByDepthMutation

Description

Setting the detail depth of the agenda items for a given protocol. Depth can't be bigger than the max_depth of the agenda items.

Fields
Field Name Description
agendaItemList - [ApiAgendaItemType] List of agenda items
success - Boolean Indicates if the rename operation was successful
Example
{"agendaItemList": [ApiAgendaItemType], "success": true}