API Authentication and Setup
- First, you need to acquire authorization by implementing OAuth 2 for secure access to SurveyMonkey's API. This involves redirecting users to a consent page and obtaining an access token.
- Once you have the access token, include it in your HTTP headers for authentication. In PHP, you might use a library like cURL or Guzzle for making requests:
$accessToken = 'YOUR_ACCESS_TOKEN';
$ch = curl_init('https://api.surveymonkey.com/v3/surveys');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$surveys = json_decode($response, true);
Create a Survey
- To create a survey, you must send a POST request to the SurveyMonkey API's survey endpoint. Construct the survey JSON object with details like survey title, type, and sections.
- Here's an example using cURL in PHP:
$surveyData = json_encode(array(
'title' => 'Customer Feedback Survey',
'pages' => array(
array(
'title' => 'Page 1',
'description' => 'Tell us about your experience.',
'questions' => array(
array(
'headings' => array(
array('heading' => 'How satisfied are you with our service?')
),
'family' => 'matrix',
'subtype' => 'rating',
'answers' => array(
'rows' => array(
array('text' => 'Very Unsatisfied'),
array('text' => 'Unsatisfied'),
array('text' => 'Neutral'),
array('text' => 'Satisfied'),
array('text' => 'Very Satisfied')
),
'cols' => array(
array('text' => 'Satisfaction')
)
)
)
)
)
)
));
$ch = curl_init('https://api.surveymonkey.com/v3/surveys');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $surveyData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$newSurvey = json_decode($response, true);
Retrieve Surveys
- After creating a survey, you may want to retrieve and list all the surveys. Use a GET request to access the list of surveys.
- Parse the returned JSON to display or further manipulate the surveys:
$ch = curl_init('https://api.surveymonkey.com/v3/surveys');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer ' . $accessToken,
'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$surveys = json_decode($response, true);
if (!empty($surveys['data'])) {
foreach ($surveys['data'] as $survey) {
echo 'Survey Title: ' . $survey['title'] . "<br>";
echo 'Survey ID: ' . $survey['id'] . "<br>";
}
}
Handle API Rate Limits and Errors
- SurveyMonkey API has rate limits; ensure your application handles these properly. Interpret HTTP status codes and error messages for better error handling.
- Incorporate logic to pause or slow down requests when a "Rate Limit Exceeded" status is received:
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($responseCode == 429) {
// Handle rate limit exceeded
echo 'Rate limit exceeded. Please wait a bit before retrying.';
} else if ($responseCode >= 400) {
// Handle other API errors
$errorDetails = json_decode($response, true);
echo 'API Error: ' . $errorDetails['error']['message'];
}
Additional Customizations
- To customize survey invitations, follow a similar pattern to create collectors and send survey invitations through designated API endpoints.
- If you want to gather more detailed responses, set up webhooks to listen for completed survey events and store those responses in your database.