API och MCP

Konversations-API

En konversation är en intervju mellan AI:n och en respondent. API:t returnerar vem respondenten är, AI-sammanfattningen med ett svar per fråga och hela transkriptionen. Läs mer om autentisering, paginering och fel under API-översikt.

Lista konversationer#

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

Returnerar ett projekts konversationer, de nyaste först, var och en med sin AI-sammanfattning. Transkriptioner ingår inte i listan. Du hämtar dem med Hämta en konversation.

Frågeparametrar#

ParameterBeskrivning
statusEn eller flera av invited, opened, started, completed, cancelled, avgränsade med kommatecken. Utan parametern returneras alla statusar utom invited.
sentimentEn eller flera av positive, negative, neutral, mixed, avgränsade med kommatecken
created_afterBara konversationer som skapades vid eller efter den här ISO 8601-tidpunkten, till exempel 2026-05-01T00:00:00Z
created_beforeBara konversationer som skapades vid eller före den här tidpunkten
searchText att söka efter i sammanfattningar, citat och uppgifter om respondenten. Upp till 200 tecken.
limit1 till 100. Standard 25.
cursornext_cursor från föregående sida

Bara slutförda konversationer har en fullständig sammanfattning, så de flesta integrationer skickar status=completed.

Exempel#

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

Fält för konversationer#

FältTypBeskrivning
idstringKonversationens ID, samma som webhooks skickar som conversation_id
project_idstringProjektet som konversationen hör till
statusstringinvited, opened, started, completed eller cancelled. Dashboarden visar started som Pågår.
created_atstringNär konversationen skapades. För inbjudningar är det när inbjudan skapades.
started_atstring eller nullNär intervjun startade
ended_atstring eller nullNär konversationen slutfördes eller avbröts
duration_secondsnumber eller nullTid från start till slut
countrystring eller nullRespondentens landskod, om den är känd
overall_sentimentstring eller nullpositive, negative, neutral eller mixed. Samma som summary.overall_sentiment.
respondent.labelstring eller nullDet bästa namnet på respondenten: i första hand e-postadressen, sedan namnet, sedan en annan identitet
respondent.emailstring eller nullÄldre fält, null för nya konversationer. Läs e-postadresser från respondent.identities.
respondent.identitiesarrayAllt som är känt om respondenten. source är owner (du angav den), ai (hämtad ur respondentens meddelanden) eller system (tillagd av Diaform).
metadataobjectTomt för inbjudningar och direktlänkar. För inbäddade konversationer innehåller det uppgifter om inbäddningen, som "embed": true och embed_parent_origin.
inviteobject eller nullUppgifter om inbjudan när konversationen kom från en respondentinbjudan, annars null
summaryobject eller nullAI-sammanfattningen. null tills konversationen är slut och sammanfattningen är klar.

Fält i sammanfattningen#

FältTypBeskrivning
overall_sentimentstringpositive, negative, neutral eller mixed
answersarrayEn post per fråga som respondenten fick
answers[].question_idstringFrågans ID i projektet
answers[].questionstringFrågan som den ställdes
answers[].summarystringKort sammanfattning av svaret
answers[].sentimentstringpositive, negative, neutral eller mixed
answers[].confidencestringhigh, medium eller low: hur fullständigt frågan besvarades
answers[].quotesarrayCitat som sticker ut, med respondentens egna ord. Ofta tom.
urgent_issuesarrayKritiska problem som respondenten tog upp, som korta strängar
additional_insightsstring eller nullAnvändbar feedback som inte hörde till någon fråga

Hämta en konversation#

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

Returnerar en konversation med alla fält från listan, plus transkriptionen i messages.

Exempel#

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

Svar#

Fälten som är gemensamma med listan är förkortade här.

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?"
    }
  ]
}
FältTypBeskrivning
messagesarrayTranskriptionen i ordning. Tom när respondenten aldrig svarade.
messages[].rolestringinterviewer (AI:n) eller respondent
messages[].textstringDet som sades. Talade svar visas som transkriberad text, och ett val eller betyg som text, till exempel Selected answers: Pro.