This is simple PHP example code to interact with the Crowdsignal API. A Crowdsignal 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 Crowdsignal 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+, 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.crowdsignal.com:</strong>";
echo "<pre>: ";
echo htmlspecialchars( print_r( json_decode( $curl_data ), 1 ) );
echo "</pre>";
echo "<strong>Received from api.crowdsignal.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.crowdsignal.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.crowdsignal.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://app.crowdsignal.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(
"pdAccess" => array(
"partnerGUID" => $_POST['partnerGUID'],
"partnerUserID" => "0",
"demands" => array(
"demand" => array(
"id" => "GetUserCode"
)
)
)
) );
echo "<h1>pdAccess</h1>";
echo "<strong>Sent to api.crowdsignal.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.crowdsignal.com:</strong>";
echo "<pre>: ";
echo htmlspecialchars( print_r( $data, 1 ) );
echo "</pre>";
if ( false == isset( $data->pdResponse->userCode ) ) {
pd_api_login_form( $_POST[ 'partnerGUID' ] );
die( "Error connecting to your Crowdsignal 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",
"width" => "500px",
"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.crowdsignal.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.crowdsignal.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://app.crowdsignal.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 Crowdsignal API and return the result as an object.
*/
function send_json_query( $curl_data ) {
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, "https://api.crowdsignal.com/v1" );
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( $partnerGUID = '' ) {
?>
<form method='post' action=''>
<input name='action' type='hidden' value='usercode' />
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
}