API projektów
Projekt to jeden agent AI prowadzący wywiady, z własnymi pytaniami. Większość pozostałych endpointów wymaga ID projektu, więc zwykle to pierwsze wywołanie, które wykonujesz. O uwierzytelnianiu, paginacji i błędach przeczytasz na stronie Przegląd API.
Lista projektów#
HTTP
GET /api/v1/projectsZwraca wszystkie projekty w organizacji klucza, od najnowszych, opublikowane i nieopublikowane. Nie przyjmuje parametrów i zwraca wszystkie projekty na jednej stronie.
Przykład#
curl "https://diaform.io/api/v1/projects" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Odpowiedź#
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
}Pola projektu#
| Pole | Typ | Opis |
|---|---|---|
id | string | ID projektu |
name | string lub null | Nazwa projektu widoczna w panelu |
product_name | string lub null | Nazwa produktu lub usługi z ustawień projektu |
published | boolean | Czy projekt jest aktywny |
language | string lub null | Język wywiadu, np. english |
respondent_access | string | public (każdy, kto ma link) lub invite_only |
url | string lub null | Publiczny link do rozmowy. Korzysta z Twojej zweryfikowanej własnej domeny, jeśli ją masz. |
created_at | string | Kiedy utworzono projekt |
published_at | string lub null | Kiedy został ostatnio opublikowany |
Pobieranie projektu#
HTTP
GET /api/v1/projects/{project_id}Zwraca jeden projekt z aktualnymi pytaniami i liczbą rozmów.
Przykład#
curl "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Odpowiedź#
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
}
}Zawiera wszystkie pola z listy, a dodatkowo:
| Pole | Typ | Opis |
|---|---|---|
questions | array | Opublikowane pytania, po kolei |
questions[].id | string | ID pytania. Podsumowania rozmów odwołują się do niego jako question_id. |
questions[].text | string | Treść pytania w zapisanym brzmieniu |
questions[].type | string | open_text, single_choice, multiple_choice, nps, star_rating lub file_upload |
questions[].required | boolean | Czy pytanie jest wymagane |
questions[].options | array | Opcje w pytaniu wyboru, każda z id i label. Puste dla pozostałych typów. |
conversation_counts.total | number | Rozmowy, które zostały co najmniej otwarte |
conversation_counts.completed | number | Rozmowy, które dotarły do końca |
Pytania mogą się zmieniać z czasem. Podsumowanie rozmowy zachowuje brzmienie pytań, które faktycznie zadano respondentowi.