POST /surveys/dismiss
Record that a panelist dismissed a survey without responding. This updates the panelist’s activity timestamp and enables survey fatigue prevention.
Request
POST /public/surveys/dismiss/
Headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Compound token from Tenant API |
Request Body
No request body required.
Response
{
"message": "dismiss recorded"
}
Response Fields
| Field | Type | Description |
|---|---|---|
| message | string | Confirmation message |
Examples
JavaScript
const dismissSurvey = async (publicKey) => {
const response = await fetch('https://api.votito.com/public/surveys/dismiss/', {
method: 'POST',
headers: {
'Authorization': publicKey
}
});
if (!response.ok) {
throw new Error(`Failed to dismiss: ${response.status}`);
}
return response.json();
};
// Usage - when user clicks "Not now" or closes survey
closeButton.addEventListener('click', async () => {
await dismissSurvey(publicKey);
hideSurveyModal();
});
React Component
const SurveyModal = ({ publicKey, onClose }) => {
const handleDismiss = async () => {
try {
await fetch('https://api.votito.com/public/surveys/dismiss/', {
method: 'POST',
headers: { 'Authorization': publicKey }
});
} catch (error) {
console.error('Failed to record dismiss:', error);
}
onClose();
};
return (
<div className="survey-modal">
<button onClick={handleDismiss}>Not now</button>
{/* Survey content */}
</div>
);
};
Python
import requests
def dismiss_survey(public_key):
response = requests.post(
"https://api.votito.com/public/surveys/dismiss/",
headers={"Authorization": public_key}
)
response.raise_for_status()
return response.json()
# Usage
dismiss_survey(public_key)
Use Case: Survey Fatigue Prevention
When a panelist dismisses a survey, the dismissedMostRecentUnixTs timestamp is updated. Your application can check this via the Tenant API before showing surveys:
// Before showing survey, check if recently dismissed
const { panelist } = await getTenantPanelistAccess(surveyId, panelistId);
if (panelist.dismissedMostRecentUnixTs) {
const thirtyDaysAgo = Math.floor(Date.now() / 1000) - (30 * 24 * 60 * 60);
if (panelist.dismissedMostRecentUnixTs > thirtyDaysAgo) {
// Don't show - dismissed less than 30 days ago
return;
}
}
// Safe to show survey
showSurveyModal(panelist.hostedResponseUrl);
Error Responses
401 Unauthorized
Invalid or missing authorization token.
429 Too Many Requests
Server is busy. Retry after a short delay.
Notes
- Dismissing updates both
tsMostRecentandtsDismissedin the panelist activity record - Multiple dismiss events overwrite the previous timestamp (only most recent is stored)
- Dismiss can be recorded even for closed surveys (for analytics purposes)
- The
dismissedMostRecentUnixTsfield is returned in the Tenant API panelist response