API og MCP

Samtale-API

En samtale er ét interview mellem AI'en og én respondent. API'et returnerer, hvem respondenten er, AI-opsummeringen med ét svar pr. spørgsmål og hele transskriptionen. Se API-overblikket for godkendelse, paginering og fejl.

Vis samtaler#

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

Returnerer et projekts samtaler, nyeste først, hver med sin AI-opsummering. Transskriptioner er ikke med i listen. Hent dem med Hent en samtale.

Query-parametre#

ParameterBeskrivelse
statusEn eller flere af invited, opened, started, completed, cancelled, adskilt af kommaer. Uden den returneres alle statusser undtagen invited.
sentimentEn eller flere af positive, negative, neutral, mixed, adskilt af kommaer
created_afterKun samtaler, der er oprettet på eller efter dette ISO 8601-tidspunkt, f.eks. 2026-05-01T00:00:00Z
created_beforeKun samtaler, der er oprettet på eller før dette tidspunkt
searchTekst, der søges efter i opsummeringer, citater og oplysninger om respondenten. Op til 200 tegn.
limit1 til 100. Standard 25.
cursornext_cursor fra den forrige side

Kun gennemførte samtaler har en fuld opsummering, så de fleste integrationer 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"
}

Felter for samtaler#

FeltTypeBeskrivelse
idstringSamtalens ID, det samme, som webhooks sender som conversation_id
project_idstringDet projekt, den hører til
statusstringinvited, opened, started, completed eller cancelled. Dashboardet viser started som I gang.
created_atstringHvornår samtalen blev oprettet. For invitationer er det tidspunktet, hvor invitationen blev oprettet.
started_atstring eller nullHvornår interviewet startede
ended_atstring eller nullHvornår samtalen blev gennemført eller annulleret
duration_secondsnumber eller nullTiden fra start til slut
countrystring eller nullRespondentens landekode, hvis den kendes
overall_sentimentstring eller nullpositive, negative, neutral eller mixed. Det samme som summary.overall_sentiment.
respondent.labelstring eller nullDet bedste navn for respondenten: e-mailen, derefter navnet, derefter en anden identitet
respondent.emailstring eller nullForældet felt, null for nye samtaler. Læs e-mails fra respondent.identities.
respondent.identitiesarrayAlt, hvad der vides om respondenten. source er owner (du har leveret den), ai (udtrukket fra respondentens beskeder) eller system (tilføjet af Diaform).
metadataobjectTom for invitationer og direkte links. For indlejrede samtaler indeholder den detaljer om indlejringen, f.eks. "embed": true og embed_parent_origin.
inviteobject eller nullDetaljer om invitationen, når samtalen kom fra en respondentinvitation, ellers null
summaryobject eller nullAI-opsummeringen. null, indtil samtalen slutter, og opsummeringen er klar.

Felter for opsummeringen#

FeltTypeBeskrivelse
overall_sentimentstringpositive, negative, neutral eller mixed
answersarrayÉn post pr. spørgsmål, respondenten fik stillet
answers[].question_idstringSpørgsmålets ID i projektet
answers[].questionstringSpørgsmålet, som det blev stillet
answers[].summarystringEn kort opsummering af svaret
answers[].sentimentstringpositive, negative, neutral eller mixed
answers[].confidencestringhigh, medium eller low: hvor fuldt spørgsmålet blev besvaret
answers[].quotesarrayUdvalgte citater med respondentens egne ord. Ofte tom.
urgent_issuesarrayKritiske problemer, respondenten har nævnt, som korte strenge
additional_insightsstring eller nullNyttig feedback, der ikke hørte til et bestemt spørgsmål

Hent en samtale#

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

Returnerer én samtale med alle felter fra listen samt transskriptionen i messages.

Eksempel#

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

Svar#

De felter, der også findes 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
messagesarrayTransskriptionen i rækkefølge. Tom, når respondenten aldrig svarede.
messages[].rolestringinterviewer (AI'en) eller respondent
messages[].textstringDet, der blev sagt. Talte svar vises som transskription, og et valg eller en bedømmelse vises som tekst, f.eks. Selected answers: Pro.