API ja MCP

Keskustelu-API

Keskustelu on yksi haastattelu AI:n ja yhden vastaajan välillä. API palauttaa tiedon siitä, kuka vastaaja on, AI-yhteenvedon, jossa on yksi vastaus kutakin kysymystä kohden, sekä koko litteroinnin. Katso todennus, sivutus ja virheet sivulta API:n yleiskatsaus.

Listaa keskustelut#

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

Palauttaa projektin keskustelut uusin ensin, kunkin AI-yhteenvetoineen. Litteroinnit eivät ole mukana listassa. Hae ne kohdan Hae keskustelu avulla.

Kyselyparametrit#

ParametriKuvaus
statusYksi tai useampi arvoista invited, opened, started, completed, cancelled pilkuilla erotettuina. Ilman tätä parametria palautetaan kaikki tilat paitsi invited.
sentimentYksi tai useampi arvoista positive, negative, neutral, mixed pilkuilla erotettuina
created_afterVain keskustelut, jotka on luotu tällä ISO 8601 -ajanhetkellä tai sen jälkeen, esimerkiksi 2026-05-01T00:00:00Z
created_beforeVain keskustelut, jotka on luotu tällä ajanhetkellä tai sitä ennen
searchTeksti, jota haetaan yhteenvedoista, lainauksista ja vastaajan tiedoista. Enintään 200 merkkiä.
limit1–100. Oletus 25.
cursorEdellisen sivun next_cursor

Vain valmiilla keskusteluilla on täysi yhteenveto, joten useimmat integraatiot lähettävät status=completed.

Esimerkki#

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"

Vastaus#

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

Keskustelun kentät#

KenttäTyyppiKuvaus
idstringKeskustelun ID, sama jonka webhookit lähettävät kentässä conversation_id
project_idstringProjekti, johon keskustelu kuuluu
statusstringinvited, opened, started, completed tai cancelled. Hallintapaneeli näyttää tilan started nimellä Käynnissä.
created_atstringMilloin keskustelu luotiin. Kutsuissa se on kutsun luontiaika.
started_atstring tai nullMilloin haastattelu alkoi
ended_atstring tai nullMilloin keskustelu valmistui tai peruttiin
duration_secondsnumber tai nullAika alusta loppuun
countrystring tai nullVastaajan maakoodi, jos se on tiedossa
overall_sentimentstring tai nullpositive, negative, neutral tai mixed. Sama kuin summary.overall_sentiment.
respondent.labelstring tai nullParas nimi vastaajalle: ensisijaisesti sähköpostiosoite, sitten nimi, sitten jokin muu tunniste
respondent.emailstring tai nullVanha kenttä, uusissa keskusteluissa null. Lue sähköpostiosoitteet kentästä respondent.identities.
respondent.identitiesarrayKaikki vastaajasta tiedossa oleva. source on owner (sinä annoit sen), ai (poimittu vastaajan viesteistä) tai system (Diaformin lisäämä).
metadataobjectTyhjä kutsuissa ja suorissa linkeissä. Upotetuissa keskusteluissa siinä on upotuksen tietoja, kuten "embed": true ja embed_parent_origin.
inviteobject tai nullKutsun tiedot, kun keskustelu tuli vastaajakutsusta, muuten null
summaryobject tai nullAI-yhteenveto. null, kunnes keskustelu päättyy ja yhteenveto on valmis.

Yhteenvedon kentät#

KenttäTyyppiKuvaus
overall_sentimentstringpositive, negative, neutral tai mixed
answersarrayYksi merkintä kutakin vastaajalle esitettyä kysymystä kohden
answers[].question_idstringKysymyksen ID projektissa
answers[].questionstringKysymys sellaisena kuin se esitettiin
answers[].summarystringLyhyt yhteenveto vastauksesta
answers[].sentimentstringpositive, negative, neutral tai mixed
answers[].confidencestringhigh, medium tai low: kuinka kattavasti kysymykseen vastattiin
answers[].quotesarrayHuomionarvoiset lainaukset vastaajan omin sanoin. Usein tyhjä.
urgent_issuesarrayVastaajan esiin nostamat kriittiset ongelmat lyhyinä merkkijonoina
additional_insightsstring tai nullHyödyllinen palaute, joka ei kuulunut minkään kysymyksen alle

Hae keskustelu#

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

Palauttaa yhden keskustelun, jossa on kaikki listan kentät sekä litterointi kentässä messages.

Esimerkki#

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

Vastaus#

Listan kanssa yhteiset kentät on lyhennetty tässä.

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?"
    }
  ]
}
KenttäTyyppiKuvaus
messagesarrayLitterointi järjestyksessä. Tyhjä, jos vastaaja ei vastannut kertaakaan.
messages[].rolestringinterviewer (AI) tai respondent
messages[].textstringMitä sanottiin. Puhutut vastaukset näkyvät tekstiksi muutettuina, ja valinta tai arvio tekstinä, kuten Selected answers: Pro.