Optional calls
Get Results with Empty Items
Get Results with Empty Items
Use the getResultsWithEmpty query to retrieve all agenda items for a protocol — including items that have no AI-generated text yet.
This is identical to getResults except that it drops the textsegment_count__gt=0 filter. Empty items will have textList: {} and resolutionList: [] naturally, since they have no associated content rows.
Use this query when you need to render a complete agenda outline regardless of whether all items have been processed.
GraphQL Query
query GetResultsWithEmpty($protocolSlug: String!) {
getResultsWithEmpty(protocolSlug: $protocolSlug) {
creationDone
protocol {
slug
name
date
language
empty
creatingStep
status
renamedSpeakers
}
agendaItemList {
id
classType
title
depth
maxDepth
metaData
textList
resolutionList {
resolution
decision
}
texts {
depth
name
text
hasBulletpoints
}
resolutions {
id
resolution
decision
positiveVote
negativeVote
neutralVote
numberAttendees
}
createdAt
updatedAt
}
taskItemList {
id
text
date
assignedTo
done
createdAt
updatedAt
}
}
}
Example JavaScript Implementation
import axios from "axios";
const GET_RESULTS_WITH_EMPTY = `
query GetResultsWithEmpty($protocolSlug: String!) {
getResultsWithEmpty(protocolSlug: $protocolSlug) {
creationDone
protocol {
slug
name
date
creatingStep
status
}
agendaItemList {
id
title
depth
textList
resolutionList {
resolution
decision
}
}
taskItemList {
id
text
assignedTo
done
}
}
}
`;
export async function getResultsWithEmpty(protocolSlug) {
const res = await axios.post(
"https://api-v2.speechmind.com/external/v2/graphql",
{
query: GET_RESULTS_WITH_EMPTY,
variables: { protocolSlug },
},
{
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.SPEECHMIND_API_KEY,
},
}
);
const result = res.data.data.getResultsWithEmpty;
const { creationDone, protocol, agendaItemList, taskItemList } = result;
return { creationDone, protocol, agendaItemList, taskItemList };
}
Two ways to read content — both fully supported
Same as getResults, each agenda item exposes two parallel field sets. Both are fully supported — request whichever fits your integration, or both at once.
Text content
textList— JSON object keyed by depth level.{"0": [...]}for summary,{"0": [...], "1": [...], "2": [...]}for politics. Empty items return{}.texts— Typed list. Each entry hasdepth(Int),name(String, e.g."Verlauf"),text([String]), andhasBulletpoints(Boolean).
Resolutions
resolutionList— Each entry hasresolution(String) anddecision(String).resolutions— Each entry addsid,positiveVote,negativeVote,neutralVote, andnumberAttendeeson top of the legacy fields.
Notes
- Items with no AI content will have
textList: {}andtexts: []— your rendering logic should handle both empty states. - Results are ordered by
pos(position), the same ordering used bygetResults. - If
creationDoneisfalse, some items may still be empty because processing is ongoing — poll untilcreationDoneistruebefore treating empty items as permanently empty.
Have questions?
Still have questions? Talk to support.