API Example Code

This is simple PHP example code to interact with the Polldaddy API. A Polldaddy account is required, as well as an API key. More information on the API can be found in the documentation.

<?php

/* 
 * Example PHP code that uses the Polldaddy API to:
 * 1. Enter a username, password and API key to get a userCode.
 * 2. List polls
 * 3. View information about a single poll.
 * 4. Create a test poll in your account.
 *
 * Requirements: PHP 4 or 5, libcurl.
 *
 * Copyright: Automattic Inc.
 */

$action = isset( $_POST[ 'action' ] ) ? $_POST[ 'action' ] : '';
switch( $action ) {
case "getpoll":
	/*
	 * Get information about a poll.
	 */
	pd_api_menu( $_POST[ 'partnerGUID' ], $_POST[ 'usercode' ] );
	$curl_data = json_encode( 
		array( 
				"pdRequest" => array(
					"partnerGUID" => $_POST[ 'partnerGUID' ], 
					"userCode" => $_POST[ 'usercode' ], 
					"demands" => array( 
						"demand" => array(
							"poll" => array( 
								"id" => (int)$_POST[ 'id' ] 
							), 
							"id" => "GetPoll" 
						) 
					) 
				) 
			) 
		);
	echo "<h1>Get Poll</h1>";
	echo "<strong>Sent to api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( json_decode( $curl_data ), 1 ) );
	echo "</pre>";
	echo "<strong>Received from api.polldaddy.com:</strong>";
	$data = send_json_query( $curl_data );
	echo "<pre>: ";
	echo htmlspecialchars( print_r( $data, 1 ) );
	echo "</pre>";
	echo "<h2>First Five Poll Votes</h2>";
	$curl_data = json_encode(
		array(
			"pdRequest" => array(
				"partnerGUID" => $_POST[ 'partnerGUID' ],
				"userCode" => $_POST[ 'usercode' ],
				"demands" => array(
					"demand" => array(
						"poll" => array(
						),
						"id" => "GetPollVotes",
						"list" => array(
							"start" => 0,
							"end" => 5,
							"id" => (int)$_POST[ 'id' ]
						),
					)
				)
			)
		)
	);
	$data = send_json_query( $curl_data );
	echo "<pre>: ";
	echo htmlspecialchars( print_r( $data, 1 ) );
	echo "</pre>";
	break;
case "list":
	/*
	 * List all the polls in the account.
	 */
	pd_api_menu( $_POST[ 'partnerGUID' ], $_POST[ 'usercode' ] );
	$curl_data = json_encode( 
		array( 
				"pdRequest" => array(
					"partnerGUID" => $_POST[ 'partnerGUID' ], 
					"userCode" => $_POST[ 'usercode' ], 
					"demands" => array( 
						"demand" => array(
							"id" => "GetPolls" 
						) 
					) 
				) 
			) 
		);

	echo "<h1>List Polls</h1>";
	echo "<strong>Sent to api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( json_decode( $curl_data ), 1 ) );
	echo "</pre>";
	$data = send_json_query( $curl_data );
	echo "<strong>Received from api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( $data, 1 ) );
	echo "</pre>";
	if ( is_object( $data ) && isset( $data->pdResponse->demands->demand ) ) {
		echo "<strong>Your Polls</strong><ol>";
		foreach( $data->pdResponse->demands->demand[ 0 ]->polls->poll  as $poll ) {
			echo "<li><a href='https://polldaddy.com/polls/" . (int)$poll->id . "/edit/'>" . htmlspecialchars( $poll->content ) . "</a> ";
			?>
			<form method='post' action=''>
			<input name='action' type='hidden' value='getpoll' />
			<input name='partnerGUID' type='hidden' value='<?php echo htmlspecialchars( $_POST[ 'partnerGUID' ] ); ?>' />
			<input name='usercode' type='hidden' value='<?php echo htmlspecialchars( $_POST[ 'usercode' ] ); ?>' />
			<input name='id' type='hidden' value='<?php echo (int)$poll->id ?>' />
			<input type='submit' value='Get Poll <?php echo (int)$poll->id ?>' />
			</form>
			</li>
			<?php
		}
		echo "</ol>";
	}
	break;
case "usercode":
	/*
	 * Get a userCode for the account.
	 */
	$curl_data = json_encode( 
		array( 
				'pdInitiate' => array( 
					'partnerGUID' => $_POST[ 'partnerGUID' ],
					"partnerUserID" => "0",
					"email" => $_POST[ 'email' ],
					"password" => $_POST[ 'password' ]
				) 
			)
		);
	echo "<h1>pdInitiate</h1>";
	echo "<strong>Sent to api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( json_decode( $curl_data ), 1 ) );
	echo "</pre>";
	$data = send_json_query( $curl_data );
	echo "<strong>Received from api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( $data, 1 ) );
	echo "</pre>";
	if ( false == isset( $data->pdResponse->userCode ) ) {
		pd_api_login_form( $_POST[ 'email' ], $_POST[ 'password' ], $_POST[ 'partnerGUID' ] );
		die( "Error connecting to your Polldaddy account: <pre>" . htmlspecialchars( print_r( $data, 1 ) ) . "</pre>" );
	}

	$usercode = $data->pdResponse->userCode;
	echo "Your new usercode is: " . htmlspecialchars( $usercode ) . ".<br />";
	pd_api_menu( $_POST[ 'partnerGUID' ], $usercode );
	break;
case "create":
	/*
	 * Create an example poll.
	 */
	pd_api_menu( $_POST[ 'partnerGUID' ], $_POST[ 'usercode' ] );
	$curl_data = json_encode( 
		array( 
				"pdRequest" => array(
					"partnerGUID" => $_POST[ 'partnerGUID' ], 
					"userCode" => $_POST[ 'usercode' ], 
					"demands" => array( 
						"demand" => array(
							"poll" => array(
								"question" => "Do you like polls? " . date( 'Y-m-d H:i:s' ),
								"multipleChoice" => "no",
								"randomiseAnswers" => "yes",
								"otherAnswer" => array(
									"content" => "yes"
								),
								"resultsType" => "percent",
								"blockRepeatVotersType" => "cookie",
								"blockExpiration" => "7257600",
								"comments" => array( 
									"content" => "moderate"
								), 
								"makePublic" => "yes",
								"results_order_by" => "position",
								"closePoll" => "yes",
								"closeDate" => "2025-05-30T00:42:00",
								"styleID" => "15",
								"packID" => "11577",
								"folderID" => "140644",
								"languageID" => "30",
								"sharing" => "no",
								"answers" => array( 
										"answer" => array(  0 => array( "text" => "Yes" ), 
															1 => array( "text" => "No" ) )
								),
							),
							"id" => "CreatePoll"
						) 
					) 
				)
			)
		);
	echo "<h1>createPoll</h1>";
	echo "<strong>Sent to api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( json_decode( $curl_data ), 1 ) );
	echo "</pre>";
	$data = send_json_query( $curl_data );
	echo "<strong>Received from api.polldaddy.com:</strong>";
	echo "<pre>: ";
	echo htmlspecialchars( print_r( $data, 1 ) );
	echo "</pre>";
	
	if ( isset( $data->pdResponse->demands->demand[0]->poll ) )
		echo "<strong>Created new <a href='https://polldaddy.com/polls/" . (int)$data->pdResponse->demands->demand[0]->poll->id . "/edit/'>poll</a>.</strong>";
	else
		echo "<strong>Could not create new poll.</strong>";
	break;
default:
	pd_api_login_form();
	break;
}

