API a MCP

API pro reporty

AI report přečte sadu dokončených rozhovorů a popíše sentiment, společná témata a problémy. API vrací reporty, které váš tým vytvořil v dashboardu. Nové vytvářet neumí. Ověření, stránkování a chyby popisuje Přehled API.

Výpis reportů#

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

Vrátí reporty projektu od nejnovějších, bez obsahu. Smazané reporty jsou vynechané.

Parametry dotazu#

ParametrPopis
statusJedna nebo více hodnot generating, completed, failed, oddělených čárkami
limit1 až 100. Výchozí 25.
cursorHodnota next_cursor z předchozí stránky

Příklad#

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

Odpověď#

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
}

Pole reportu#

PoleTypPopis
idstringID reportu
project_idstringProjekt, ke kterému patří
statusstringgenerating, completed nebo failed
titlestring nebo nullNázev, který AI reportu dala. null, dokud není dokončený.
focusstring nebo nullOtázka, na kterou se měl report podle vašeho týmu zaměřit, pokud nějaká byla
selection.modestringdate_range (všechny dokončené rozhovory za období) nebo manual (ručně vybrané rozhovory)
selection.range_start, selection.range_endstring nebo nullObdobí pro date_range. null znamená, že z té strany není omezené.
conversation_countnumberKolik rozhovorů report pokrývá
first_conversation_at, last_conversation_atstring nebo nullKdy byl vytvořen nejstarší a nejnovější zahrnutý rozhovor
sentiment_countsobject nebo nullZahrnuté rozhovory podle celkového sentimentu. null, dokud není report dokončený.
error_messagestring nebo nullProč report se stavem failed selhal
created_atstringKdy byl report vyžádán
completed_atstring nebo nullKdy byl dokončen nebo selhal

Načtení reportu#

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

Vrátí jeden report se všemi poli z výpisu, navíc s conversation_ids a napsaným obsahem v content.

Příklad#

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

Odpověď#

Pole společná s výpisem jsou tady vynechaná.

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

Pole obsahu#

content je null, dokud je report ve stavu generating, a také když skončil ve stavu failed.

PoleTypPopis
conversation_idsarrayVšechny rozhovory, které report pokrývá
content.summarystringCelkové shrnutí reportu
content.focus_answerstring nebo nullOdpověď na focus reportu, pokud byl zadán
content.sentiment_explanationstringCo stojí za rozložením sentimentu
content.themesarrayOpakující se témata, od nejčastěji zmiňovaných
content.themes[].tonestringpositive, negative, mixed nebo neutral
content.issuesarrayKonkrétní problémy k vyřešení
content.issues[].severitystringhigh, medium nebo low
content.outliersarrayVýrazné postřehy, které zmínilo jen pár respondentů. Nemají citace.
title, detailstringU každého tématu, problému a ojedinělého hlasu: titulek a krátké vysvětlení
mention_countnumberV kolika rozhovorech to zaznělo
conversation_idsarrayTyto rozhovory. Kterýkoli z nich načtete přes API pro rozhovory.
quotes[].textstringVlastní slova respondenta
quotes[].translationstring nebo nullAnglický překlad, pokud je citace v jiném jazyce
quotes[].conversation_idstringRozhovor, ze kterého citace pochází
quotes[].respondent_labelstring nebo nullKdo to řekl, pokud je to známo
quotes[].created_atstringKdy byl tento rozhovor vytvořen

Report je snímek rozhovorů v době, kdy byl napsán. Pokud je rozhovor později smazán, jeho citace se z reportu odstraní.