API e MCP

API dei progetti

Un progetto è un intervistatore IA con le sue domande. Quasi tutti gli altri endpoint richiedono l’ID di un progetto, quindi di solito questa è la prima chiamata che fai. Per autenticazione, paginazione ed errori, vedi la Panoramica dell’API.

Elenca i progetti#

HTTP
GET /api/v1/projects

Restituisce tutti i progetti dell’organizzazione della chiave, dal più recente, pubblicati o no. Non accetta parametri e restituisce tutti i progetti in un’unica pagina.

Esempio#

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

Risposta#

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
}

Campi del progetto#

CampoTipoDescrizione
idstringID del progetto
namestring o nullIl nome del progetto come appare nella dashboard
product_namestring o nullNome del prodotto o servizio nelle impostazioni del progetto
publishedbooleanIndica se il progetto è online
languagestring o nullLingua dell’intervista, ad esempio english
respondent_accessstringpublic (chiunque abbia il link) o invite_only
urlstring o nullIl link pubblico alla conversazione. Usa il tuo dominio personalizzato verificato, se ne hai uno.
created_atstringQuando è stato creato il progetto
published_atstring o nullQuando è stato pubblicato l’ultima volta

Ottieni un progetto#

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

Restituisce un progetto con le sue domande attuali e il numero di conversazioni.

Esempio#

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

Risposta#

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

Ha tutti i campi dell’elenco, più:

CampoTipoDescrizione
questionsarrayLe domande pubblicate, in ordine
questions[].idstringID della domanda. I riepiloghi delle conversazioni lo indicano come question_id.
questions[].textstringLa domanda così com’è scritta
questions[].typestringopen_text, single_choice, multiple_choice, nps, star_rating o file_upload
questions[].requiredbooleanIndica se la domanda è obbligatoria
questions[].optionsarrayLe opzioni di una domanda a scelta, ognuna con id e label. Vuoto per gli altri tipi.
conversation_counts.totalnumberConversazioni che sono state almeno aperte
conversation_counts.completednumberConversazioni arrivate alla fine

Le domande possono cambiare nel tempo. Il riepilogo di una conversazione conserva la formulazione che è stata davvero posta al rispondente.