Skip to main content
POST
/
api
/
v1
/
public
/
quests
/
{estabelecimento_ref}
/
{quest_id}
/
responses
Responder Pesquisa Pública
curl --request POST \
  --url https://api.example.com/api/v1/public/quests/{estabelecimento_ref}/{quest_id}/responses \
  --header 'Content-Type: application/json' \
  --data '{
  "response": {}
}'
{
  "response_id": "4eb9f70f-96b8-4dd8-94d3-b6a6d9d0b966",
  "quest_id": "c5be8dd5-aee4-4e36-a79b-fb5e9d8f8f22",
  "empresa_id": "6f76f489-280a-4411-a3fc-cf7fc9f7ed36",
  "submitted_at": "2026-03-10T21:15:00.000Z",
  "cta_google_enabled": true,
  "cta_google_url": "https://g.page/r/CXabc123/review",
  "low_score_alert_sent": false
}

Responder Pesquisa Pública

Submete uma resposta pública sem autenticação. O endpoint aplica rate limit por IP e deduplicação quando o cliente envia uma chave idempotente explícita.

Fluxo recomendado (2 etapas)

  1. Envie a resposta da pesquisa neste endpoint.
  2. Use o response_id retornado para salvar contato opcional no endpoint PATCH /api/v1/public/quests/{estabelecimento_ref}/{response_id}/contact.
Esse desenho mantém o envio da pesquisa rápido e permite coletar contato apenas quando o cliente aceitar informar.

Autenticação

Não requer token. Endpoint público para consumo em fluxo sem login.

Request Body

response
object
required
Mapa com respostas por ID de campo. Exemplo: { "nota_atendimento": 5, "comentario": "Excelente" }

Headers Opcionais

X-Idempotency-Key
string
Chave para evitar submissões duplicadas do mesmo formulário.

Request

curl -X POST "https://api.indiqai.com/api/v1/public/quests/minha-loja/c5be8dd5-aee4-4e36-a79b-fb5e9d8f8f22/responses" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: resposta-qr-123" \
  -d '{
    "response": {
      "nota_atendimento": 5,
      "comentario": "Excelente experiência"
    }
  }'

Response

{
  "response_id": "4eb9f70f-96b8-4dd8-94d3-b6a6d9d0b966",
  "quest_id": "c5be8dd5-aee4-4e36-a79b-fb5e9d8f8f22",
  "empresa_id": "6f76f489-280a-4411-a3fc-cf7fc9f7ed36",
  "submitted_at": "2026-03-10T21:15:00.000Z",
  "cta_google_enabled": true,
  "cta_google_url": "https://g.page/r/CXabc123/review",
  "low_score_alert_sent": false
}

Próxima etapa opcional: salvar contato

Com o response_id retornado, você pode registrar nome e telefone de forma opcional:
curl -X PATCH "https://api.indiqai.com/api/v1/public/quests/minha-loja/4eb9f70f-96b8-4dd8-94d3-b6a6d9d0b966/contact" \
  -H "Content-Type: application/json" \
  -d '{
    "client_name": "Maria Silva",
    "client_phone": "(11) 99999-8888"
  }'
Veja o contrato completo em Atualizar Contato da Resposta Pública. Quando o CTA não é elegível (nota diferente da máxima) ou a empresa não configurou url_google_avaliation, o retorno conclui normalmente sem CTA:
{
  "response_id": "4eb9f70f-96b8-4dd8-94d3-b6a6d9d0b966",
  "quest_id": "c5be8dd5-aee4-4e36-a79b-fb5e9d8f8f22",
  "empresa_id": "6f76f489-280a-4411-a3fc-cf7fc9f7ed36",
  "submitted_at": "2026-03-10T21:18:00.000Z",
  "cta_google_enabled": false,
  "cta_google_url": null,
  "low_score_alert_sent": false
}

Regras de CTA Google

  • CSAT (rating): CTA somente para nota 5.
  • NPS: CTA para nota 9 ou 10.
  • Pesquisa standard_csat_nps: usa a regra acima sempre que a empresa tiver url_google_avaliation configurada.
  • Pesquisa custom: além da nota elegível, exige cta_google_on_promoter = true na própria pesquisa.
  • Se a empresa não tiver url_google_avaliation configurada, o fluxo finaliza sem CTA e sem erro.

Erros

400 Bad Request
{
  "detail": "Quest informada não corresponde à pesquisa pública ativa do estabelecimento"
}
409 Conflict
{
  "detail": "Resposta duplicada para esta pesquisa"
}
400 Bad Request
{
  "detail": "Resposta inválida: Campo 'Como foi seu atendimento?' é obrigatório"
}
429 Too Many Requests
{
  "detail": {
    "error": "RATE_LIMIT_EXCEEDED"
  }
}