Projecten-API
Een project is één AI-interviewer met eigen vragen. De meeste andere endpoints hebben een project-ID nodig, dus dit is meestal je eerste aanroep. Zie het API-overzicht voor authenticatie, paginering en fouten.
Projecten ophalen#
HTTP
GET /api/v1/projectsGeeft elk project in de organisatie van de sleutel terug, van nieuw naar oud, gepubliceerd of niet. Het endpoint heeft geen parameters en geeft alle projecten op één pagina terug.
Voorbeeld#
curl "https://diaform.io/api/v1/projects" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Response#
JSON
{
"data": [
{
"id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"name": "Onboarding interviews",
"product_name": "Acme",
"published": true,
"language": "english",
"respondent_access": "public",
"url": "https://acme.diaform.io/c/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"created_at": "2026-04-02T09:14:31.402057+00:00",
"published_at": "2026-04-02T09:41:05.471073+00:00"
}
],
"has_more": false,
"next_cursor": null
}Velden van een project#
| Veld | Type | Beschrijving |
|---|---|---|
id | string | Project-ID |
name | string of null | De naam van het project zoals die in het dashboard staat |
product_name | string of null | Naam van product of dienst uit de instellingen van het project |
published | boolean | Of het project live staat |
language | string of null | Taal van het interview, zoals english |
respondent_access | string | public (iedereen met de link) of invite_only |
url | string of null | De openbare gesprekslink. Gebruikt je geverifieerde eigen domein als je dat hebt. |
created_at | string | Wanneer het project is aangemaakt |
published_at | string of null | Wanneer het voor het laatst is gepubliceerd |
Eén project ophalen#
HTTP
GET /api/v1/projects/{project_id}Geeft één project terug met de huidige vragen en aantallen gesprekken.
Voorbeeld#
curl "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Response#
JSON
{
"id": "b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"name": "Onboarding interviews",
"product_name": "Acme",
"published": true,
"language": "english",
"respondent_access": "public",
"url": "https://acme.diaform.io/c/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d",
"created_at": "2026-04-02T09:14:31.402057+00:00",
"published_at": "2026-04-02T09:41:05.471073+00:00",
"questions": [
{
"id": "V1StGXR8_Z5jdHi6B-myT",
"text": "How did your first week with the product go?",
"type": "open_text",
"required": false,
"options": []
},
{
"id": "tTJUuhijB3m3nvA5horJ6",
"text": "Which plan are you on?",
"type": "single_choice",
"required": true,
"options": [
{ "id": "fvbfMZcZXZLzZWCa-jXXJ", "label": "Starter" },
{ "id": "nb-XqVVvSICqEQjZ12Mox", "label": "Pro" }
]
}
],
"conversation_counts": {
"total": 212,
"completed": 148
}
}De response bevat elk veld van de lijst, plus:
| Veld | Type | Beschrijving |
|---|---|---|
questions | array | De gepubliceerde vragen, op volgorde |
questions[].id | string | ID van de vraag. Samenvattingen van gesprekken verwijzen ernaar als question_id. |
questions[].text | string | De vraag zoals die is geschreven |
questions[].type | string | open_text, single_choice, multiple_choice, nps, star_rating of file_upload |
questions[].required | boolean | Of de vraag verplicht is |
questions[].options | array | De keuzes van een keuzevraag, elk met id en label. Leeg bij andere types. |
conversation_counts.total | number | Gesprekken die minstens zijn geopend |
conversation_counts.completed | number | Gesprekken die het einde hebben bereikt |
Vragen kunnen in de loop van de tijd veranderen. De samenvatting van een gesprek bewaart de vraag zoals die echt aan de respondent is gesteld.