API & MCP

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/projects

Geeft 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#

VeldTypeBeschrijving
idstringProject-ID
namestring of nullDe naam van het project zoals die in het dashboard staat
product_namestring of nullNaam van product of dienst uit de instellingen van het project
publishedbooleanOf het project live staat
languagestring of nullTaal van het interview, zoals english
respondent_accessstringpublic (iedereen met de link) of invite_only
urlstring of nullDe openbare gesprekslink. Gebruikt je geverifieerde eigen domein als je dat hebt.
created_atstringWanneer het project is aangemaakt
published_atstring of nullWanneer 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:

VeldTypeBeschrijving
questionsarrayDe gepubliceerde vragen, op volgorde
questions[].idstringID van de vraag. Samenvattingen van gesprekken verwijzen ernaar als question_id.
questions[].textstringDe vraag zoals die is geschreven
questions[].typestringopen_text, single_choice, multiple_choice, nps, star_rating of file_upload
questions[].requiredbooleanOf de vraag verplicht is
questions[].optionsarrayDe keuzes van een keuzevraag, elk met id en label. Leeg bij andere types.
conversation_counts.totalnumberGesprekken die minstens zijn geopend
conversation_counts.completednumberGesprekken 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.