API & MCP

Projekte-API

Ein Projekt ist ein KI-Interviewer mit eigenen Fragen. Die meisten anderen Endpunkte brauchen eine Projekt-ID, deshalb ist das meist dein erster Aufruf. Authentifizierung, Paginierung und Fehler sind im API-Überblick beschrieben.

Projekte auflisten#

HTTP
GET /api/v1/projects

Gibt jedes Projekt in der Organisation des Schlüssels zurück, die neuesten zuerst, ob veröffentlicht oder nicht. Der Endpunkt nimmt keine Parameter an und gibt alle Projekte auf einer Seite zurück.

Beispiel#

curl "https://diaform.io/api/v1/projects" \
  -H "Authorization: Bearer $DIAFORM_API_KEY"

Antwort#

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
}

Felder eines Projekts#

FeldTypBeschreibung
idstringProjekt-ID
namestring oder nullDer Name des Projekts, wie er im Dashboard steht
product_namestring oder nullName des Produkts oder Service aus den Einstellungen des Projekts
publishedbooleanOb das Projekt live ist
languagestring oder nullSprache des Interviews, etwa english
respondent_accessstringpublic (alle mit dem Link) oder invite_only
urlstring oder nullDer öffentliche Gesprächslink. Er nutzt deine verifizierte eigene Domain, falls du eine hast.
created_atstringWann das Projekt erstellt wurde
published_atstring oder nullWann es zuletzt veröffentlicht wurde

Projekt abrufen#

HTTP
GET /api/v1/projects/{project_id}

Gibt ein Projekt mit seinen aktuellen Fragen und Gesprächszahlen zurück.

Beispiel#

curl "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d" \
  -H "Authorization: Bearer $DIAFORM_API_KEY"

Antwort#

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
  }
}

Die Antwort enthält jedes Feld der Liste und zusätzlich:

FeldTypBeschreibung
questionsarrayDie veröffentlichten Fragen, in ihrer Reihenfolge
questions[].idstringID der Frage. Gesprächszusammenfassungen verweisen darauf als question_id.
questions[].textstringDie Frage, wie sie geschrieben wurde
questions[].typestringopen_text, single_choice, multiple_choice, nps, star_rating oder file_upload
questions[].requiredbooleanOb die Frage eine Pflichtfrage ist
questions[].optionsarrayDie Optionen einer Auswahlfrage, jeweils mit id und label. Bei anderen Typen leer.
conversation_counts.totalnumberGespräche, die mindestens geöffnet wurden
conversation_counts.completednumberGespräche, die bis zum Ende geführt wurden

Fragen können sich mit der Zeit ändern. Die Zusammenfassung eines Gesprächs behält den Wortlaut, in dem die Frage dem Teilnehmer tatsächlich gestellt wurde.