Rapporten-API
Een AI-rapport leest een reeks afgeronde gesprekken en beschrijft het sentiment, de veelvoorkomende thema's en de problemen. De API geeft de rapporten terug die je team in het dashboard heeft gemaakt. Nieuwe rapporten maken kan de API niet. Zie het API-overzicht voor authenticatie, paginering en fouten.
Rapporten ophalen#
GET /api/v1/projects/{project_id}/reportsGeeft de rapporten van een project terug, van nieuw naar oud, zonder hun inhoud. Verwijderde rapporten worden weggelaten.
Queryparameters#
| Parameter | Beschrijving |
|---|---|
status | Eén of meer van generating, completed, failed, gescheiden door komma's |
limit | 1 tot 100. Standaard 25. |
cursor | De next_cursor van de vorige pagina |
Voorbeeld#
curl -G "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d/reports" \
-H "Authorization: Bearer $DIAFORM_API_KEY" \
--data-urlencode "status=completed"Response#
{
"data": [
{
"id": "882f2ed7-07d9-4344-aced-9e523275b196",
"project_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"status": "completed",
"title": "Support problems overshadow a well-liked product",
"focus": null,
"selection": {
"mode": "date_range",
"range_start": "2026-05-01T00:00:00+00:00",
"range_end": "2026-05-31T23:59:59+00:00"
},
"conversation_count": 48,
"first_conversation_at": "2026-05-01T08:12:09.692998+00:00",
"last_conversation_at": "2026-05-30T13:11:09.628765+00:00",
"sentiment_counts": {
"positive": 14,
"negative": 11,
"neutral": 8,
"mixed": 15,
"unknown": 0
},
"error_message": null,
"created_at": "2026-06-01T09:33:49.465144+00:00",
"completed_at": "2026-06-01T09:34:07.2+00:00"
}
],
"has_more": false,
"next_cursor": null
}Velden van een rapport#
| Veld | Type | Beschrijving |
|---|---|---|
id | string | ID van het rapport |
project_id | string | Het project waar het bij hoort |
status | string | generating, completed of failed |
title | string of null | De kop die de AI het rapport gaf. null tot het rapport klaar is. |
focus | string of null | De vraag waarop je team het rapport liet focussen, als die er is |
selection.mode | string | date_range (alle afgeronde gesprekken in een periode) of manual (met de hand gekozen gesprekken) |
selection.range_start, selection.range_end | string of null | De periode bij date_range. null betekent geen grens aan die kant. |
conversation_count | number | Hoeveel gesprekken het rapport behandelt |
first_conversation_at, last_conversation_at | string of null | Wanneer het oudste en het nieuwste behandelde gesprek zijn aangemaakt |
sentiment_counts | object of null | De behandelde gesprekken per algemeen sentiment. null tot het rapport klaar is. |
error_message | string of null | Waarom een rapport met de status failed is mislukt |
created_at | string | Wanneer het rapport is aangevraagd |
completed_at | string of null | Wanneer het klaar was of mislukte |
Eén rapport ophalen#
GET /api/v1/reports/{report_id}Geeft één rapport terug met elk veld van de lijst, plus conversation_ids en de geschreven content.
Voorbeeld#
curl "https://diaform.io/api/v1/reports/882f2ed7-07d9-4344-aced-9e523275b196" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Response#
De velden die ook in de lijst staan, zijn hier weggelaten.
{
"id": "882f2ed7-07d9-4344-aced-9e523275b196",
"status": "completed",
"title": "Support problems overshadow a well-liked product",
"conversation_ids": [
"0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee",
"912b8ced-f69d-4f50-b497-9a712fe59359"
],
"content": {
"summary": "Most respondents like the product and would recommend it, but support wait times came up in a quarter of the interviews.",
"focus_answer": null,
"sentiment_explanation": "Praise for the product is offset by frustration with support.",
"themes": [
{
"title": "Customer support is the top complaint",
"detail": "Twelve respondents described long waits before reaching support.",
"tone": "negative",
"mention_count": 12,
"conversation_ids": ["912b8ced-f69d-4f50-b497-9a712fe59359"],
"quotes": [
{
"conversation_id": "912b8ced-f69d-4f50-b497-9a712fe59359",
"text": "it took me 25 min to connect last time, which is too long",
"translation": null,
"respondent_label": "alex@acme.com",
"created_at": "2026-05-10T17:52:10.539708+00:00"
}
]
}
],
"issues": [
{
"title": "Invite emails land in spam",
"detail": "Three respondents never received their teammate invite.",
"severity": "high",
"mention_count": 3,
"conversation_ids": ["0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee"],
"quotes": []
}
],
"outliers": [
{
"title": "Request for an on-premise version",
"detail": "One enterprise respondent can't use cloud tools.",
"mention_count": 1,
"conversation_ids": ["0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee"]
}
]
}
}Velden van de inhoud#
content is null zolang het rapport de status generating heeft, en ook bij de status failed.
| Veld | Type | Beschrijving |
|---|---|---|
conversation_ids | array | Elk gesprek dat het rapport behandelt |
content.summary | string | De algemene samenvatting van het rapport |
content.focus_answer | string of null | Het antwoord op de focus van het rapport, als die is ingesteld |
content.sentiment_explanation | string | Wat de verdeling van het sentiment verklaart |
content.themes | array | Terugkerende onderwerpen, de meest genoemde eerst |
content.themes[].tone | string | positive, negative, mixed of neutral |
content.issues | array | Concrete problemen om op te lossen |
content.issues[].severity | string | high, medium of low |
content.outliers | array | Opvallende punten die maar een paar respondenten noemden. Ze hebben geen citaten. |
title, detail | string | Bij elk thema, elk probleem en elke uitschieter: een kop en een korte uitleg |
mention_count | number | In hoeveel gesprekken het werd genoemd |
conversation_ids | array | Die gesprekken. Je kunt elk ervan ophalen met de Gesprekken-API. |
quotes[].text | string | De eigen woorden van de respondent |
quotes[].translation | string of null | Een Engelse vertaling als het citaat in een andere taal is |
quotes[].conversation_id | string | Het gesprek waar het citaat uit komt |
quotes[].respondent_label | string of null | Wie het zei, als dat bekend is |
quotes[].created_at | string | Wanneer dat gesprek is aangemaakt |
Een rapport is een momentopname van de gesprekken op het moment dat het werd geschreven. Wordt een gesprek later verwijderd, dan worden de citaten uit dat gesprek uit het rapport gehaald.