Devot:ee Upload API for Developers

version 1.0.0

The Upload API allows developers to upload new files, version numbers, release dates, and release notes for their commercial or free add-ons, without having to log in to devot:ee to do so.

If you are having trouble connecting (for example, you only get an "Authorization Required" message) please contact us so we can confirm your member account has the proper permissions.

Post Variables

You will need your API key and your secret key.If you're a developer, your keys can be found on your main member page. The other variables are outlined below:

$api_key      = ""; // Your API key
$secret_key   = ""; // Your secret key
$add_on       = ""; // URL Title for the add-on
$file         = ""; // Path to the file preceded by '@'
$version      = ""; // Add-on version number
$release_date = ""; // Unix timestamp, OR leave blank to auto-fill with current date
$release_note = ""; // Separate notes by new lines

Response Fields


For a valid login the API returns a JSON array containing the following:

    "release_notes":"Initial release"


You might receive any one of a few error messages, depending on what required item you missed.

You are not authorized to perform this action. // Bad credentials/keys

{"success":false,"errors":{"0":"Missing add-on"}} // empty addon name

{"success":false,"errors":{"0":"Missing version number"}} // empty version number

Example Usage

Below is some sample code (remember to wrap in PHP tags) for you to get started. Please note all the CURLOPT values, including the USERAGENT. Please note there should be no trailing slash on the API URL.

$api_key    = "a123ffa2345bfd6ee7f8cfe90c123e5";
$secret_key = "c1b2dd34afa567890a12bacfa34bc5a56df78";
$add_on       = "starslayer";
$file         = "@/";
$version      = "1.0.0";
$release_date = "13357999891";
$release_note = "ADDED: Some cool feature
ADDED: Another amazing feature
FIXED: Some silly display issue
BUG: Yeah, we squashed this one
BUG: There were two bugs, but now there are none";

// The POST data must be in an array in order for the data to be encoded correctly.
$post = array(
  'api_key'       => $api_key,
  'secret_key'    => $secret_key,
  'addon'         => $add_on,
  'file'          => $file,
  'version'       => $version,
  'release_date'  => $release_date,
  'release_notes' => $release_note

$url = "";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$response = urldecode(curl_exec($ch));

echo "Response : $response";

Additional API Information

Upon submitting a new file for a commercial add-on, the upload API will attempt to find an existing record for the specified version number. If a match is found, the API will update the download file and any other information that has changed. If no match is found, a new version record is created for the add-on.

Free add-ons are limited to two download records per add-on - one record for an ExpressionEngine 1 version and another for an ExpressionEngine 2 version.

Last updated October 25, 2019.