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}/conversationsPalauttaa projektin keskustelut uusin ensin, kunkin AI-yhteenvetoineen. Litteroinnit eivät ole mukana listassa. Hae ne kohdan Hae keskustelu avulla.
Kyselyparametrit#
| Parametri | Kuvaus |
|---|---|
status | Yksi tai useampi arvoista invited, opened, started, completed, cancelled pilkuilla erotettuina. Ilman tätä parametria palautetaan kaikki tilat paitsi invited. |
sentiment | Yksi tai useampi arvoista positive, negative, neutral, mixed pilkuilla erotettuina |
created_after | Vain keskustelut, jotka on luotu tällä ISO 8601 -ajanhetkellä tai sen jälkeen, esimerkiksi 2026-05-01T00:00:00Z |
created_before | Vain keskustelut, jotka on luotu tällä ajanhetkellä tai sitä ennen |
search | Teksti, jota haetaan yhteenvedoista, lainauksista ja vastaajan tiedoista. Enintään 200 merkkiä. |
limit | 1–100. Oletus 25. |
cursor | Edellisen 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ä | Tyyppi | Kuvaus |
|---|---|---|
id | string | Keskustelun ID, sama jonka webhookit lähettävät kentässä conversation_id |
project_id | string | Projekti, johon keskustelu kuuluu |
status | string | invited, opened, started, completed tai cancelled. Hallintapaneeli näyttää tilan started nimellä Käynnissä. |
created_at | string | Milloin keskustelu luotiin. Kutsuissa se on kutsun luontiaika. |
started_at | string tai null | Milloin haastattelu alkoi |
ended_at | string tai null | Milloin keskustelu valmistui tai peruttiin |
duration_seconds | number tai null | Aika alusta loppuun |
country | string tai null | Vastaajan maakoodi, jos se on tiedossa |
overall_sentiment | string tai null | positive, negative, neutral tai mixed. Sama kuin summary.overall_sentiment. |
respondent.label | string tai null | Paras nimi vastaajalle: ensisijaisesti sähköpostiosoite, sitten nimi, sitten jokin muu tunniste |
respondent.email | string tai null | Vanha kenttä, uusissa keskusteluissa null. Lue sähköpostiosoitteet kentästä respondent.identities. |
respondent.identities | array | Kaikki vastaajasta tiedossa oleva. source on owner (sinä annoit sen), ai (poimittu vastaajan viesteistä) tai system (Diaformin lisäämä). |
metadata | object | Tyhjä kutsuissa ja suorissa linkeissä. Upotetuissa keskusteluissa siinä on upotuksen tietoja, kuten "embed": true ja embed_parent_origin. |
invite | object tai null | Kutsun tiedot, kun keskustelu tuli vastaajakutsusta, muuten null |
summary | object tai null | AI-yhteenveto. null, kunnes keskustelu päättyy ja yhteenveto on valmis. |
Yhteenvedon kentät#
| Kenttä | Tyyppi | Kuvaus |
|---|---|---|
overall_sentiment | string | positive, negative, neutral tai mixed |
answers | array | Yksi merkintä kutakin vastaajalle esitettyä kysymystä kohden |
answers[].question_id | string | Kysymyksen ID projektissa |
answers[].question | string | Kysymys sellaisena kuin se esitettiin |
answers[].summary | string | Lyhyt yhteenveto vastauksesta |
answers[].sentiment | string | positive, negative, neutral tai mixed |
answers[].confidence | string | high, medium tai low: kuinka kattavasti kysymykseen vastattiin |
answers[].quotes | array | Huomionarvoiset lainaukset vastaajan omin sanoin. Usein tyhjä. |
urgent_issues | array | Vastaajan esiin nostamat kriittiset ongelmat lyhyinä merkkijonoina |
additional_insights | string tai null | Hyö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ä | Tyyppi | Kuvaus |
|---|---|---|
messages | array | Litterointi järjestyksessä. Tyhjä, jos vastaaja ei vastannut kertaakaan. |
messages[].role | string | interviewer (AI) tai respondent |
messages[].text | string | Mitä sanottiin. Puhutut vastaukset näkyvät tekstiksi muutettuina, ja valinta tai arvio tekstinä, kuten Selected answers: Pro. |