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