Skip to main content
Easy Digital Downloads Documentation
Documentation, Reference Materials, and Tutorials for Easy Digital Downloads

Software Licensing API – Example using JavaScript

This document is a subset of the Software Licensing API document which lists all features available via the API. The following is example code showcasing how to implement those features with JavaScript.

If you’re using jQuery, see our jQuery example.

Sample GET Request

const url = new URL( 'https://yoursite.com/' ); // Site with Software Licensing activated.
const urlParams = new URLSearchParams( {
	edd_action: 'check_license',
	license: '59cc77ea94a2d867069a9d96142a35b8', // License key
	item_id: '356', // Product ID
	url: 'domain.com' // Domain the request is coming from.
} );
url.search = urlParams.toString();
fetch( url.toString() )
	.then( response => {
		if ( response.ok ) {
			return response.json();
		} else {
			return Promise.reject( response );
		}
	} ).then( data => {
		// Software Licensing has a valid response to parse
		console.log( 'Successful response', data );
	} ).catch( error => {
		// Error handling.
		console.log( 'Error', error );
	} );

Sample POST Request

const formData = new FormData();
formData.append( 'edd_action', 'check_license' ); // Valid actions are activate_license, deactivate_license, get_version, check_license
formData.append( 'license', '59cc77ea94a2d867069a9d96142a35b8' ); // License key
formData.append( 'item_id', '356' ); // Product ID
formData.append( 'url', 'domain.com' ); // If you disable URL checking you do not need this entry.

// Site with Software Licensing activated.
fetch( 'https://yoursite.com/', {
	method: 'POST',
	body: formData
} ).then( response => {
	if ( response.ok ) {
		return response.json();
	} else {
		return Promise.reject( response );
	}
} ).then( data => {
	// Software Licensing has a valid response to parse
	console.log( 'Successful response', data );
} ).catch( error => {
	// Error handling.
	console.log( 'Error', error );
} );

Response

A response to the above queries would be a JSON object that would look something like this:

{
    "success": true,
    "license": "valid",
    "item_id": 12534,
    "item_name": "Your Product Name",
    "expires": "2022-02-26 23:59:59",
    "payment_id": 123456,
    "customer_name": "Jane Doe",
    "customer_email": "jane@sample.com",
    "price_id": 0,
}

Sample request for older browsers

The above examples are written with modern browsers in mind. If you require IE support then you may prefer to use an XMLHttpRequest object:

// Handling a Software licensing request without jQuery in pure JavaScript. Support for older browsers.
var xhttp = new XMLHttpRequest();

// The url to the site running Easy Digital Downloads w/Software Licensing
var postUrl = 'http://yoursite.com/';

xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        var slData = JSON.parse(xhttp.responseText);
        handleSoftwareLicensingResponse( slData );
    }   
}

var data = {
	edd_action: 'check_license', // Valid actions are activate_license, deactivate_license, get_version, check_license
	license: '59cc77ea94a2d867069a9d96142a35b8', // License key.
	item_id: '356', // Product ID
	url: 'domain.com' // If you Disable URL Checking, you do not need this entry
};

xhttp.open("POST", postUrl, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.setRequestHeader("Access-Control-Allow-Origin", "http://local.dev");

var values = '';
for (var key in data){
    values += key + '=' + data[ key ] + '&';
}
values = values.substring(0, values.length - 1);

xhttp.send(values);


function handleSoftwareLicensingResponse( slData ) {
    if ( slData.success == true ) {
        console.log(slData);
        // Software Licensing has a valid response to parse
    } else {
        // Invalid request was made to software licensing
    }
}