Responde pelo link público
POST/api/public/surveys/{publicToken}/responses
- Auth
- Public
- API key:
- No API key accepted
Login opcional. Quem tem perfil na comunidade da pesquisa responde **como membro** (deduplicado pelo perfil, 409 na segunda vez, em qualquer navegador) e não manda `visitorToken` nem `altcha`. Os demais são **visitante**: `visitorToken` (aleatório, um por pesquisa, guardado no navegador; o servidor guarda só o hash, sem horário e sem ligação com a resposta; o mesmo token de novo é 409 — deduplicação por esforço, não garantida) e `altcha` (o payload do widget ALTCHA, resolvido sobre o desafio de `GET /api/public/surveys/{publicToken}/challenge`; ausente, inválido, de outra pesquisa, vencido ou já usado é 422 com `param = altcha`). Limite de 300 envios por IP e pesquisa em 10 minutos e teto de 5.000 respostas de visitante por pesquisa: acima, 429. Link desligado, rascunho ou token inválido: 404; encerrada ou ainda não começou (`notYetOpen`): 422. Esta rota não aparece em log de acesso, Sentry, log da comunidade nem analytics, e o IP não vai ao banco.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
publicTokenrequired | path | string |
Request body application/json
| Name | Type | Description |
|---|---|---|
answersrequired | object[] | |
answers[].questionIdrequired | string (uuid) | |
answers[].optionValuesoptional | string[] | |
answers[].numberoptional | integer | |
answers[].textoptional | string | max 5000 |
visitorTokenoptional | string | Só visitante. · min 16, max 200 |
altchaoptional | string | Só visitante: o payload do widget ALTCHA (base64 de `{ challenge, solution }`). · max 8192 |
Responses
| Status | Description |
|---|---|
201 | Resposta gravada. `data.respondAs`: `member` ou `visitor`. |
400 | Requisição inválida — falha de validação. |
404 | Recurso não encontrado. |
409 | Conflito com o estado atual do recurso. |
422 | Respostas inválidas, `visitorToken` ausente, `altcha` ausente, inválido, vencido ou já usado, pesquisa encerrada ou ainda não começou. |
429 | Limite por IP e pesquisa, ou teto de respostas de visitante. |
500 | Erro interno do servidor. |
503 | Verificação indisponível (API sem chave ALTCHA). |
curl example
curl -X POST "https://api.memberfy.net/api/public/surveys/<publicToken>/responses" \
-H "Content-Type: application/json" \
-d '{"answers":[{}]}'