API pre pozvánky respondentov
Pozvánky respondentov umožňujú vašim systémom pozvať na rozhovor konkrétnych ľudí. Vytvorte pre zákazníka osobný odkaz s pripojeným e-mailom alebo ID účtu, pošlite ho akýmkoľvek spôsobom a jeho odpovede sú s týmto zákazníkom prepojené od začiatku.
Potrebujete plán Pro, Business alebo Enterprise a API kľúč. Kľúče a overenie opisuje Prehľad API.
Výsledky načítate cez API pre rozhovory: každý rozhovor obsahuje svoj invite a identity, ktoré ste pripojili.
Tieto endpointy sú staršie než zvyšok API a zachovávajú si pôvodné názvy: projekt označujú ako agent (agentId) a používajú parametre v camelCase.
Vytvorenie odkazu na pozvanie#
POST /api/v1/respondent-invitesKaždá požiadavka vytvorí jeden odkaz pre jedného respondenta v jednom projekte. Diaform zároveň hneď vytvorí rozhovor a pripojí identity, ktoré pošlete, takže výsledky sú s danou osobou prepojené od začiatku.
Telo požiadavky#
| Pole | Typ | Povinné | Pravidlá |
|---|---|---|---|
agentId | string | Áno | ID projektu (UUID) v organizácii kľúča |
identities | array | Áno | 1 až 10 položiek, jedna z každého typu. |
identities[].type | string | Áno | Najviac 64 znakov: malé písmená, číslice, _ a -, na začiatku písmeno alebo číslica. Veľké písmená sa prevedú na malé. |
identities[].value | string | Áno | 1 až 512 znakov po orezaní medzier. Hodnota email musí byť platná e-mailová adresa a ukladá sa malými písmenami. |
organizationId | string | Nie | Ak ho pošlete, musí sa zhodovať s organizáciou kľúča |
send_email | boolean | Nie | true pošle odkaz e-mailom na identitu email z pozvánky a ak respondent rozhovor nedokončí, po 3 dňoch pošle jednu pripomienku. Predvolene false. |
Keď pošlete send_email, odpoveď obsahuje objekt email: { "status": "sent" }, { "status": "failed" } alebo { "status": "skipped", "reason": "..." }. Pozvánka sa vytvorí v každom prípade. Dôvody sú no_email, unsubscribed, not_published, no_usage, monthly_limit (mesačný limit e-mailov s pozvánkami vo vašom pláne je vyčerpaný), answered, already_sent, in_progress, plan a not_found. Čo e-mail obsahuje, nájdete v časti Identifikácia respondentov.
Bežné typy sú email, name, identifier, user_id a account_id. Funguje akýkoľvek typ, ktorý spĺňa pravidlá.
Príklad#
curl -X POST "https://diaform.io/api/v1/respondent-invites" \
-H "Authorization: Bearer $DIAFORM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"identities": [
{ "type": "email", "value": "alex@acme.com" },
{ "type": "account_id", "value": "acct_4821" }
]
}'Odpoveď#
{
"organization_id": "4d6ecdb4-8543-4adf-ae65-1f24106d5474",
"agent_id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"agent_name": "Onboarding interviews",
"invite": {
"id": "3a4f49c7-b8f4-4c44-8f74-fd8e4277c3e4",
"created_at": "2026-05-07T12:00:00.123456+00:00",
"status": "pending",
"opened_at": null,
"completed_at": null,
"conversation_id": "0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee",
"identities": [
{
"id": "71138f36-d16a-41f8-8a1f-65b9b8d483e3",
"created_at": "2026-05-07T12:00:00.123456+00:00",
"conversation_id": "0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee",
"source": "owner",
"identity_type": "email",
"value": "alex@acme.com",
"metadata": {}
},
{
"id": "120feee2-a10e-4b9a-af8e-a54d4dd672a1",
"created_at": "2026-05-07T12:00:00.123456+00:00",
"conversation_id": "0f8d43a2-6df9-49c8-bf5d-fd2b6ec2d9ee",
"source": "owner",
"identity_type": "account_id",
"value": "acct_4821",
"metadata": {}
}
],
"url": "https://acme.diaform.io/c/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d?invite=dia_resp_pCaJHykjUYBKZdkbVUtbyZRMC3yFzm246SK2K8lw"
}
}| Pole | Popis |
|---|---|
invite.id | ID pozvánky. Webhooky ho posielajú ako respondent.invite_id. |
invite.status | pending, opened alebo completed |
invite.conversation_id | Rozhovor vytvorený pre tohto respondenta |
invite.identities | Identity, ktoré ste poslali, každá so source: "owner" |
invite.url | Odkaz, ktorý pošlete. Ak máte overenú vlastnú doménu, použije ju. Po dokončení pozvánky je null. |
Ako sa odkaz správa#
- Vytvorený. Pozvánka je
pendinga jej rozhovor jeinvited. - Otvorený. Keď respondent otvorí odkaz, pozvánka aj rozhovor prejdú na
opened. Rozhovor prejde nastarted, keď respondent odpovie. - Obnovený. Ak respondent odíde a vráti sa cez ten istý odkaz, pokračuje v tom istom rozhovore.
- Skončený. Keď sa rozhovor skončí, či už dokončením alebo zrušením, pozvánka sa zmení na
completeda odkaz prestane fungovať.
Aby sa odkaz otvoril, projekt musí byť zverejnený. Odkazy fungujú pri projektoch v režime Verejný odkaz aj Odkazy len na pozvanie. Pri verejných projektoch funguje ďalej aj bežný odkaz. Viac v časti Identifikácia respondentov.
Starší endpoint pre rozhovory#
GET /api/v1/respondent-conversationsTento endpoint vypisuje rozhovory projektu a funguje ďalej, takže existujúce integrácie nemusíte meniť. Pre nové integrácie použite Zoznam rozhovorov, ktorý pridáva filtre, prepisy a jednoduchšie stránkovanie.
| Parameter | Povinný | Popis |
|---|---|---|
agentId | Áno | ID projektu |
limit | Nie | 1 až 100. Predvolene 50. |
status | Nie | invited, opened, started, completed alebo cancelled |
cursor | Nie | nextCursor.created_at z predchádzajúcej stránky |
cursorId | Nie | nextCursor.id z predchádzajúcej stránky |
Vracia conversations (každý s conversation_id, created_at, status, respondent_email, metadata, identities, summary a invite) a nextCursor, objekt s created_at a id, alebo null na poslednej stránke. Tieto dve hodnoty pošlite späť ako cursor a cursorId.
Parameter cursor zakódujte do URL. Jeho časová pečiatka obsahuje +, ktoré treba poslať ako %2B. Nezakódované + sa prečíta ako medzera a požiadavka zlyhá s 400. curl --data-urlencode a URLSearchParams ho zakódujú za vás.
Chyby#
Chyby vracajú JSON so správou error a kódom code, rovnako ako vo zvyšku API. Odpoveď 400 obsahuje aj details.fieldErrors, kde je uvedené pole, ktoré neprešlo kontrolou.
{
"error": "Invalid request",
"code": "invalid_request",
"details": {
"formErrors": [],
"fieldErrors": {
"identities": ["Add at least one respondent identity."]
}
}
}| Stav | code | Príčina |
|---|---|---|
400 | invalid_request | Pole alebo parameter dopytu chýba alebo je neplatný |
401 | unauthorized | Hlavička Authorization chýba, nemá tvar Bearer dia_org_live_... alebo bol kľúč odvolaný |
403 | forbidden | Vaša organizácia nemá plán Pro, Business ani Enterprise, alebo sa organizationId nezhoduje s kľúčom |
404 | not_found | agentId nie je projekt v organizácii kľúča |
500 | internal_error | Na strane Diaform nastala chyba. Skúste to znova. |
Limity#
Tieto dva endpointy nemajú limit počtu požiadaviek. Každá pozvánka prijme najviac 10 identít (jedna z každého typu) a každá organizácia môže mať najviac 10 API kľúčov.