API a MCP

API pro rozhovory

Rozhovor je jedno sezení AI s jedním respondentem. API vrací, kdo je respondent, shrnutí od AI s jednou odpovědí na každou otázku a celý přepis. Ověření, stránkování a chyby popisuje Přehled API.

Výpis rozhovorů#

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

Vrátí rozhovory projektu od nejnovějších, každý se shrnutím od AI. Přepisy ve výpisu nejsou. Získáte je přes Načtení rozhovoru.

Parametry dotazu#

ParametrPopis
statusJedna nebo více hodnot invited, opened, started, completed, cancelled, oddělených čárkami. Bez něj se vracejí všechny stavy kromě invited.
sentimentJedna nebo více hodnot positive, negative, neutral, mixed, oddělených čárkami
created_afterJen rozhovory vytvořené v tomto čase ISO 8601 nebo po něm, například 2026-05-01T00:00:00Z
created_beforeJen rozhovory vytvořené v tomto čase nebo před ním
searchText, který se hledá ve shrnutích, citacích a údajích o respondentovi. Nejvýš 200 znaků.
limit1 až 100. Výchozí 25.
cursorHodnota next_cursor z předchozí stránky

Úplné shrnutí mají jen dokončené rozhovory, proto většina integrací posílá status=completed.

Příklad#

curl -G "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d/conversations" \
  -H "Authorization: Bearer $DIAFORM_API_KEY" \
  --data-urlencode "status=completed" \
  --data-urlencode "sentiment=negative,mixed" \
  --data-urlencode "created_after=2026-05-01T00:00:00Z" \
  --data-urlencode "limit=50"

Odpověď#

JSON
{
  "data": [
    {
      "id": "0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee",
      "project_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
      "status": "completed",
      "created_at": "2026-05-07T12:00:00.123456+00:00",
      "started_at": "2026-05-07T12:01:11.482913+00:00",
      "ended_at": "2026-05-07T12:15:41.204+00:00",
      "duration_seconds": 870,
      "country": "DE",
      "overall_sentiment": "mixed",
      "respondent": {
        "label": "alex@acme.com",
        "email": null,
        "identities": [
          { "type": "email", "value": "alex@acme.com", "source": "owner" },
          { "type": "name", "value": "Alex", "source": "ai" }
        ]
      },
      "metadata": {},
      "invite": {
        "id": "3a4f49c7-b8f4-4c44-8f74-fd8e4277c3e4",
        "status": "completed",
        "created_at": "2026-05-07T12:00:00.123456+00:00",
        "opened_at": "2026-05-07T12:01:11.482913+00:00",
        "completed_at": "2026-05-07T12:15:41.204+00:00"
      },
      "summary": {
        "overall_sentiment": "mixed",
        "answers": [
          {
            "question_id": "V1StGXR8_Z5jdHi6B-myT",
            "question": "How did your first week with the product go?",
            "summary": "Setup was quick, but inviting teammates was confusing.",
            "sentiment": "mixed",
            "confidence": "high",
            "quotes": ["I had no idea where the invite button was"]
          }
        ],
        "urgent_issues": [],
        "additional_insights": "Would pay more for a Slack integration."
      }
    }
  ],
  "has_more": true,
  "next_cursor": "WyIyMDI2LTA1LTA3VDEyOjAwOjAwLjEyMzQ1NiswMDowMCIsIjBmOGQ0M2EyIl0"
}

Pole rozhovoru#

PoleTypPopis
idstringID rozhovoru, stejné, jaké webhooky posílají jako conversation_id
project_idstringProjekt, ke kterému patří
statusstringinvited, opened, started, completed nebo cancelled. Dashboard ukazuje started jako Probíhá.
created_atstringKdy byl rozhovor vytvořen. U pozvánek je to okamžik vytvoření pozvánky.
started_atstring nebo nullKdy rozhovor začal
ended_atstring nebo nullKdy byl rozhovor dokončen nebo zrušen
duration_secondsnumber nebo nullDoba od začátku do konce
countrystring nebo nullKód země respondenta, pokud je známý
overall_sentimentstring nebo nullpositive, negative, neutral nebo mixed. Stejné jako summary.overall_sentiment.
respondent.labelstring nebo nullNejlepší označení respondenta: e-mail, potom jméno, potom jiná identita
respondent.emailstring nebo nullStarší pole, u nových rozhovorů null. E-maily čtěte z respondent.identities.
respondent.identitiesarrayVše, co je o respondentovi známo. source je owner (zadali jste ji vy), ai (vytažená ze zpráv respondenta) nebo system (přidaná systémem Diaform).
metadataobjectU pozvánek a přímých odkazů prázdné. U vložených rozhovorů obsahuje údaje o vložení, například "embed": true a embed_parent_origin.
inviteobject nebo nullÚdaje o pozvánce, pokud rozhovor vznikl z pozvánky respondenta, jinak null
summaryobject nebo nullShrnutí od AI. null, dokud rozhovor neskončí a shrnutí není hotové.

Pole shrnutí#

PoleTypPopis
overall_sentimentstringpositive, negative, neutral nebo mixed
answersarrayJedna položka na každou otázku, kterou respondent dostal
answers[].question_idstringID otázky v projektu
answers[].questionstringOtázka tak, jak byla položena
answers[].summarystringKrátké shrnutí odpovědi
answers[].sentimentstringpositive, negative, neutral nebo mixed
answers[].confidencestringhigh, medium nebo low: jak úplně byla otázka zodpovězena
answers[].quotesarrayVýrazné citace vlastními slovy respondenta. Často prázdné.
urgent_issuesarrayKritické problémy, které respondent zmínil, jako krátké řetězce
additional_insightsstring nebo nullUžitečná zpětná vazba, která nepatřila k žádné otázce

Načtení rozhovoru#

HTTP
GET /api/v1/conversations/{conversation_id}

Vrátí jeden rozhovor se všemi poli z výpisu a navíc s přepisem v messages.

Příklad#

curl "https://diaform.io/api/v1/conversations/0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee" \
  -H "Authorization: Bearer $DIAFORM_API_KEY"

Odpověď#

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

JSON
{
  "id": "0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee",
  "project_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
  "status": "completed",
  "overall_sentiment": "mixed",
  "summary": {},
  "messages": [
    {
      "role": "interviewer",
      "text": "Hi! Thanks for taking the time. How did your first week with the product go?"
    },
    {
      "role": "respondent",
      "text": "Setup was fast. But I had no idea where the invite button was."
    },
    {
      "role": "interviewer",
      "text": "Where did you expect to find it?"
    }
  ]
}
PoleTypPopis
messagesarrayPřepis v pořadí zpráv. Prázdný, pokud respondent vůbec neodpověděl.
messages[].rolestringinterviewer (AI) nebo respondent
messages[].textstringCo zaznělo. Mluvené odpovědi jsou uvedené jako přepis řeči a výběr nebo hodnocení jako text, například Selected answers: Pro.