/*
 * Send a JSON request to the Polldaddy API and return the result as an object.
 */
function send_json_query( $curl_data ) {
	$ch = curl_init();
	curl_setopt( $ch, CURLOPT_URL, "https://api.polldaddy.com/" );
	curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
	curl_setopt( $ch, CURLOPT_POST, 1 );
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
	curl_setopt( $ch, CURLOPT_POSTFIELDS, $curl_data );
	$data = curl_exec( $ch );
	curl_close( $ch );
	return json_decode( $data );
}

/*
 * Login form used to get a userCode.
 */
function pd_api_login_form( $email = '', $password = '', $partnerGUID = '' ) {
	?>
	<form method='post' action=''>
	<input name='action' type='hidden' value='usercode' />
	Email: <input type='text' name='email' value='<?php echo htmlspecialchars( $email ); ?>' /><br />
	Password: <input type='password' name='password' value='<?php echo htmlspecialchars( $password ); ?>' /><br />
	partnerGUID/API Key: <input type='text' name='partnerGUID' value='<?php echo htmlspecialchars( $partnerGUID ); ?>' /><br />
	<input type='submit' value='Get UserCode' /><br />
	</form>
	<?php
}

function pd_api_menu( $partnerGUID, $usercode ) {
	pd_api_menu_item( 'list', 'List Polls', $partnerGUID, $usercode );
	pd_api_menu_item( 'create', 'Create Poll', $partnerGUID, $usercode );
}

function pd_api_menu_item( $action, $submit_action, $partnerGUID, $usercode ) {
	?>
	<form method='post' action=''>
	<input name='action' type='hidden' value='<?php echo $action; ?>' />
	<input name='partnerGUID' type='hidden' value='<?php echo htmlspecialchars( $partnerGUID ); ?>' />
	<input name='usercode' type='hidden' value='<?php echo htmlspecialchars( $usercode ); ?>' />
	<input type='submit' value='<?php echo $submit_action; ?>' />
	</form>
	<?php
}
Polldaddy Tweets
%d bloggers like this: