API pro pozvánky respondentů
Pozvánky respondentů umožňují vašim vlastním systémům pozvat do rozhovoru konkrétní lidi. Vytvořte pro zákazníka osobní odkaz s připojeným e-mailem nebo ID účtu, pošlete ho, jak chcete, a jeho odpovědi jsou s tímto zákazníkem propojené od začátku.
Potřebujete tarif Pro, Business nebo Enterprise a API klíč. Klíče a ověření popisuje Přehled API.
Výsledky načtete přes API pro rozhovory: každý rozhovor obsahuje svůj invite a identity, které jste připojili.
Tyto endpointy jsou starší než zbytek API a ponechávají si původní názvy: projekt označují jako agent (agentId) a používají parametry v camelCase.
Vytvoření odkazu s pozvánkou#
POST /api/v1/respondent-invitesKaždý požadavek vytvoří jeden odkaz pro jednoho respondenta v jednom projektu. Diaform zároveň hned vytvoří rozhovor a připojí k němu identity, které pošlete, takže výsledky jsou s danou osobou propojené od začátku.
Tělo požadavku#
| Pole | Typ | Povinné | Pravidla |
|---|---|---|---|
agentId | string | Ano | ID projektu (UUID) v organizaci klíče |
identities | array | Ano | 1 až 10 položek, jedna od každého typu. |
identities[].type | string | Ano | Nejvýš 64 znaků: malá písmena, číslice, _ a -, na začátku písmeno nebo číslice. Velká písmena se převedou na malá. |
identities[].value | string | Ano | 1 až 512 znaků po oříznutí mezer. Hodnota email musí být platná e-mailová adresa a ukládá se malými písmeny. |
organizationId | string | Ne | Pokud ho pošlete, musí odpovídat organizaci klíče |
send_email | boolean | Ne | Hodnota true pošle odkaz e-mailem na identitu email dané pozvánky a po 3 dnech jednu připomínku, pokud respondent rozhovor nedokončil. Výchozí hodnota je false. |
Když pošlete send_email, odpověď obsahuje objekt email: { "status": "sent" }, { "status": "failed" } nebo { "status": "skipped", "reason": "..." }. Pozvánka se vytvoří v každém případě. Důvody jsou no_email, unsubscribed, not_published, no_usage, monthly_limit (měsíční limit e-mailů s pozvánkou ve vašem tarifu je vyčerpaný), answered, already_sent, in_progress, plan a not_found. Co e-mail obsahuje, popisuje Identifikace respondentů.
Běžné typy jsou email, name, identifier, user_id a account_id. Funguje jakýkoli typ, který splňuje pravidla.
Pří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" }
]
}'Odpověď#
{
"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 posílají jako respondent.invite_id. |
invite.status | pending, opened nebo completed |
invite.conversation_id | Rozhovor vytvořený pro tohoto respondenta |
invite.identities | Identity, které jste poslali, každá se source: "owner" |
invite.url | Odkaz, který pošlete. Pokud máte ověřenou vlastní doménu, použije ji. Po dokončení pozvánky null. |
Jak se odkaz chová#
- Vytvořeno. Pozvánka je ve stavu
pendinga její rozhovor ve stavuinvited. - Otevřeno. Když respondent odkaz otevře, obojí přejde do stavu
opened. Jakmile respondent odpoví, rozhovor přejde do stavustarted. - Návrat. Pokud respondent odejde a vrátí se přes stejný odkaz, pokračuje ve stejném rozhovoru.
- Ukončeno. Když rozhovor skončí, ať už dokončený, nebo zrušený, pozvánka přejde do stavu
completeda odkaz přestane fungovat.
Aby se odkaz otevřel, musí být projekt publikovaný. Odkazy fungují u projektů v režimu Veřejný odkaz i Odkazy jen na pozvánku. U veřejných projektů funguje dál i běžný odkaz. Viz Identifikace respondentů.
Starší endpoint pro rozhovory#
GET /api/v1/respondent-conversationsTento endpoint vypisuje rozhovory projektu a funguje dál, takže stávající integrace nemusíte měnit. Pro nové integrace použijte Výpis rozhovorů, který přidává filtry, přepisy a jednodušší stránkování.
| Parametr | Povinný | Popis |
|---|---|---|
agentId | Ano | ID projektu |
limit | Ne | 1 až 100. Výchozí 50. |
status | Ne | invited, opened, started, completed nebo cancelled |
cursor | Ne | nextCursor.created_at z předchozí stránky |
cursorId | Ne | nextCursor.id z předchozí stránky |
Vrací conversations (každý s conversation_id, created_at, status, respondent_email, metadata, identities, summary a invite) a nextCursor, objekt s created_at a id, nebo null na poslední stránce. Tyto dvě hodnoty pošlete zpět jako cursor a cursorId.
Parametr cursor kódujte pro URL. Jeho časové razítko obsahuje +, které se musí poslat jako %2B. Nezakódované + se přečte jako mezera a požadavek selže s 400. curl --data-urlencode i URLSearchParams ho zakódují za vás.
Chyby#
Chyby vracejí JSON se zprávou error a kódem code, stejně jako ve zbytku API. Odpověď 400 obsahuje také details.fieldErrors s názvem pole, které neprošlo.
{
"error": "Invalid request",
"code": "invalid_request",
"details": {
"formErrors": [],
"fieldErrors": {
"identities": ["Add at least one respondent identity."]
}
}
}| Stav | code | Příčina |
|---|---|---|
400 | invalid_request | Pole nebo parametr dotazu chybí nebo je neplatný |
401 | unauthorized | Hlavička Authorization chybí, nemá tvar Bearer dia_org_live_... nebo byl klíč zneplatněn |
403 | forbidden | Vaše organizace nemá tarif Pro, Business ani Enterprise, nebo organizationId neodpovídá klíči |
404 | not_found | agentId není projekt v organizaci klíče |
500 | internal_error | Na straně Diaform došlo k chybě. Zkuste to znovu. |
Limity#
Tyto dva endpointy nemají limit počtu požadavků. Každá pozvánka pojme až 10 identit (jedna od každého typu) a každá organizace může mít až 10 API klíčů.