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/projectsGibt 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#
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Projekt-ID |
name | string oder null | Der Name des Projekts, wie er im Dashboard steht |
product_name | string oder null | Name des Produkts oder Service aus den Einstellungen des Projekts |
published | boolean | Ob das Projekt live ist |
language | string oder null | Sprache des Interviews, etwa english |
respondent_access | string | public (alle mit dem Link) oder invite_only |
url | string oder null | Der öffentliche Gesprächslink. Er nutzt deine verifizierte eigene Domain, falls du eine hast. |
created_at | string | Wann das Projekt erstellt wurde |
published_at | string oder null | Wann 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:
| Feld | Typ | Beschreibung |
|---|---|---|
questions | array | Die veröffentlichten Fragen, in ihrer Reihenfolge |
questions[].id | string | ID der Frage. Gesprächszusammenfassungen verweisen darauf als question_id. |
questions[].text | string | Die Frage, wie sie geschrieben wurde |
questions[].type | string | open_text, single_choice, multiple_choice, nps, star_rating oder file_upload |
questions[].required | boolean | Ob die Frage eine Pflichtfrage ist |
questions[].options | array | Die Optionen einer Auswahlfrage, jeweils mit id und label. Bei anderen Typen leer. |
conversation_counts.total | number | Gespräche, die mindestens geöffnet wurden |
conversation_counts.completed | number | Gesprä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.