API i MCP

API za izvještaje

AI izvještaj čita skup dovršenih razgovora i opisuje sentiment, česte teme i probleme. API vraća izvještaje koje je vaš tim izradio na nadzornoj ploči. Ne može izrađivati nove. Autentifikaciju, straničenje i pogreške opisuje Pregled API-ja.

Popis izvještaja#

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

Vraća izvještaje projekta, od najnovijeg, bez njihova sadržaja. Izbrisani izvještaji su izostavljeni.

Parametri upita#

ParametarOpis
statusJedna ili više vrijednosti generating, completed, failed, odvojenih zarezima
limitOd 1 do 100. Zadano 25.
cursorVrijednost next_cursor s prethodne stranice

Primjer#

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

Odgovor#

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
}

Polja izvještaja#

PoljeVrstaOpis
idstringID izvještaja
project_idstringProjekt kojem izvještaj pripada
statusstringgenerating, completed ili failed
titlestring ili nullNaslov koji je AI dao izvještaju. null dok izvještaj nije dovršen.
focusstring ili nullPitanje vašeg tima na koje se izvještaj treba usredotočiti, ako ga ima
selection.modestringdate_range (svi dovršeni razgovori u razdoblju) ili manual (ručno odabrani razgovori)
selection.range_start, selection.range_endstring ili nullRazdoblje za date_range. null znači da s te strane nema ograničenja.
conversation_countnumberKoliko razgovora izvještaj obuhvaća
first_conversation_at, last_conversation_atstring ili nullKada su izrađeni najstariji i najnoviji obuhvaćeni razgovor
sentiment_countsobject ili nullObuhvaćeni razgovori prema ukupnom sentimentu. null dok izvještaj nije dovršen.
error_messagestring ili nullZašto izvještaj sa statusom failed nije uspio
created_atstringKada je izvještaj zatražen
completed_atstring ili nullKada je dovršen ili nije uspio

Dohvat izvještaja#

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

Vraća jedan izvještaj sa svim poljima s popisa te conversation_ids i napisanim sadržajem u content.

Primjer#

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

Odgovor#

Polja zajednička s popisom ovdje su izostavljena.

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

Polja sadržaja#

content je null dok je izvještaj u statusu generating i kad je failed.

PoljeVrstaOpis
conversation_idsarraySvi razgovori koje izvještaj obuhvaća
content.summarystringOpći sažetak izvještaja
content.focus_answerstring ili nullOdgovor na focus izvještaja, ako je postavljen
content.sentiment_explanationstringŠto stoji iza takve raspodjele sentimenta
content.themesarrayTeme koje se ponavljaju, od najčešće spominjane
content.themes[].tonestringpositive, negative, mixed ili neutral
content.issuesarrayKonkretni problemi koje treba riješiti
content.issues[].severitystringhigh, medium ili low
content.outliersarrayZapažanja vrijedna pažnje koja je iznijelo tek nekoliko ispitanika. Nemaju citate.
title, detailstringUz svaku temu, problem i izdvojeno zapažanje: naslov i kratko objašnjenje
mention_countnumberU koliko se razgovora to pojavilo
conversation_idsarrayTi razgovori. Bilo koji od njih dohvatite putem API-ja za razgovore.
quotes[].textstringVlastite riječi ispitanika
quotes[].translationstring ili nullEngleski prijevod kad je citat na drugom jeziku
quotes[].conversation_idstringRazgovor iz kojeg citat potječe
quotes[].respondent_labelstring ili nullTko je to rekao, ako je poznato
quotes[].created_atstringKada je taj razgovor izrađen

Izvještaj je snimka razgovora u trenutku kad je napisan. Ako se razgovor kasnije izbriše, njegovi se citati uklanjaju iz izvještaja.