API de proyectos
Un proyecto es un entrevistador de IA con sus propias preguntas. La mayoría de los demás endpoints necesitan un ID de proyecto, así que esta suele ser la primera llamada que haces. Para la autenticación, la paginación y los errores, consulta la descripción general de la API.
Listar proyectos#
HTTP
GET /api/v1/projectsDevuelve todos los proyectos de la organización de la clave, del más reciente al más antiguo, estén publicados o no. No acepta parámetros y devuelve todos los proyectos en una sola página.
Ejemplo#
curl "https://diaform.io/api/v1/projects" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Respuesta#
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 del proyecto#
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del proyecto |
name | string o null | El nombre del proyecto tal como aparece en el panel |
product_name | string o null | Nombre del producto o servicio de la configuración del proyecto |
published | boolean | Si el proyecto está publicado |
language | string o null | Idioma de la entrevista, como english |
respondent_access | string | public (cualquier persona con el enlace) o invite_only |
url | string o null | El enlace público de la conversación. Usa tu dominio personalizado verificado si tienes uno. |
created_at | string | Cuándo se creó el proyecto |
published_at | string o null | Cuándo se publicó por última vez |
Obtener un proyecto#
HTTP
GET /api/v1/projects/{project_id}Devuelve un proyecto con sus preguntas actuales y su número de conversaciones.
Ejemplo#
curl "https://diaform.io/api/v1/projects/b8acb3ab-1f3d-4a7e-a846-b7f493f86b6d" \
-H "Authorization: Bearer $DIAFORM_API_KEY"Respuesta#
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
}
}Tiene todos los campos de la lista y, además:
| Campo | Tipo | Descripción |
|---|---|---|
questions | array | Las preguntas publicadas, en orden |
questions[].id | string | ID de la pregunta. Los resúmenes de las conversaciones se refieren a él como question_id. |
questions[].text | string | La pregunta tal como está escrita |
questions[].type | string | open_text, single_choice, multiple_choice, nps, star_rating o file_upload |
questions[].required | boolean | Si la pregunta es obligatoria |
questions[].options | array | Las opciones de una pregunta de opción única o múltiple, cada una con id y label. Vacío en los demás tipos. |
conversation_counts.total | number | Conversaciones que, como mínimo, se abrieron |
conversation_counts.completed | number | Conversaciones que llegaron al final |
Las preguntas pueden cambiar con el tiempo. El resumen de una conversación conserva el texto de la pregunta tal como se le hizo al participante.