Hi guys, I’m trying to create a new droplet using their API, but when I post the request, it returns blank. Here is my code.
<?php
$url = 'https://api.digitalocean.com/v2/droplets';
$data = 'name=TestDroplet®ion=ams3&size=512mb&image=449676322';
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_HTTPHEADERS => array(
'Authorization: Bearer Authorization: Bearer MY KEY',
'Content-Type: application/json',
'Content-Length: ' . strlen($data)
));
//execute post
$result = curl_exec($ch);
print_r $result;
?>
Thanks.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Hi I am looking for a simple php code that can list all my droplets. I used to use this for v1 API and now it dose not work with v2 API. please help. here is my v1 code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Digital Ocean API Implementation</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>
<table width="700px">
<tr>
<td colspan="6">Data Center Control</td>
</tr>
<tr>
<td style="text-align:center">Server ID</td>
<td style="text-align:center">Server Name</td>
<td style="text-align:center">IP</td>
<td style="text-align:center">Status</td>
<td style="text-align:center">Creation Date</td>
<td style="text-align:center">Actions</td>
</tr>
<?php
/* PHP script written by W. Al Maawali
# (c) 2014 Founder of Eagle Eye Digital Solutions
# http://www.digi77.com
# http://www.om77.net
# script starts here:*/
// Add your own client keys here
$myClientID="xxxxxxxxxxxx";
// Add your own API keys here
$myDOApi="xxxxxxxxxxxxxxxxxxxx";
// Get current time to speed
$loadingtime = time();
// Get your data from the API provider
$json = file_get_contents("https://api.digitalocean.com/v1/droplets/?client_id=$myClientID&api_key=$myDOApi");
$data = json_decode($json);
// Get live hosts
$liveCounter = substr_count($json, 'status":"active');
// Get Offline hosts
$deadCounter = substr_count($json, 'status":"off');
// Sum the total
$counterSum=$liveCounter + $deadCounter;
foreach($data -> droplets as $mydata)
{
// Set the droplet id for further actions
$serverid=$mydata->id;
?>
<tr>
<td style="text-align:center"><?php echo $mydata->id; ?></td>
<td style="text-align:center"><?php echo $mydata->name; ?></td>
<td style="text-align:center"><?php echo $mydata->ip_address; ?></td>
<td style="text-align:center"><?php echo $mydata->status; ?></td>
<td style="text-align:center"><?php echo $mydata->created_at; ?></td>
<td class="td_title4" style="text-align:center"><?php echo "<a href=\"https://api.digitalocean.com/droplets/$serverid/reboot/?client_id=$myClientID&api_key=$myDOApi\" target=\"_blank\"><font color=\"red\">Reboot</font></a> - <a href=\"https://api.digitalocean.com/droplets/$serverid/shutdown/?client_id=$myClientID&api_key=$myDOApi\" target=\"_blank\"><font color=\"red\">Shut Down</font></a> - <a href=\"https://api.digitalocean.com/droplets/$serverid/power_on/?client_id=$myClientID&api_key=$myDOApi\" target=\"_blank\"><font color=\"red\">Power On</font></a>" ?></td>
<?php
}//end for
?>
</tr>
<tr>
<td colspan="2">
Online Droplets: <?php echo "<font color=\"green\">" . $liveCounter . "</font>"?><br />
Offline Droplets: <?php echo "<font color=\"red\">" . $deadCounter . "</font>"?><br />
Total Droplets: <?php echo "<font color=\"black\">" . $counterSum . "</font>"?><br />
<?php echo "Query Time: " . "<font color=\"green\">" . (time() - $loadingtime) . "s </font><br />\n"; ?>
</td>
</tr>
</table>
</body>
</html>
There are a number of syntax errors that won’t allow your code to run for me. What version of PHP are your running? You may need to set curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); in order to return the results of the request and see what the error from the API call is.
All that aside, here is a PHP snippet that works for me:
<?php
$data = array("name" => "TestDroplet", "region" => "ams3", "size" => "512mb", "image" => "ubuntu-14-04-x64");
$data_string = json_encode($data);
$ch = curl_init('https://api.digitalocean.com/v2/droplets');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer YOUR_TOKEN',
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
print_r($result);
?>
You might also want to check out the community contributed PHP bindings for our APIv2.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.