API e MCP

API dei report

Un report IA legge un insieme di conversazioni completate e mette per iscritto il sentiment, i temi ricorrenti e i problemi. L’API restituisce i report che il tuo team ha creato nella dashboard. Non può crearne di nuovi. Per autenticazione, paginazione ed errori, vedi la Panoramica dell’API.

Elenca i report#

HTTP
GET /api/v1/projects/{project_id}/reports

Restituisce i report di un progetto, dal più recente, senza il loro contenuto. I report eliminati sono esclusi.

Parametri della query#

ParametroDescrizione
statusUno o più tra generating, completed, failed, separati da virgole
limitDa 1 a 100. Predefinito 25.
cursorIl next_cursor della pagina precedente

Esempio#

curl -G "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d/reports" \
  -H "Authorization: Bearer $DIAFORM_API_KEY" \
  --data-urlencode "status=completed"

Risposta#

JSON
{
  "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
}

Campi del report#

CampoTipoDescrizione
idstringID del report
project_idstringIl progetto a cui appartiene
statusstringgenerating, completed o failed
titlestring o nullIl titolo che l’IA ha dato al report. null finché non è completato.
focusstring o nullLa domanda su cui il tuo team ha chiesto al report di concentrarsi, se c’è
selection.modestringdate_range (tutte le conversazioni completate in un periodo) o manual (conversazioni scelte a mano)
selection.range_start, selection.range_endstring o nullIl periodo per date_range. null significa nessun limite da quel lato.
conversation_countnumberQuante conversazioni copre il report
first_conversation_at, last_conversation_atstring o nullQuando sono state create la più vecchia e la più recente delle conversazioni coperte
sentiment_countsobject o nullLe conversazioni coperte, divise per sentiment complessivo. null finché il report non è completato.
error_messagestring o nullPerché un report failed non è riuscito
created_atstringQuando è stato richiesto il report
completed_atstring o nullQuando è terminato o non è riuscito

Ottieni un report#

HTTP
GET /api/v1/reports/{report_id}

Restituisce un report con tutti i campi dell’elenco, più conversation_ids e il content scritto.

Esempio#

curl "https://diaform.io/api/v1/reports/882f2ed7-07d9-4344-aced-9e523275b196" \
  -H "Authorization: Bearer $DIAFORM_API_KEY"

Risposta#

I campi in comune con l’elenco qui sono omessi.

JSON
{
  "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"]
      }
    ]
  }
}

Campi del contenuto#

content è null mentre il report è generating e quando è failed.

CampoTipoDescrizione
conversation_idsarrayTutte le conversazioni coperte dal report
content.summarystringIl riepilogo generale del report
content.focus_answerstring o nullLa risposta al focus del report, se ne è stato impostato uno
content.sentiment_explanationstringCosa determina la ripartizione del sentiment
content.themesarrayGli argomenti ricorrenti, dal più citato
content.themes[].tonestringpositive, negative, mixed o neutral
content.issuesarrayProblemi concreti da risolvere
content.issues[].severitystringhigh, medium o low
content.outliersarrayPunti rilevanti sollevati solo da pochi rispondenti. Non hanno citazioni.
title, detailstringIn ogni tema, problema e caso isolato: un titolo e una breve spiegazione
mention_countnumberQuante conversazioni l’hanno sollevato
conversation_idsarrayQuelle conversazioni. Recuperane una qualsiasi con l’API delle conversazioni.
quotes[].textstringLe parole del rispondente
quotes[].translationstring o nullUna traduzione in inglese quando la citazione è in un’altra lingua
quotes[].conversation_idstringLa conversazione da cui proviene la citazione
quotes[].respondent_labelstring o nullChi l’ha detto, se è noto
quotes[].created_atstringQuando è stata creata quella conversazione

Un report è un’istantanea delle conversazioni nel momento in cui è stato scritto. Se una conversazione viene eliminata in seguito, le sue citazioni vengono rimosse dal report.