Formulários
Crie, configure e arquive formulários por API; gerencie perguntas com lógica condicional; envie respostas e transite estados na máquina de fluxo.
Nesta página
Listar formulários
Retorna todos os formulários da organização do chamador (arquivados excluídos por padrão). Suporta filtragem por escopo, proprietário, busca por nome, ordenação por nome/data/total de respostas, intervalos de data e inclusão opcional de perguntas. As capacidades — edição, visibilidade de respostas, mudanças de estado — são governadas pelas permissões do formulário; o proprietário e os administradores sempre têm acesso completo.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| search | string | Opcional | Busca sem distinção de maiúsculas no nome do formulário. Corresponde a formulários do sistema e criados pelo usuário. Máx. 200 caracteres. |
| filter | string | Opcional | Filtro de escopo. Um de: all, public, approval, workflow, archived. Padrão: todos os formulários da organização. Valor obsoleto: me — use owner_user_ids com seu próprio UUID. |
| owner_user_ids | string (CSV) | Opcional | Filtra por UUIDs de proprietários de formulários. Separados por vírgulas (máx. 50), semântica OR. AND com todos os outros parâmetros (search, filter, paginação, ordenação). UUIDs de outras organizações nunca correspondem. Substitui o obsoleto filter=me. |
| order | string | Opcional | Campo de ordenação. Um de: alphabetical, recent, total. Padrão: recent. |
| is_ascend | boolean | Opcional | Direção de ordenação. true para ascendente, false para descendente. Padrão: false. |
| include | string | Opcional | Lista separada por vírgulas de campos extras a incluir. Atualmente suporta: questions (retorna as perguntas de cada formulário com UUID, label, type, options). |
| include_archived | boolean | Opcional | Quando true, inclui formulários arquivados nos resultados. Não necessário com filter=archived. Padrão: false. |
| start_date | string (YYYY-MM-DD) | Opcional | Filtra formulários criados em ou após esta data. Inclusivo, fuso horário do chamador. |
| end_date | string (YYYY-MM-DD) | Opcional | Filtra formulários criados em ou antes desta data. Inclusivo, fuso horário do chamador. |
| offset | integer | Opcional | Offset de paginação. Padrão: 0. |
| limit | integer | Opcional | Tamanho da página. Padrão: 25, máximo: 50. |
Resposta
{
"count": "integer",
"next": "string | null",
"previous": "string | null",
"results": "array<{ uuid, name, is_active, collect_responses_anonymously, privacy, shortcut, start_on, end_on, is_archived, workflow_enabled, approval_flow_enabled, created_at, questions? }>"
}Erros
| Status | Quando |
|---|---|
| 400 | Erro de validação (invalid_filter, invalid_order, search_query_too_long, invalid_date_range, invalid_owner_user_id, too_many_owner_user_ids) |
| 401 | Credencial ausente, inválida ou expirada |
| 403 | Autenticado mas sem permissão |
| 429 | Limitado — cabeçalho Retry-After presente |
curl -sS 'https://api.dailybot.com/v1/forms/?filter=workflow&order=alphabetical&is_ascend=true' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Quando include=questions está configurado, cada objeto de formulário inclui um array questions com UUID, label, type, flag required e options de cada pregunta.
- Obsoleto: filter=me — use owner_user_ids com seu próprio UUID de usuário. Clientes legados continuam funcionando: me ainda resolve para o escopo do proprietário do chamador e intersecta com qualquer owner_user_ids explícito. O escopo me em endpoints de respostas de formulário não está relacionado e NÃO está obsoleto. Tanto filter=me quanto available_on_list_view continuam sendo aceitos indefinidamente; a remoção será anunciada como uma entrada de changelog separada com sua própria janela de migração.
- Obsoleto: available_on_list_view — ainda aceito em POST /v1/forms/create/ e PATCH /v1/forms/{uuid}/config/ mas ignorado no servidor. A visibilidade na lista agora é organizacional. Para ocultar um formulário, arquive-o.
Criar um formulário com perguntas inline
Cria um formulário com pelo menos uma pergunta e configuração opcional. Requer função admin ou manager.
Corpo da requisição
{
"name": "string (required, min 3)",
"questions": "array (required, min 1)",
"report_channels": "string[] (max 3)",
"generate_short_question": "boolean (optional, top-level)"
}Resposta
{
"uuid": "string (uuid)",
"name": "string",
"questions": "array",
"report_channels": "array",
"public_url": "string|null"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 400 | questions_required, unknown_field, etc. |
curl -sS -X POST 'https://api.dailybot.com/v1/forms/create/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json' -d '{"name":"Incident Report","questions":[{"type":"text","label":"What happened?","short_question":"Description"}]}'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Aliases: question_type por type, question por label. short_question obrigatório salvo generate_short_question: true.
Listar proprietários de formulários
Seletor paginado e pesquisável de membros da organização que possuem pelo menos um formulário não arquivado. Apenas membros ativos e aprovados aparecem. Ordenado por full_name ascendente. Projetado para seletores de UI: uma organização de 1000 membros retorna apenas seus (tipicamente poucos) proprietários de formulários, não todo o diretório.
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| search | string | Opcional | Busca sem distinção de maiúsculas no nome e email do membro. O email é comparado no servidor para todos os chamadores mas o valor só é retornado para chamadores com visibilidade de email (admins, managers, team admins). |
| offset | integer | Opcional | Offset de paginação. Padrão: 0. |
| limit | integer | Opcional | Tamanho da página. Padrão: 20, máximo: 50. |
Resposta
{
"count": "integer",
"next": "string | null",
"previous": "string | null",
"results": "array<{ uuid, full_name, image, role, email (conditional — present only for admin/manager/team-admin-scoped callers) }>"
}Erros
| Status | Quando |
|---|---|
| 400 | Erro de validação (search_query_too_long) |
| 401 | Credencial ausente, inválida ou expirada |
| 403 | Autenticado mas sem permissão |
| 429 | Limitado — cabeçalho Retry-After presente |
curl -sS 'https://api.dailybot.com/v1/forms/form-owners/?search=serg&limit=20' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Os emails dos membros estão ocultos nos payloads do seletor. O campo email aparece APENAS quando o chamador tem visibilidade de email — admins da organização, managers e admins de equipe. Chamadores com escopo de membro recebem linhas sem a chave email (omitida, nunca null). API keys herdam o papel do proprietário da chave. search ainda corresponde ao email no servidor para todos, mas o valor nunca é retornado para chamadores sem visibilidade.
- O campo role contém o slug do papel organizacional: ADMIN_ORG, MANAGER, ADMIN, MEMBER ou GUEST.
Obter um formulário
Obtém um formulário por UUID. A porta de leitura é a membresía organizacional — qualquer membro autenticado da organização pode ler qualquer formulário. Os campos privacy e available_on_list_view não afetam quem pode ler o formulário; as capacidades como editar, ver respostas e mudar estados de workflow são governadas pelas permissões por escopo do formulário (o proprietário e os admins sempre têm acesso completo).
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Resposta
{
"uuid": "string (uuid)",
"name": "string",
"is_active": "boolean",
"collect_responses_anonymously": "boolean",
"privacy": "string",
"questions": "array",
"workflow": "object",
"created_at": "string (ISO 8601)"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente, inválida ou expirada |
| 403 | Autenticado mas sem permissão |
| 429 | Limitado — cabeçalho Retry-After presente |
| 404 | Formulário não encontrado ou o chamador não é membro da organização |
curl -sS -X GET 'https://api.dailybot.com/v1/forms/{uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- A porta de leitura do detalhe é a membresía organizacional. O campo privacy reflete o escopo de envio do formulário (OWNER, TEAM, EVERYONE), não quem pode ler a definição do formulário. O campo available_on_list_view está obsoleto e não tem efeito — todos os formulários da organização agora aparecem no endpoint de lista.
Atualizar configuração do formulário
Atualização parcial. Campos desconhecidos retornam 400 unknown_field.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"name": "string?",
"workflow": "object?",
"who_can_edit": "object?",
"report_channels": "string[]?"
}Resposta
{
"id": "uuid",
"name": "string",
"questions": "array",
"workflow": "object"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 400 | unknown_field, etc. |
| 404 | form_not_found |
curl -sS -X PATCH 'https://api.dailybot.com/v1/forms/{uuid}/config/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json' -d '{"allow_public_responses":true}'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- report_channels substitui o conjunto completo (máx. 3).
Arquivar (desativar) um formulário
Marca o formulário como inativo e arquivado. Idempotente.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 404 | form_not_found |
curl -sS -X DELETE 'https://api.dailybot.com/v1/forms/{uuid}/archive/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Add a question to a form
Add a question to a form
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"type": "string",
"label": "string",
"short_question": "string (required unless generate_short_question)"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 400 | Erros de validação |
curl -sS -X POST 'https://api.dailybot.com/v1/forms/{uuid}/questions/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Update a form question
Update a form question
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
| q_uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"type": "string",
"label": "string",
"short_question": "string (required unless generate_short_question)"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 400 | Erros de validação |
curl -sS -X PATCH 'https://api.dailybot.com/v1/forms/{uuid}/questions/{q_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Delete a form question
Delete a form question
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
| q_uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"type": "string",
"label": "string",
"short_question": "string (required unless generate_short_question)"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 400 | Erros de validação |
curl -sS -X DELETE 'https://api.dailybot.com/v1/forms/{uuid}/questions/{q_uuid}/delete/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Reorder all form questions
Reorder all form questions
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"question_uuids": "uuid[] (required, complete set)"
}Erros
| Status | Quando |
|---|---|
| 401 | Credencial ausente ou inválida |
| 403 | Permissões insuficientes (admin/manager necessário para escrita) |
| 429 | Limite de taxa — cabeçalho Retry-After definido |
| 400 | Erros de validação |
curl -sS -X PUT 'https://api.dailybot.com/v1/forms/{uuid}/questions/reorder/' -H 'X-API-KEY: $DAILYBOT_API_KEY' -H 'Content-Type: application/json'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- question_uuids deve incluir todos os UUIDs.
Listar respostas de um formulário
Lista paginada de respostas do formulário. Por padrão retorna apenas as respostas do chamador. Com all=true ou qualquer filtro avançado (submission_sources, submitter_user_ids, flow_status), retorna todas as respostas e requer permissão VIEW_REPORTS. Suporta busca de texto completo, filtragem por origem de envio, estado de workflow, estado de aprovação, intervalos de data e ordenação.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Parâmetros de consulta
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| all | boolean | Opcional | Retorna todas as respostas. Requer permissão VIEW_REPORTS no formulário. Padrão: false (apenas respostas próprias). |
| user | string (uuid) | Opcional | Filtra por UUID de autor específico. Requer permissão VIEW_REPORTS. UUIDs inválidos retornam 400 invalid_user_identifier. |
| search | string | Opcional | Busca de texto completo em conteúdo da resposta, nome do autor e email do autor. Identidades anônimas não são pesquisáveis (privacidade). Máx. 256 caracteres. |
| submission_sources | string (CSV) | Opcional | Filtra por origem de envio. Separados por vírgulas, semântica OR. Valores: member, anonymous, automation, public. Requer permissão VIEW_REPORTS. |
| submitter_user_ids | string (CSV) | Opcional | Filtra por UUIDs de autores. Separados por vírgulas (máx. 50), semântica OR. Requer permissão VIEW_REPORTS. |
| flow_status | string | Opcional | Estado do fluxo de aprovação. Um de: pending, approved, denied. Ignorado silenciosamente se o formulário não tem fluxo de aprovação. Requer permissão VIEW_REPORTS. |
| state | string | Opcional | Chave de estado de workflow (ex. draft, in_review, done). Retorna 400 invalid_workflow_state se o formulário não tem workflow. |
| order | string | Opcional | Direção de ordenação. Um de: recent (mais recente primeiro), oldest. Padrão: recent. |
| is_ascend | boolean | Opcional | Quando true, equivalente a order=oldest. Padrão: false. |
| start_date | string (YYYY-MM-DD) | Opcional | Filtra por início de intervalo de data de criação. Inclusivo, fuso horário do chamador. |
| end_date | string (YYYY-MM-DD) | Opcional | Filtra por fim de intervalo de data de criação. Inclusivo, fuso horário do chamador. |
| offset | integer | Opcional | Offset de paginação. Padrão: 0. |
| limit | integer | Opcional | Tamanho da página. Padrão: 25, máximo: 50. |
Resposta
{
"count": "integer",
"next": "string | null",
"previous": "string | null",
"results": "array<{ uuid, user, is_dailybot_bot, is_guest_user, is_anonymous, guest_user, submission_source, flow_status, current_state, content, response_completed, has_issue, created_at, updated_at }>"
}Erros
| Status | Quando |
|---|---|
| 400 | Erro de validação (invalid_submission_sources, invalid_submitter_user_id, too_many_submitter_user_ids, invalid_flow_status, invalid_workflow_state, invalid_user_identifier, search_query_too_long, invalid_date_range) |
| 401 | Credencial ausente, inválida ou expirada |
| 403 | O chamador não tem permissão VIEW_REPORTS para filtros avançados (form_response_view_all_forbidden) |
| 429 | Limitado — cabeçalho Retry-After presente |
curl -sS 'https://api.dailybot.com/v1/forms/{uuid}/responses/?all=true&submission_sources=automation,public&order=recent' \
-H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Todos os filtros se compõem com AND entre grupos e OR dentro de cada grupo. Exemplo: submission_sources=member,automation AND flow_status=pending retorna respostas de membros OU automação que estão pendentes de aprovação.
- Usar qualquer filtro avançado (submission_sources, submitter_user_ids, flow_status) implica automaticamente all=true e requer permissão VIEW_REPORTS.
Criar uma resposta de formulário
Envia uma nova resposta a um formulário. O campo content mapeia cada UUID de pergunta ao seu valor de resposta. Opcionalmente use modo automação (sem atribuição de autor), modo anônimo (nome aleatório), identidade de convidado (metadados de pessoa externa) ou um rótulo de origem de envio para rastreabilidade.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"content": "object (required) — answers keyed by question UUID. Values can be strings, booleans, numbers, or arrays of scalars for multiple-choice.",
"automation": "boolean (optional, default: false) — submit as automation; channel notifications show no submitter. Response marked with is_dailybot_bot=true.",
"anonymous": "boolean (optional, default: false) — submit anonymously; channel notifications show a random generated name.",
"guest_user": "object (optional) — guest identity for the submission: { full_name: string (max 255), email: string (max 254) }. Only accepted when automation=true; silently ignored otherwise. Required when form has email_and_name_mandatory enabled.",
"submission_source": "string (optional, max 512) — free-text provenance label stored in response metadata (e.g. \"github-actions:deploy-pipeline\", \"zapier:feedback-sync\")"
}Resposta
{
"uuid": "string (uuid)",
"form": "string (uuid)",
"content": "object — question UUID → answer value",
"response_completed": "boolean",
"has_issue": "boolean",
"blockers_status": "string | null",
"is_anonymous": "boolean",
"is_dailybot_bot": "boolean — true when submitted as automation",
"is_guest_user": "boolean — true when guest identity was recorded",
"guest_user": "object | null — { full_name, email } when guest identity exists",
"submission_source": "string | null — provenance label from metadata",
"created_at": "string (ISO 8601)"
}Erros
| Status | Quando |
|---|---|
| 400 | Erro de validação (content ausente, UUIDs de pergunta inválidos, perguntas obrigatórias não respondidas, guest_user_required quando o form exige nome+email, formato de email inválido, submission_source excede 512 caracteres) |
| 401 | Credencial ausente, inválida ou expirada |
| 403 | Autenticado mas sem permissão |
| 404 | Formulário não encontrado ou não visível |
| 413 | O corpo da solicitação excede o limite de 64 KB |
| 429 | Limitado — cabeçalho Retry-After presente |
curl -s -X POST \
-H 'X-API-KEY: $DAILYBOT_API_KEY' \
-H 'Content-Type: application/json' \
'https://api.dailybot.com/v1/forms/{uuid}/responses/' \
-d '{
"content": {"<question-uuid>": "Approved"},
"automation": true,
"guest_user": {"full_name": "Ops Bot", "email": "ops@company.com"},
"submission_source": "workflow:on-call-handoff"
}'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
- Quando automation é true, a resposta aparece sem atribuição de usuário nas notificações de canal — ideal para pipelines CI/CD, bridges de formulários web ou encaminhamento de webhooks. O campo is_dailybot_bot na resposta confirma o modo automação.
- Quando anonymous é true, um nome gerado aleatoriamente (ex., "Purple Elephant") substitui o autor real nas notificações de canal. Se tanto automation quanto anonymous forem true, automation tem precedência.
- Use guest_user para anexar identidade externa (nome + email) a envios de automação. Obrigatório quando o form tem email_and_name_mandatory habilitado. Use submission_source para marcar qual integração ou workflow produziu a resposta.
Obter uma resposta de formulário
Obtém uma resposta de formulário identificada por uuid. Retorna current_state, allowed_transitions e content.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
| response_uuid | string (uuid) | Obrigatório | — |
Resposta
{
"uuid": "string (uuid)",
"form": "string (uuid)",
"content": "array",
"current_state": "string",
"allowed_transitions": "array<string>",
"response_completed": "boolean",
"has_issue": "boolean",
"blockers_status": "string | null",
"is_anonymous": "boolean",
"is_dailybot_bot": "boolean",
"is_guest_user": "boolean",
"guest_user": "object | null — { full_name, email }",
"submission_source": "string | null",
"flow_status": "string | null — approval status: approved, denied, or null (pending/no flow)",
"created_at": "string (ISO 8601)",
"updated_at": "string (ISO 8601)"
}Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 404 | Not found or not visible |
curl -sS -X GET 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Atualizar uma resposta de formulário
Atualiza uma resposta de formulário identificada por uuid. A resposta retorna o recurso atualizado, incluindo current_state e allowed_transitions.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
| response_uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"content": "array (optional)",
"response_completed": "boolean (optional)"
}Resposta
{
"uuid": "string (uuid)",
"form": "string (uuid)",
"content": "array",
"current_state": "string",
"allowed_transitions": "array<string>",
"response_completed": "boolean",
"updated_at": "string (ISO 8601)"
}Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 400 | Validation error |
| 404 | Not found or not visible |
curl -sS -X PATCH 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Delete a form response
Delete a form response
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
| response_uuid | string (uuid) | Obrigatório | — |
Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 404 | Not found or not visible |
curl -sS -X DELETE 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Transition a form response state
Runs the state machine transition. Body: to_state, optional note.
Parâmetros de rota
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| uuid | string (uuid) | Obrigatório | — |
| response_uuid | string (uuid) | Obrigatório | — |
Corpo da requisição
{
"to_state": "string (required)",
"note": "string (optional)"
}Resposta
{
"uuid": "string (uuid)",
"form": "string (uuid)",
"current_state": "string",
"allowed_transitions": "array<string>",
"content": "array",
"updated_at": "string (ISO 8601)"
}Erros
| Status | Quando |
|---|---|
| 401 | Missing/invalid/expired credential |
| 403 | Authenticated but not permitted |
| 429 | Throttled - Retry-After header set |
| 400 | Validation error |
| 404 | Not found or not visible |
| 409 | State-machine conflict |
curl -sS -X POST 'https://api.dailybot.com/v1/forms/{uuid}/responses/{response_uuid}/transition/' -H 'X-API-KEY: $DAILYBOT_API_KEY'Testar
Este é um ajudante apenas de cópia — a requisição não é enviada do seu navegador. Cole o comando no seu terminal para executá-lo.
Formulários
Acesso programático aos formulários do Dailybot — listar, filtrar, ordenar, buscar, enviar respostas com modos de automação ou anônimo, anexar identidades de convidado, transitar estados de workflow e gerenciar fluxos de aprovação.
Veja a referência completa de endpoints — com parâmetros, schemas de request/response, códigos de erro e exemplos — na página interativa: /pt/developers/api/forms.
Cada endpoint deste grupo aceita tanto API key (X-API-KEY) quanto token Bearer do CLI (Authorization: Bearer …), salvo exceção explícita, conforme a matriz de métodos de autenticação em /pt/developers/authentication#parity-matrix.
Identificador
Os recursos Form e Form Response usam um campo uuid dedicado (RFC 4122 v4) como identificador canônico em toda solicitação e resposta. Parâmetros de rota como /v1/forms/{uuid}/responses/{response_uuid}/ também usam o valor uuid.
Paginação
Todos os endpoints de lista retornam o envelope de paginação padrão:
{
"count": 42,
"next": "https://api.dailybot.com/v1/forms/?offset=25&limit=25",
"previous": null,
"results": [...]
}
| Parâmetro | Tipo | Padrão | Máx. | Descrição |
|---|---|---|---|---|
offset |
integer | 0 | — | Offset de paginação |
limit |
integer | 25 | 50 | Tamanho da página |
Veja /pt/developers/conventions#pagination para a especificação completa.
Listar formulários
GET /v1/forms/ retorna todos os formulários da organização do chamador (arquivados excluídos por padrão). As capacidades — edição, visibilidade de respostas, mudanças de estado — são governadas pelas permissões do formulário; o proprietário e os administradores sempre têm acesso completo.
Suporta filtragem por escopo, proprietário, busca por nome, ordenação e intervalos de data.
Filtros de escopo (?filter=):
| Valor | Descrição |
|---|---|
all |
Todos os formulários da organização (padrão) |
public |
Apenas formulários com privacidade = EVERYONE |
approval |
Apenas formulários com fluxo de aprovação habilitado |
workflow |
Apenas formulários com estados de workflow habilitados |
archived |
Apenas formulários arquivados |
me |
Obsoleto — use owner_user_ids com seu próprio UUID. Ainda funciona por retrocompatibilidade. |
Filtro por proprietário (?owner_user_ids=): UUIDs de usuários separados por vírgulas (máx. 50). Retorna apenas formulários desses proprietários. AND com todos os outros parâmetros (search, filter, paginação, ordenação). UUIDs de outras organizações nunca correspondem (retorna 0 resultados, não um erro). Substitui o obsoleto filter=me.
Ordenação (?order=):
| Valor | Descrição |
|---|---|
recent |
Por data de criação, mais recente primeiro (padrão) |
alphabetical |
Por nome do formulário |
total |
Por total de respostas |
Use ?is_ascend=true para inverter a direção de ordenação.
# Formulários com workflow, ordenados alfabeticamente ascendente
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/?filter=workflow&order=alphabetical&is_ascend=true"
# Buscar por nome
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/?search=Solicitação%20de%20Acesso"
# Formulários ordenados por mais respostas
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/?order=total"
Incluir perguntas — passe ?include=questions para incluir as perguntas de cada formulário:
{
"uuid": "...",
"name": "Retro de Sprint",
"questions": [
{
"uuid": "q-uuid-1",
"label": "O que você realizou?",
"type": "text",
"required": true,
"options": null
}
]
}
Descobrir proprietários de formulários
GET /v1/forms/form-owners/ retorna uma lista paginada e pesquisável de membros da organização que possuem pelo menos um formulário não arquivado. Apenas membros ativos e aprovados aparecem. Ordenado por full_name ascendente.
Projetado para seletores de UI: uma organização de 1000 membros retorna apenas seus (tipicamente poucos) proprietários de formulários, não todo o diretório.
| Parâmetro | Tipo | Padrão | Máx. | Descrição |
|---|---|---|---|---|
search |
string | — | — | Busca sem distinção de maiúsculas em nome e email |
offset |
integer | 0 | — | Offset de paginação |
limit |
integer | 20 | 50 | Tamanho da página |
Cada resultado contém uuid, full_name, image e role (slug do papel: ADMIN_ORG, MANAGER, ADMIN, MEMBER, GUEST).
Visibilidade do email: o campo email aparece apenas quando o chamador tem visibilidade de email — admins da organização, managers e admins de equipe. Chamadores com escopo de membro recebem linhas sem a chave email (omitida, nunca null). API keys herdam o papel do proprietário da chave. O parâmetro search ainda corresponde ao email no servidor para todos, mas o valor nunca é retornado para chamadores sem visibilidade. Integradores não devem assumir que email está presente nas linhas do seletor.
# Buscar proprietários de formulários por nome
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/form-owners/?search=serg&limit=20"
# Filtrar lista de formulários por proprietário
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/?owner_user_ids=<uuid-1>,<uuid-2>"
Campos obsoletos:
available_on_list_view— ainda aceito emPOST /v1/forms/create/ePATCH /v1/forms/{uuid}/config/mas é um no-op no servidor. A visibilidade na lista agora é organizacional. Para ocultar um formulário, arquive-o.filter=me— ainda funciona por retrocompatibilidade mas está obsoleto. Useowner_user_idscom seu próprio UUID. Quando ambos são enviados, eles se intersectam. O escopomeem endpoints de respostas de formulário não está relacionado e não está obsoleto.
Ambos os campos obsoletos continuam sendo aceitos indefinidamente; a remoção (e a eventual eliminação da coluna) será anunciada como uma entrada de changelog separada com sua própria janela de migração. Os integradores devem migrar agora mas nada quebra no dia do deploy.
Nota de migração para integradores: substitua filter=me por owner_user_ids=<seu-uuid>. Clientes que dependiam de available_on_list_view para ocultar formulários agora devem filtrar do lado do cliente ou arquivar o formulário.
Listar respostas de formulário
GET /v1/forms/{uuid}/responses/ retorna as respostas do chamador por padrão. Passe ?all=true ou qualquer filtro avançado para ver todas as respostas (requer permissão VIEW_REPORTS no formulário).
Modelo de permissões:
| Cenário | Permissão necessária |
|---|---|
| Apenas respostas próprias (padrão) | Qualquer usuário autenticado com acesso ao formulário |
all=true ou submission_sources, submitter_user_ids, flow_status |
VIEW_REPORTS no formulário |
Filtro de origem de envio (?submission_sources=):
Cada resposta pertence a exatamente uma destas quatro categorias mutuamente exclusivas:
| Valor | Descrição |
|---|---|
member |
Envio normal de membro identificado da organização |
anonymous |
Membro da organização em formulário anônimo (identidade oculta) |
automation |
Enviado via API/CLI com flag de automação |
public |
Enviado via URL pública do formulário por um convidado externo |
Valores separados por vírgulas usam semântica OR: ?submission_sources=automation,public retorna respostas de automação OU públicas.
Filtro de fluxo de aprovação (?flow_status=): Um de pending, approved, denied. Ignorado silenciosamente se o formulário não tem fluxo de aprovação.
Filtro de estado de workflow (?state=): Filtra por chave de estado de workflow (ex. draft, in_review, done). Retorna 400 invalid_workflow_state se o formulário não tem workflow.
Ordenação (?order=): Um de recent (padrão, mais recente primeiro) ou oldest.
Composição de filtros — todos os filtros se compõem com AND entre grupos e OR dentro de cada grupo:
Resultados = (submission_sources OR)
AND (submitter_user_ids OR)
AND flow_status
AND state
AND search
AND intervalo_de_datas
Comportamento de busca — o parâmetro search busca no conteúdo da resposta, nome/email do membro e nome/email do convidado. Identidades de membros anônimos nunca são pesquisáveis (proteção de privacidade).
FORM_UUID="96bd8829-1d2a-40fe-8acf-7edb08f742dd"
# Todas as respostas
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true"
# Apenas envios de automação
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true&submission_sources=automation"
# Aprovação pendente + origem membro + busca
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true&submission_sources=member&flow_status=pending&search=bug"
# Mais antigo primeiro com intervalo de datas
curl -H "X-API-KEY: $DAILYBOT_API_KEY" \
"https://api.dailybot.com/v1/forms/$FORM_UUID/responses/?all=true&order=oldest&start_date=2026-07-01&end_date=2026-07-10"
Enviar uma resposta de formulário
POST /v1/forms/{uuid}/responses/ cria uma nova resposta. O campo content mapeia cada UUID de pergunta ao seu valor de resposta (strings, booleanos, números ou arrays de escalares para múltipla escolha).
Modos de envio:
| Modo | Flags | Notificação de canal | Caso de uso |
|---|---|---|---|
| Normal | (nenhum) | Nome + avatar do autor | Pessoa preenchendo um formulário |
| Anônimo | anonymous: true |
Nome gerado aleatoriamente | Feedback honesto sem atribuição |
| Automação | automation: true |
Sem autor visível | Pipeline CI/CD, integração, workflow |
| Automação + Convidado | automation: true + guest_user |
Sem autor no canal; identidade de convidado no dashboard | Envios externos encaminhados via API |
Identidade de convidado — use guest_user para anexar a identidade de uma pessoa externa (nome e email) a envios de automação. Aceito apenas quando automation: true; ignorado caso contrário. Obrigatório quando o formulário tem email_and_name_mandatory habilitado. guest_user.full_name máx. 255 caracteres; guest_user.email email válido, máx. 254 caracteres.
Origem do envio — use submission_source (máx. 512 caracteres) para marcar qual automação ou integração produziu a resposta. Armazenado nos metadados da resposta e retornado nas visualizações de lista e detalhe. Valores sugeridos: "github-actions:deploy-pipeline", "zapier:feedback-sync", "cli:ci-release-bot", "make:onboarding-flow".
Regras de validação:
contenté obrigatório e deve conter respostas correspondentes às perguntas do formulárioguest_userrequerautomation: true— ignorado caso contrário- Se o formulário tem
email_and_name_mandatory=trueeautomation=true, tantoguest_user.full_namequantoguest_user.emaildevem ser fornecidos - Limite de tamanho do payload: 64 KB máximo
- Valores de resposta não podem ser objetos aninhados — listas devem conter apenas escalares
# Modo automação com identidade de convidado e origem
curl -s -X POST \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
"https://api.dailybot.com/v1/forms/{uuid}/responses/" \
-d '{
"content": {"<question-uuid>": "Aprovado"},
"automation": true,
"guest_user": {"full_name": "Ops Bot", "email": "ops@company.com"},
"submission_source": "workflow:on-call-handoff"
}'
# Envio anônimo
curl -s -X POST \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
"https://api.dailybot.com/v1/forms/{uuid}/responses/" \
-d '{
"content": {"<question-uuid>": "Feedback honesto sobre o processo"},
"anonymous": true
}'
URLs do aplicativo web para integradores
| URL | Propósito |
|---|---|
https://app.dailybot.com/forms/{form_uuid}/responses/create/ |
Link público para preenchimento (compartilhar com respondentes) |
https://app.dailybot.com/forms/{form_uuid}/responses/{response_uuid} |
Link direto para uma resposta no dashboard |