Structured Summaries
Fetch JSON summaries (Q&A sections) for a protocol template.
GET /v1/summaries/structuredUse this endpoint for protocols with summaryType: "structured". Each summary contains question/answer sections.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
protocolId | UUID | Yes | — | Protocol template ID |
recordId | UUID | No | — | Filter to a specific meeting |
dateFrom | string | No | — | Filter from this date (ISO 8601) |
dateTo | string | No | — | Filter until this date (ISO 8601) |
limit | integer | No | 20 | Max results (max: 50) |
offset | integer | No | 0 | Skip results for pagination |
Response
{
"success": true,
"data": [
{
"recordId": "bd435e76-0eb1-432f-91a8-b4fed18744aa",
"createdAt": "2026-04-10T14:30:00Z",
"sections": [
{
"title": "Action Items",
"question": "What are the action items from this meeting?",
"answerType": "text",
"answers": [
{
"answer": "John will prepare the Q2 report by Friday",
"referenceIds": [12, 45]
}
]
}
]
}
],
"pagination": {
"total": 8,
"limit": 20,
"offset": 0
}
}Examples
curl -X GET "https://api.optiverse.ai/external-api/v1/summaries/structured?protocolId=b7c4c322-2fd4-474b-8937-b46ff465e0af&limit=10" \
-H "Authorization: Bearer optiuser_v1_your_key_here"const response = await fetch(
`${BASE_URL}/v1/summaries/structured?protocolId=${protocolId}&limit=10`,
{ headers: { "Authorization": `Bearer ${API_KEY}` } }
);
const { data, pagination } = await response.json();
console.log(`${pagination.total} summaries found`);