Pesquisas
Gerencie pesquisas, trabalhe com variáveis ocultas e configurações
Visão geral
A API de Pesquisas/Questionários permite criar pesquisas programaticamente, gerenciar perguntas, configurar ajustes, lidar com variáveis ocultas, controlar o ciclo de vida da pesquisa (duplicar, renomear, arquivar, excluir) e gerenciar os textos de rótulos padrão.
Baixe a versão em markdown da seção "Pesquisas" para usar no ChatGPT / outros LLMs:
Criar e editar
Esta seção abrange a criação de uma nova pesquisa e o salvamento de suas perguntas.
Criar pesquisa
Cria uma nova pesquisa na pasta especificada e retorna o objeto da pesquisa.
Corpo da requisição (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| folder_id | integer | Sim | ID da pasta em que criar a pesquisa |
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"folder_id": 5}' Resposta bem-sucedida (201)
{ "id": 124, "workspace_id": 1, "name": "Survey #12", "virtual_id": "abc12xyz", "url_preview": "https://example.com/quiz/124/preview", "url_shared": "https://example.com/q/abc12xyz", "is_published": false } Possíveis erros
| HTTP | Código | Descrição |
|---|---|---|
| 400 | workspace_not_found, folder_not_found | Espaço de trabalho ou pasta não encontrado |
| 401 | user_not_authenticated | Token de autorização inválido ou ausente |
| 403 | quiz_limit_today | Limite diário de criação de pesquisas atingido para esta conta |
| 422 | validation_error | Erro de validação do corpo da requisição |
Perguntas da pesquisa
Salve o conjunto completo de perguntas de uma pesquisa usando o endpoint /quiz/{id}/save.
Salva a estrutura completa de perguntas da pesquisa. Substitui o conjunto de perguntas existente.
Corpo da requisição (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| ids | array | Sim | Array ordenado de identificadores de perguntas (UUIDs, "welcome", "submit") |
| entities | object | Sim | Objeto que mapeia cada ID de pergunta para seu objeto de dados completo |
Valores de ids
O array ids contém identificadores de perguntas na ordem de exibição. Valores especiais:
| Valor | Descrição |
|---|---|
| welcome | Tela de boas-vindas (página de introdução) |
| submit | Tela de conclusão (página de agradecimento) |
| UUID | UUID — uma pergunta regular |
Campos comuns para todos os tipos de pergunta
| Campo | Tipo | Descrição |
|---|---|---|
| type | string | Obrigatório. Identificador do tipo de pergunta (veja a tabela de tipos) |
| title | string | Título / texto do rótulo da pergunta |
| withTitle | boolean | Exibir o campo de título |
| description | string | Texto de descrição / subtítulo da pergunta |
| withDescription | boolean | Exibir o campo de descrição |
| isRequired | boolean | Tornar a pergunta obrigatória |
| isBlocked | boolean | Bloquear a pergunta (ocultar dos respondentes) |
| multimedia | object \| null | Objeto multimídia (imagem, vídeo, áudio) ou null |
| filling_time_enabled | boolean | Habilitar limite de tempo por pergunta |
| filling_time_seconds | integer | Limite de tempo para a pergunta em segundos |
Tipos de pergunta
| type | Nome | Descrição |
|---|---|---|
| welcome | Tela de boas-vindas | Tela de introdução / boas-vindas |
| yesno | Sim / Não | Pergunta de Sim / Não |
| choice | Escolha | Seleção única ou múltipla de uma lista de opções |
| dropdown | Lista suspensa | Seleção de lista suspensa |
| ranking | Classificação | Classificação de opções por arrastar e soltar |
| slider | Controle deslizante | Controle deslizante com mín./máx./passo configuráveis |
| rating | Avaliação | Escala de avaliação com estrelas, corações ou emojis |
| scale | Escala | Escala numérica (ex.: 1–10) |
| input | Entrada de texto | Entrada de texto curto ou longo |
| Campo de entrada de endereço de e-mail | ||
| phone | Telefone | Campo de entrada de número de telefone |
| datetime | Data e hora | Seletor de data e/ou hora |
| matrix | Matriz | Grade de matriz (linhas × colunas) |
| message | Mensagem | Bloco de mensagem estática ou informação |
| file | Upload de arquivo | Upload de arquivo |
| html | Bloco HTML | Bloco de conteúdo HTML personalizado |
| submit | Tela de envio | Tela de conclusão / agradecimento |
Estrutura do objeto multimídia
| Campo | Descrição |
|---|---|
| type | img, video, audio |
| imgUrl | URL da imagem |
| videoUrl | URL do vídeo |
| imgLocation | Posição da imagem: top, left, right, background |
| videoSettings | Objeto de configurações do player de vídeo |
Campos adicionais por tipo de pergunta
Regras de validação
- Todos os valores em ids devem ser únicos
- Cada valor em ids deve ter uma entrada correspondente em entities
- Cada chave em entities deve estar presente em ids
- Cada objeto de entidade deve ter um campo type
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/save" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "ids": ["welcome", "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "submit"], "entities": { "welcome": { "type": "welcome", "title": "Welcome", "welcomeLabel": "Start" }, "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { "type": "rating", "title": "Rate the service", "ratingCount": 5, "ratingFigure": "star" }, "submit": { "type": "submit", "submitLabel": "Submit" } } }' Erros
| HTTP | Descrição |
|---|---|
| 400 | Pesquisa não encontrada |
| 401 | Autorização necessária |
| 403 | Acesso à pesquisa negado |
| 422 | Erro de validação: ids e entities são inconsistentes |
| 500 | Erro interno do servidor ao salvar a estrutura da pesquisa |
Obter lista de pesquisas
Retorna uma lista paginada de todas as pesquisas ativas (não arquivadas).
Parâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| sort | string | Não | Campo pelo qual ordenar (ex.: name, created_at) |
| order | string | Não | Direção de ordenação: asc ou desc |
| limit | integer | Não | Número máximo de pesquisas a retornar |
| offset | integer | Não | Número de pesquisas a ignorar (deslocamento de paginação) |
curl -X GET "https://api.surveyninja.io/api/v3/service/quiz?sort=name&order=asc&limit=10&offset=0" \ -H "Authorization: Bearer YOUR_TOKEN" [ { "id": "survey ID", "name": "name", "url_shared": "survey URL", "is_published": true, "folder": { "id": 384, "workspace_id": 384, "user_id": 12, "name": "My Surveys", "pos": 1, "is_default": true, "created_at": "2022-04-01T08:37:14.000000Z", "updated_at": "2022-04-27T15:46:27.000000Z", "deleted_at": null } } ] Obter dados da pesquisa
Retorna o objeto de dados completo de uma pesquisa específica, incluindo todas as perguntas e configurações.
curl -X GET https://api.surveyninja.io/api/v3/service/quiz/123 \ -H "Authorization: Bearer YOUR_TOKEN" { "id": "survey ID", "answer_count": "number of responses", "name": "name", "url_shared": "survey URL", "widgets": "question structure (ids, entities)", "hidden_options": "hidden variable", "folder": { "id": 384, "workspace_id": 384, "user_id": 12, "name": "My Surveys", "pos": 1, "is_default": true, "created_at": "2022-04-01T08:37:14.000000Z", "updated_at": "2022-04-27T15:46:27.000000Z", "deleted_at": null } } Configurações da pesquisa
Atualiza um ou mais grupos de configuração de uma pesquisa. Todos os parâmetros são opcionais — apenas os campos enviados serão atualizados.
Básico
| Parâmetro | Tipo | Descrição |
|---|---|---|
| name | string | Nome / título da pesquisa |
| lang | string | Código de idioma da interface da pesquisa (ex.: en, ru) |
| info_title | string | Título interno da pesquisa (exibido no painel) |
| description | string | Meta descrição SEO para a página da pesquisa |
Exibição
| Parâmetro | Tipo | Descrição |
|---|---|---|
| show_progressbar | boolean | Exibir barra de progresso |
| show_navigate | boolean | Exibir botões de navegação (Voltar / Próximo) |
| numeration | boolean | Exibir numeração das perguntas |
| auto_move_by_enter | boolean | Avançar automaticamente para a próxima pergunta ao pressionar Enter |
| show_by_one | boolean | Exibir uma pergunta por vez |
| allow_multiple_answer | boolean | Permitir múltiplos envios do mesmo respondente |
| show_copyright | boolean | Exibir o rodapé de direitos autorais do SurveyNinja |
Acesso e restrições
| Parâmetro | Tipo | Descrição |
|---|---|---|
| close_quiz_enabled | boolean | Fechar a pesquisa (parar de aceitar respostas) |
| limit_time_enabled | boolean | Habilitar prazo de resposta |
| limit_time_value | string | Prazo de resposta (string de data e hora) |
| limit_time_timezone | string | Fuso horário para o prazo de resposta (ex.: America/Sao_Paulo) |
| limit_answer_count_enabled | boolean | Limitar o número total de respostas |
| limit_answer_count_value | integer | Maximum number of responses |
| use_password | boolean | Proteger a pesquisa com senha |
| multiple_ip | boolean | Permitir múltiplas respostas do mesmo endereço IP |
| show_captcha | boolean | Exibir CAPTCHA antes do envio |
| ip_list_enabled | boolean | Habilitar filtragem por endereço IP |
| ip_whitelist | string | Lista de endereços IP permitidos separados por vírgula |
| ip_blacklist | string | Lista de endereços IP bloqueados separados por vírgula |
| available_devices[] | array | Dispositivos permitidos: desktop, mobile, tablet |
Comportamento
| Parâmetro | Tipo | Descrição |
|---|---|---|
| scoring_switcher | boolean | Habilitar modo de pontuação |
| question_required_mode | string | individual / all_required / all_optional |
| question_random_order | boolean | Aleatorizar a ordem das perguntas |
| disable_auto_redirect | boolean | Desabilitar redirecionamento automático após o envio |
| block_jump_to_prev_widget | boolean | Impedir que os respondentes voltem às perguntas anteriores |
| filling_time_enabled | boolean | Habilitar limite de tempo total da pesquisa |
| filling_time_seconds | integer | Limite de tempo da pesquisa em segundos |
Análises e código QR
| Parâmetro | Tipo | Descrição |
|---|---|---|
| scripts_in_head | string | Scripts personalizados inseridos no |
| scripts_in_body | string | Scripts personalizados inseridos antes de |
| scripts_in_head_enabled | boolean | Habilitar scripts no head |
| scripts_in_body_enabled | boolean | Habilitar scripts no body |
| sso_active | boolean | Habilitar Single Sign-On (SSO) |
| qr_code_size | integer | Tamanho do código QR em pixels |
| qr_code_color | string | Cor de primeiro plano do código QR (HEX) |
| qr_code_background_color | string | Cor de fundo do código QR (HEX) |
| qr_code_margin | integer | Margem do código QR em pixels |
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/settings/info" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "New survey name", "lang": "en", "show_progressbar": true, "limit_answer_count_enabled": true, "limit_answer_count_value": 500, "question_required_mode": "all_required" }' Gerenciamento de pesquisas
Os seguintes endpoints permitem gerenciar o ciclo de vida das pesquisas: adicionar notas, duplicar, renomear, converter em modelo, arquivar, mover e excluir.
Ciclo de vida da pesquisa
Salva a estrutura completa de perguntas da pesquisa (substitui as perguntas existentes).
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/save" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "ids": ["welcome", "question-1", "submit"], "entities": { "welcome": { "type": "welcome", "...": "..." }, "question-1": { "type": "choice", "title": "...", "...": "..." }, "submit": { "type": "submit", "...": "..." } } }' Aplica um tema de design à pesquisa.
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/applyTheme/925" \ -H "Authorization: Bearer YOUR_API_TOKEN" Publica o rascunho atual da pesquisa para que os respondentes possam acessá-la.
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/publish" \ -H "Authorization: Bearer YOUR_API_TOKEN" Salva a lógica de ramificação (condições de pulo/desvio) para a pesquisa.
curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/conditions" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "conditions": { "...": "logic structure, same as in the builder" } }' Adicionar nota
Adiciona ou atualiza uma nota (comentário interno) anexada à pesquisa.
Parâmetros da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| notes | string | Sim | Texto da nota (máximo 1000 caracteres) |
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/note \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "notes": "Note text (maximum 1000 characters)" }' { "status": true, "notes": "Note text" } Duplicar pesquisa
Cria uma cópia completa da pesquisa, incluindo todas as perguntas e configurações.
Parâmetros da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Não | Nome para a pesquisa duplicada (opcional; padrão é uma cópia do nome original) |
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/duplicate \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Copy name (optional)" }' { "status": true, "quiz": { "id": 123, "name": "Copy: Survey Name", "url_shared": "https://example.com/abc123", "is_published": false, "created_at": "2024-01-01T12:00:00Z", "updated_at": "2024-01-01T12:00:00Z", "folder": { "id": 1, "name": "My Folder" } } } Renomear pesquisa
Renomeia a pesquisa.
Parâmetros da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Sim | Novo nome da pesquisa |
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/rename \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "New survey name" }' { "status": true, "name": "New survey name" } Converter em modelo
Marca a pesquisa como um modelo reutilizável disponível na galeria de modelos.
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/template \ -H "Authorization: Bearer YOUR_TOKEN" { "status": true } Arquivar pesquisa
Arquiva ou desarquiva uma pesquisa. Pesquisas arquivadas não aceitam novas respostas.
Parâmetros da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| archive | boolean | Sim | true — arquivar a pesquisa, false — desarquivar |
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/archive \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "archive": true }' { "status": true, "archive_at": "2024-01-01T12:00:00Z", "is_archived": true } Mover pesquisa
Move a pesquisa para uma pasta diferente dentro do mesmo espaço de trabalho.
Parâmetros da requisição
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| folder_id | integer | Sim | ID da pasta de destino |
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/move \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "folder_id": 5 }' { "status": true, "folder_id": 5, "folder": { "id": 5, "name": "New Folder" } } Excluir pesquisa
Exclui permanentemente uma pesquisa junto com todas as suas respostas. Esta ação não pode ser desfeita.
curl -X DELETE https://api.surveyninja.io/api/v3/service/quiz/123 \ -H "Authorization: Bearer YOUR_TOKEN" { "status": true } Pesquisas arquivadas
Retorna a lista de pesquisas arquivadas.
curl -X GET https://api.surveyninja.io/api/v3/service/quiz/archived \ -H "Authorization: Bearer YOUR_TOKEN" [ { "id": 123, "name": "Archived survey", "url_shared": "https://example.com/abc123", "is_published": false, "created_at": "2024-01-01T12:00:00Z", "updated_at": "2024-01-01T12:00:00Z", "archive_at": "2024-01-02T12:00:00Z", "folder": { "id": 1, "name": "My Folder" } } ] Textos padrão
Os textos padrão são os botões e rótulos de interface mostrados aos respondentes (ex.: Próximo, Voltar, Enviar). Recupere os valores atuais e personalize-os por pesquisa.
Obter textos padrão GET /api/v3/service/quiz/{id}/default-texts
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| lang | string | ru | Código de idioma para o qual recuperar os rótulos (ex.: ru, en) |
Retorna um array de objetos de rótulo, cada um com code, standard_text e user_text (personalização ou null).
curl -X GET "https://api.surveyninja.io/api/v3/service/quiz/123/default-texts?lang=ru" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Accept: application/json" Exemplo de resposta
[ { "code": "btn_next", "standard_text": "Next", "user_text": null }, { "code": "btn_back", "standard_text": "Back", "user_text": "Go Back" }, { "code": "btn_submit", "standard_text": "Submit", "user_text": null } ] Atualizar textos padrão POST /api/v3/service/quiz/{id}/default-texts
Atualiza os textos de rótulos personalizados para a pesquisa. Envie text: null para redefinir ao texto padrão.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| texts[] | array | Array de objetos com os campos code e text |
| texts[].code | string | Código do rótulo da resposta GET |
| texts[].text | string|null | Novo texto; null redefine para o valor padrão |
400 blocked_by_tariff — o recurso não está disponível no plano atual. curl -X POST "https://api.surveyninja.io/api/v3/service/quiz/123/default-texts" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "texts": [ { "code": "btn_next", "text": "Forward" }, { "code": "btn_back", "text": null } ] }'