API e MCP

API de projetos

Um projeto é um entrevistador de IA com perguntas próprias. A maioria dos outros endpoints precisa de um ID de projeto, então esta costuma ser a primeira chamada que você faz. Para autenticação, paginação e erros, veja a visão geral da API.

Listar projetos#

HTTP
GET /api/v1/projects

Retorna todos os projetos da organização da chave, dos mais recentes para os mais antigos, publicados ou não. Não recebe parâmetros e retorna todos os projetos em uma única página.

Exemplo#

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

Resposta#

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
}

Campos do projeto#

CampoTipoDescrição
idstringID do projeto
namestring ou nullO nome do projeto como aparece no painel
product_namestring ou nullNome do produto ou serviço das configurações do projeto
publishedbooleanSe o projeto está publicado
languagestring ou nullIdioma da entrevista, como english
respondent_accessstringpublic (qualquer pessoa com o link) ou invite_only
urlstring ou nullO link público da conversa. Usa seu domínio próprio verificado, se você tiver um.
created_atstringQuando o projeto foi criado
published_atstring ou nullQuando ele foi publicado pela última vez

Buscar um projeto#

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

Retorna um projeto com as perguntas atuais e as contagens de conversas.

Exemplo#

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

Resposta#

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

Tem todos os campos da lista e mais:

CampoTipoDescrição
questionsarrayAs perguntas publicadas, em ordem
questions[].idstringID da pergunta. Os resumos das conversas se referem a ele como question_id.
questions[].textstringA pergunta como foi escrita
questions[].typestringopen_text, single_choice, multiple_choice, nps, star_rating ou file_upload
questions[].requiredbooleanSe a pergunta é obrigatória
questions[].optionsarrayAs opções de uma pergunta de escolha única ou múltipla, cada uma com id e label. Vazio nos outros tipos.
conversation_counts.totalnumberConversas que foram pelo menos abertas
conversation_counts.completednumberConversas que chegaram ao fim

As perguntas podem mudar com o tempo. O resumo de uma conversa mantém o texto da pergunta como ela foi feita ao respondente.