Respostas

Recupere e processe respostas de pesquisas

Respostas e relatórios

A API permite recuperar resumos de pesquisas, relatórios detalhados, filtrar e gerenciar respostas. Você pode ocultar respostas, adicionar tags e obter análises da pesquisa.

Baixe a versão em markdown da seção "Respostas e relatórios" para usar no ChatGPT ou outros LLMs:

Obter lista de respostas da pesquisa

GET /quiz/{id}/answers

Retorna uma lista de respostas para uma pesquisa específica com filtro por data e paginação.

Parâmetros da requisição

Parâmetro Tipo Obrigatório Descrição
limit integer Não Número de respostas (padrão: 20)
offset integer Não Deslocamento de paginação (padrão: 0)
date date Não Filtro de data (formato: Y-m-d)
is_complete boolean Não Filtro de status de conclusão (true/false)
sort string Não Campo de ordenação (date_start, date_end)
order string Não Direção de ordenação (desc, asc)
Exemplo de requisição
curl -X GET "https://api.surveyninja.io/api/v3/service/quiz/123/answers?limit=50&offset=0&is_complete=true&sort=date_end&order=desc" \ -H "Authorization: Bearer YOUR_TOKEN"
Resposta da API
{ "success": true, "data": { "total": 150, "limit": 50, "offset": 0, "answers": [ { "id": "answer_1234567890", "quiz_id": "1234567890", "submitted_at": "2024-01-15T14:30:00Z", "is_complete": true, "ip_address": "192.168.1.1", "user_agent": "Mozilla/5.0...", "answers": [ { "question_id": "q1", "question_text": "How do you rate our service?", "answer": "Excellent", "answer_type": "single_choice" } ] } ] } }

Obter resumo da pesquisa

GET /quiz/{id}/summary

Retorna o resumo da pesquisa com estatísticas principais.

Exemplo de requisição
curl -X GET https://api.surveyninja.io/api/v3/service/quiz/123/summary \ -H "Authorization: Bearer YOUR_TOKEN"
Resposta da API
{ "status": true, "summary": { "all_visited": 150, "filled_completely": 128, "started_not_finished": 22, "completion_rate": 85, "geography_visits": [ { "count": 45, "country": "Russia" } ], "visits_devices": [ { "device": "desktop", "percent": 65.2 } ], "all_average_transit_time": "04:18" } }

Obter relatório da pesquisa

POST /quiz/{id}/report

Retorna o relatório de respostas de uma pesquisa específica com filtros.

Parâmetros da requisição

Parâmetro Tipo Obrigatório Descrição
is_complete boolean Não Filtro de status de conclusão (true/false)
dateFrom string Não Data de início do filtro (formato: dd.mm.yyyy)
dateTo string Não Data de término do filtro (formato: dd.mm.yyyy)
filled string Não Status de preenchimento: "completed", "incomplete"
widgets array Não Array de filtros de perguntas com parâmetros: widget_uuid, type, operator, value
scoreOperator string Não Operador de filtro de pontuação: "greater", "less", "equal"
scoreValue integer Não Valor de pontuação para filtragem
answerCorrect string Não Filtro de correção da resposta: "correct", "incorrect"
extraFields array Não Array de campos extras com parâmetros: name, value
ip string Não Endereço IP para filtragem
country array Não Array de países para filtragem
browser array Não Array de navegadores para filtragem
device array Não Array de dispositivos para filtragem: "desktop", "mobile", "tablet"
tags array Não Array de tags para filtragem
Exemplo de requisição
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/report \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "is_complete": true, "dateFrom": "01.01.2024", "dateTo": "31.01.2024", "filled": "completed", "widgets": [ { "widget_uuid": "550e8400-e29b-41d4-a716-446655440000", "type": "choiceSingle", "operator": "equal", "value": ["option-uuid-1", "option-uuid-2"] } ], "scoreOperator": "greater", "scoreValue": 80, "answerCorrect": "correct", "extraFields": [ { "name": "field_name", "value": "field_value" } ], "ip": "192.168.1.1", "country": ["Russia", "Ukraine"], "browser": ["Chrome", "Firefox"], "device": ["desktop", "mobile"], "tags": ["important", "needs attention"] }'
Resposta da API
{ "status": true, "data": { "report": [ { "widget_id": "550e8400-e29b-41d4-a716-446655440000", "title": "How do you rate our service?", "type": "rating", "count": 150, "average": 4.2, "avg_filling_time": 12.5, "answer_count": 150, "rowId": "row-123", "options": "{\"min\":1,\"max\":5,\"step\":1}", "filtered_data": "{\"1\":5,\"2\":10,\"3\":25,\"4\":60,\"5\":50}" } ], "answer_total_count": 150, "correct_answers": false, "answer_moderate_count": 5, "filters": [], "filters_count": 0, "answer_hide_count": 3, "answer_hide_amount": 150.00 } }

Obter filtros do relatório

GET /quiz/{id}/filters/report

Retorna os filtros de relatório disponíveis.

Exemplo de requisição
curl -X GET https://api.surveyninja.io/api/v3/service/quiz/123/filters/report \ -H "Authorization: Bearer YOUR_TOKEN"
Resposta da API
{ "status": true, "data": { "dateFrom": "01.01.2024", "dateTo": "31.01.2024", "filled": "completed", "widgets": [ { "widget_uuid": "550e8400-e29b-41d4-a716-446655440000", "type": "choiceSingle", "operator": "equal", "value": ["option-uuid-1", "option-uuid-2"] } ] } }

Ocultar/exibir resposta

POST /quiz/{id}/answer/{answer_id}/hide

Oculta ou exibe uma resposta específica.

Parâmetros da requisição

Parâmetro Tipo Obrigatório Descrição
is_hide boolean Sim true — ocultar resposta, false — exibir resposta
Exemplo de requisição
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/answer/answer_123/hide \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "is_hide": true }'
Resposta da API
{ "status": true, "is_hide": true }

Adicionar tags a uma resposta

POST /quiz/{id}/answer/{answer_id}/tags

Adiciona tags a uma resposta específica para organização e filtragem.

Parâmetros da requisição

Parâmetro Tipo Obrigatório Descrição
tags array Sim Array de tags a adicionar à resposta
Exemplo de requisição
curl -X POST https://api.surveyninja.io/api/v3/service/quiz/123/answer/answer_123/tags \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tags": ["important", "needs attention", "problem"] }'
Resposta da API
{ "status": true, "result": { "created": [ { "id": 1, "name": "important" } ], "attached": [ { "id": 1, "name": "important" }, { "id": 2, "name": "needs attention" }, { "id": 3, "name": "problem" } ], "detached": [], "deleted": [] } }