Event Espresso 4 REST API Development Started on Github

We are happy to announce that development of the Event Espresso 4 REST API has begun. You are invited to get involved with the API development by: sharing feedback on the direction of the API, contributing code, testing what is already completed, and encouraging others to get involved.

APIs are for Sharing, Please Share

Hey #app #developers a brand new #API is available for @EventEspresso https://github.com/eventespresso/event-espresso-core/tree/master/docs/C–REST-API #WordPress #events #plugin #eventtech #mobile.

Please click to share this.

WordPress and Event Espresso Developers will be most interested in the EE4 REST API, because it will allow for faster development of a wide array of features, including custom reporting tools, mobile application development, and theme development. The EE4 REST API will provide an easy to use API, available via HTTP, to grab your site’s event and registration data in simple JSON format. Retrieving or updating data is as simple as sending a HTTP request.

Purpose of the Event Espresso 4 REST API

RESTful-APIAs you may have guessed already, the Event Espresso 4 REST API is not a new way to relax or catch some Z’s in between coding sessions. The Event Espresso 4 REST API is actually an application programming interface (API), intended to allow client-side JavaScript, and apps on different servers, to be able to interact with the WordPress Plugin Event Espresso. It is built on WordPress, Event Espresso 4 and the WP API; however once the WP API is merged into WordPress core, it is anticipated that this Event Espresso REST API will likewise be merged into Event Espresso 4 core.

Other WordPress plugins that intend to use Event Espresso 4 data server-side (in the PHP code) generally do not need to use the API, and can instead use Event Espresso 4’s models, config, and other modules directly. Check out developer.eventespresso.com for tutorials on how to use many of these systems.

Example applications could include:

  • JavaScript and HTML snippets that could be pasted onto non-WordPress sites that could list events from Event Espresso
  • Mobile applications for signing attendees into events in Event Espresso
  • WordPress plugin that controls Event Espresso data entirely on the client-side


Generally, the work will be organized into 3 main milestones:

  • READ functionality (API clients will be able to read just about anything from EE4, including information from add-ons)
  • WRITE functionality (API clients will be able to create and update most EE4 info, but we’d like to prevent API clients from breaking the DB so that will be a bit of a challenge)
  • Single page checkout (SPCO) functionality (we will want to present similar functionality to SPCO, except over the API. This will require rather tight integration with SPCO in order to keep them almost identical)


Current progress (as of this writing):

  • READ functionality is approximately 85% completed. We are actively working on the compatibility with the permissions and capability controls that are built into Event Espresso core.
  • WRITE functionality: 0% completed
  • SPCO functionality: 0% completed

Generally, the central hub for the API should be the EE4 REST API Github repository and milestones; along with blogging about it from developer.eventespresso.com.

Information for Non-developers

I’m not a developer, how does this affect me?

Not a developer, that’s okay! The Event Espresso REST API will allow other applications (other websites, mobile apps, etc) to access your Event Espresso data through an application programming interface (API).

We recommend you share this with your development team, agency or app developers because they will be excited about this. You should ask them to consider building an integration for the Event Espresso 4 API so that you can use your data in their applications.

Hey #app #developers a brand new #API is available for @EventEspresso https://github.com/eventespresso/event-espresso-core/tree/master/docs/C–REST-API #WordPress #events #plugin #eventtech #mobile.

Please click to share this.

Another benefit of the API is that if you want a certain edge case feature that is not available in our core products, you can hire a developer to build it for you, without having to understand the Event Espresso 4 code base.

Have ideas for the API, fill out the survey below or leave a comment.

Information for Developers

How do I get access to the files?

Anyone with an account on Github.com can download and install the EE4 REST API on their site.

How do I get involved?

For the most part, at the time of this writing, we are still in the planing and development stages. Developers that are interested in the Event Espresso 4 REST API can get involved in the development and planning process from within the EE4 REST API page on Github.com.

Participate in a short survey!

How will you, or your company use the EE4 REST API? Let us know by filling out the survey below.

Related Articles

2 thoughts on “Event Espresso 4 REST API Development Started on Github

  1. Has this been prioritized over features that were standard to EE3 such as promo codes which has seemingly been shelved indefinitely? What about the stability of Event Espresso with large events that have multiple ticket options? There is clearly a major bug/issue with this that has not been addressed by your team

    • Hello Brian,

      Nope, this has not been prioritized over other features. It is actually being developed at the same time as other features. We have more than one developer, each with skills and specialties working on multiple different projects.

      The Promotions and Multiple Event Registration add-ons have been held up because we discovered that the EE4 core date and time systems needed to refactored. So we had no choice but to delay those add-ons. Our developers and support staff are actually working overtime to get these features developed, tested, and released ASAP. However, we’ve released a branch of EE4, for testing the promotions add-on, and the promotions add-on on our Github repository. You can find out more about getting access to the Github private repo, where we have the promotions add-on available for testing, here: https://eventespresso.com/developers/

      Regarding this statement:

      What about the stability of Event Espresso with large events that have multiple ticket options? There is clearly a major bug/issue with this that has not been addressed by your team.

      Can you please elaborate? We have customers that are processing upwards of 200 tickets at a time: https://eventespresso.com/topic/ee4-wp_esp_registration-reg_group_size-limit-per-transaction127/

      I hope that helps. Please let us know if you have anymore questions.

Share a Reply or Comment

Your email address will not be published. Required fields are marked *

Need help with Event Espresso? Create a support post in our support forums

Do NOT follow this link or you will be banned from the site!
[gravityform id=116 title=false description=false]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_116' ><form method='post' enctype='multipart/form-data' id='gform_116' action='/2015/04/event-espresso-4-rest-api-development-github/'> <div class='gform_body'><ul id='gform_fields_116' class='gform_fields top_label form_sublabel_below description_below'><li id='field_116_5' class='gfield gfield_contains_required field_sublabel_hidden_label field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >What is your first name?<span class='gfield_required'>*</span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_116_5'> <span id='input_116_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_116_5_3' value='' aria-label='First name' aria-required="true" aria-invalid="false" placeholder='First name'/> <label for='input_116_5_3' class='hidden_sub_label screen-reader-text'>First name</label> </span> </div></li><li id='field_116_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_116_1' >What is your email address so we can follow up with you?<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_116_1' type='text' value='' class='medium' placeholder='hello@example.com' aria-required="true" aria-invalid="false" /></div></li><li id='field_116_2' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_116_2' >Tell us about your concerns below<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_2' id='input_116_2' class='textarea medium' placeholder='What kind of events are you planning?' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id='field_116_6' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' >GDPR Agreement</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_116_6'><li class='gchoice_116_6_1'> <input name='input_6.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_116_6_1' /> <label for='choice_116_6_1' id='label_116_6_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id='field_116_3' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_3' id='input_116_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></li><li id='field_116_4' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_4' id='input_116_4' type='hidden' class='gform_hidden' aria-invalid="false" value='https://eventespresso.com/2015/04/event-espresso-4-rest-api-development-github/' /></li><li id='field_116_7' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_116_7' >Comments</label><div class='ginput_container'><input name='input_7' id='input_116_7' type='text' value='' autocomplete='off'/></div><div class='gfield_description' id='gfield_description_116_7'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_116' class='gform_button button' value='Send my message' onclick='if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} jQuery("#gform_116").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_116' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='116' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_116' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_116' id='gform_target_page_number_116' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_116' id='gform_source_page_number_116' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 116) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [116, 1]) } ); </script>