API i MCP

API za razgovore

Razgovor je jedan intervju između AI-ja i jednog ispitanika. API vraća tko je ispitanik, AI sažetak s jednim odgovorom po pitanju i cijeli transkript. Autentifikaciju, straničenje i pogreške opisuje Pregled API-ja.

Popis razgovora#

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

Vraća razgovore projekta, od najnovijeg, svaki s AI sažetkom. Transkripti nisu uključeni u popis. Dohvatite ih kako je opisano u odjeljku Dohvat razgovora.

Parametri upita#

ParametarOpis
statusJedna ili više vrijednosti invited, opened, started, completed, cancelled, odvojenih zarezima. Bez njega se vraćaju svi statusi osim invited.
sentimentJedna ili više vrijednosti positive, negative, neutral, mixed, odvojenih zarezima
created_afterSamo razgovori izrađeni u ovo vrijeme ili nakon njega, u formatu ISO 8601, npr. 2026-05-01T00:00:00Z
created_beforeSamo razgovori izrađeni u ovo vrijeme ili prije njega
searchTekst koji se traži u sažecima, citatima i podacima o ispitaniku. Do 200 znakova.
limitOd 1 do 100. Zadano 25.
cursorVrijednost next_cursor s prethodne stranice

Samo dovršeni razgovori imaju potpun sažetak, pa većina integracija šalje status=completed.

Primjer#

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"

Odgovor#

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

Polja razgovora#

PoljeVrstaOpis
idstringID razgovora, isti onaj koji webhookovi šalju kao conversation_id
project_idstringProjekt kojem razgovor pripada
statusstringinvited, opened, started, completed ili cancelled. Nadzorna ploča prikazuje started kao U tijeku.
created_atstringKada je razgovor izrađen. Za pozivnice je to trenutak izrade pozivnice.
started_atstring ili nullKada je intervju počeo
ended_atstring ili nullKada je razgovor dovršen ili otkazan
duration_secondsnumber ili nullVrijeme od početka do kraja
countrystring ili nullKôd države ispitanika, ako je poznat
overall_sentimentstring ili nullpositive, negative, neutral ili mixed. Isto kao summary.overall_sentiment.
respondent.labelstring ili nullNajbolji naziv za ispitanika: njegova e-adresa, zatim ime, zatim neki drugi identitet
respondent.emailstring ili nullZastarjelo polje, null za nove razgovore. E-adrese čitajte iz respondent.identities.
respondent.identitiesarraySve što se zna o ispitaniku. source je owner (vi ste ga dali), ai (izdvojen iz njegovih poruka) ili system (dodao ga je Diaform).
metadataobjectPrazno za pozivnice i izravne poveznice. Za ugrađene razgovore sadrži podatke o ugradnji poput "embed": true i embed_parent_origin.
inviteobject ili nullPodaci o pozivnici kad je razgovor nastao iz pozivnice ispitanika, inače null
summaryobject ili nullAI sažetak. null dok razgovor ne završi i sažetak ne bude spreman.

Polja sažetka#

PoljeVrstaOpis
overall_sentimentstringpositive, negative, neutral ili mixed
answersarrayJedan unos za svako pitanje postavljeno ispitaniku
answers[].question_idstringID pitanja u projektu
answers[].questionstringPitanje kako je postavljeno
answers[].summarystringKratak sažetak odgovora
answers[].sentimentstringpositive, negative, neutral ili mixed
answers[].confidencestringhigh, medium ili low: koliko je potpuno odgovoreno na pitanje
answers[].quotesarrayIstaknuti citati, vlastitim riječima ispitanika. Često prazno.
urgent_issuesarrayKritični problemi koje je ispitanik iznio, kao kratki znakovni nizovi
additional_insightsstring ili nullKorisne povratne informacije koje se nisu uklapale ni u jedno pitanje

Dohvat razgovora#

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

Vraća jedan razgovor sa svim poljima s popisa te transkriptom u messages.

Primjer#

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

Odgovor#

Polja zajednička s popisom ovdje su skraćena.

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?"
    }
  ]
}
PoljeVrstaOpis
messagesarrayTranskript po redu. Prazno ako ispitanik nije nijednom odgovorio.
messages[].rolestringinterviewer (AI) ili respondent
messages[].textstringŠto je rečeno. Izgovoreni odgovori prikazuju se kao transkripcija, a odabir ili ocjena kao tekst, npr. Selected answers: Pro.