API og MCP

Samtale-API

En samtale er ett intervju mellom AI-en og én respondent. API-et returnerer hvem respondenten er, AI-sammendraget med ett svar per spørsmål og hele transkripsjonen. Se API-oversikten for autentisering, paginering og feil.

List opp samtaler#

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

Returnerer samtalene i et prosjekt, de nyeste først, hver med AI-sammendraget sitt. Transkripsjoner er ikke med i listen. Hent dem med Hent en samtale.

Søkeparametere#

ParameterBeskrivelse
statusÉn eller flere av invited, opened, started, completed, cancelled, atskilt med komma. Uten den returneres alle statuser unntatt invited.
sentimentÉn eller flere av positive, negative, neutral, mixed, atskilt med komma
created_afterBare samtaler som ble opprettet på eller etter dette ISO 8601-tidspunktet, for eksempel 2026-05-01T00:00:00Z
created_beforeBare samtaler som ble opprettet på eller før dette tidspunktet
searchTekst det skal søkes etter i sammendrag, sitater og opplysninger om respondenten. Opptil 200 tegn.
limit1 til 100. Standard er 25.
cursornext_cursor fra forrige side

Bare fullførte samtaler har et fullstendig sammendrag, så de fleste integrasjoner sender status=completed.

Eksempel#

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"

Svar#

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

Felt for samtaler#

FeltTypeBeskrivelse
idstringID-en til samtalen, den samme som webhooks sender som conversation_id
project_idstringProsjektet den hører til
statusstringinvited, opened, started, completed eller cancelled. Dashbordet viser started som Pågår.
created_atstringNår samtalen ble opprettet. For invitasjoner er det da invitasjonen ble opprettet.
started_atstring eller nullNår intervjuet startet
ended_atstring eller nullNår samtalen ble fullført eller avbrutt
duration_secondsnumber eller nullTiden fra start til slutt
countrystring eller nullLandkoden til respondenten, når den er kjent
overall_sentimentstring eller nullpositive, negative, neutral eller mixed. Det samme som summary.overall_sentiment.
respondent.labelstring eller nullDet beste navnet på respondenten: e-postadressen, deretter navnet, deretter en annen identitet
respondent.emailstring eller nullEldre felt, null for nye samtaler. Les e-postadresser fra respondent.identities.
respondent.identitiesarrayAlt som er kjent om respondenten. source er owner (du oppga den), ai (hentet ut fra meldingene til respondenten) eller system (lagt til av Diaform).
metadataobjectTomt for invitasjoner og direkte lenker. For innebygde samtaler inneholder det detaljer om innbyggingen, for eksempel "embed": true og embed_parent_origin.
inviteobject eller nullDetaljer om invitasjonen når samtalen kom fra en respondentinvitasjon, ellers null
summaryobject eller nullAI-sammendraget. null til samtalen er avsluttet og sammendraget er klart.

Felt for sammendraget#

FeltTypeBeskrivelse
overall_sentimentstringpositive, negative, neutral eller mixed
answersarrayÉn oppføring per spørsmål respondenten fikk
answers[].question_idstringID-en til spørsmålet i prosjektet
answers[].questionstringSpørsmålet slik det ble stilt
answers[].summarystringEt kort sammendrag av svaret
answers[].sentimentstringpositive, negative, neutral eller mixed
answers[].confidencestringhigh, medium eller low: hvor fullstendig spørsmålet ble besvart
answers[].quotesarraySitater som skiller seg ut, med respondentens egne ord. Ofte tom.
urgent_issuesarrayKritiske problemer respondenten tok opp, som korte strenger
additional_insightsstring eller nullNyttige tilbakemeldinger som ikke hørte til noe spørsmål

Hent en samtale#

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

Returnerer én samtale med alle feltene fra listen, pluss transkripsjonen i messages.

Eksempel#

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

Svar#

Feltene som også finnes i listen, er forkortet her.

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?"
    }
  ]
}
FeltTypeBeskrivelse
messagesarrayTranskripsjonen i rekkefølge. Tom når respondenten aldri svarte.
messages[].rolestringinterviewer (AI-en) eller respondent
messages[].textstringDet som ble sagt. Muntlige svar vises som transkripsjon, og et valg eller en vurdering vises som tekst, for eksempel Selected answers: Pro.