The WooCommerce Legacy REST API extension is now available

Update 2024-01-17: The dedicated Legacy REST API extension is now available in the WordPress.org plugins directory. See the announcement post.

Two months ago we announced that the Legacy REST API will be removed from WooCommerce as of version 9.0. However, for those who have not been able to transition to the more modern REST API based on the WordPress JSON API, we have created an extension which allows you to continue using the WooCommerce Legacy REST API, even after deprecation. The extension is now available as a release in a dedicated GitHub repository.

Who needs to install this extension?

As we mentioned in the original post, we recommend installing and activating the extension immediately if your site has a dependency on the WooCommerce Legacy REST API, so that everything will continue working when you update to WooCommerce 9.0. 

To learn more about whether your site has a dependency on the WooCommerce Legacy REST API, checkout the original announcement post

I have a dependency on the WooCommerce Legacy REST API. What should I do next?

You will need to download the woocommerce-legacy-rest-api-1.0.zip[1] file from the release page and upload it to your site. The release page contains the detailed instructions on how to achieve this.

[1] Currently, the extension is only available as a GitHub release, but it will be available in the WordPress.org plugins directory once the approval process is complete


27 responses to “The WooCommerce Legacy REST API extension is now available”

  1. The plugin is still not HPOS compatible. Do you have an ETA for a fix and what is your advice for sites which have HPOS activated?
    Thanks!

    1. You’re right, the Legacy REST API is not compatible with HPOS—and we currently have no plans to make it compatible. This is, after all, a system that has been deprecated for many years.

      The best advice is to migrate away from it, which may involve reaching out for help from any plugin authors or service providers that still require it.

      In the short term, though, you can enable (or continue to keep enabled) HPOS Compatibility Mode. You can find this setting in the WooCommerce ▸ Settings ▸ Advanced ▸ Features screen.

  2. On the original announcement post (https://developer.woocommerce.com/2023/10/03/the-legacy-rest-api-will-move-to-a-dedicated-extension-in-woocommerce-9-0/), many people who commented were very confused because their Legacy REST API checkbox was checked, but they couldn’t determine how to tell if their website was actually using the Legacy REST API.

    On this page: https://wordpress.org/support/topic/legacy-rest-api/ @babylon1999 wrote, “If you don’t have any API keys generated in WooCommerce → Settings → Features → Legacy API, then no, you’re not using the Legacy API” (I think they meant WooCommerce → Settings → Advanced → Legacy API).

    Is @babylon1999 correct? Or is it possible that there is a plugin that is using the Legacy REST API even if there are no API keys listed there?

    1. If there are no API keys in place, then that’s a pretty good indicator that the REST API is not actively being used. However, it’s not a certainty, as API key-based authentication can be overridden by other plugins.

      That said, it’s more than reasonable for those who have a good handle on their project history (in terms of what plugins they’ve enabled, or what services they have integrated with) and are comfortable combining that knowledge with indicators like the absence of API keys (and/or absence of legacy webhooks), to make a call on disabling the Legacy REST API.

      For all other cases, we’re building a small tool that will probably be part of WooCommerce itself, and will warn if it detects real-world usage of the Legacy REST API.

  3. Years ago for a previous employer I developed various site integrations that used the legacy API. They’ve recently reached out to me regarding these warnings.

    Is there a quick overview page of the differences (diff protocols, diff methods/params, diff data/shapes passed) between legacy and non?

    1. I don’t think we have a single resource providing that sort of overview, but you could certainly open a couple of tabs from the online REST API docs, with one showing the current order entity structure and another showing the same but from the Legacy V3 API (and of course you could do the same for other entities, like products or coupons, etc). Would that work?

  4. Hi,

    I have just installed the woocommerce-legacy-rest-api-1.0.zip, but I get a notification that it is not compatible with some functions in the WooCommerce plugin?

    Also, that I have to deactivate it in order to have that function work properly. It says that the plugin is not compatible with the function ‘Save orders with high performance’ or something in that line (my website is in Dutch, not English).

    If it is not compatible with one or more functions, then what would be the solution to all this? We are at Woo 8.4 now, so it won’t be that long before we reach version 9.0.

    Hope you can shine a light on this?

    Regards

    1. I get a notification that it is not compatible with some functions in the WooCommerce plugin? It says that the plugin is not compatible with the function ‘Save orders with high performance’

      That’s correct. The Legacy REST API is not compatible with High-Performance Order Storage (a more efficient way of storing order data, that became the default for new stores in our 8.2.0 release).

      As with any WooCommerce extension that does not declare itself compatible with HPOS, we try to warn merchants about this (however, if you choose to do so you can enable the feature and the plugin—but please be sure to also enable Compatibility Mode).

      If it is not compatible with one or more functions, then what would be the solution to all this?

      The very best solution is to migrate away from the Legacy REST API (it has been deprecated for many years) and embrace the currently supported REST APIs.

      We realize it is potentially tricky for individual merchants to do this by themselves, though, and so if you use a service that relies on the Legacy REST API, you should reach out to the service provider and ask what their plans are.

  5. charliebeewild Avatar
    charliebeewild

    I’m not a developer, just a store owner. should I just disable the Legacy Rest API or just leave it enabled?

    1. If it is enabled and you know which service requires it, you should probably reach out to the service provider and ask what their plans are (our hope is that all services that still use the Legacy REST API will migrate to our currently supported APIs instead). In case of any doubt, though, you can leave it enabled and install the Legacy REST API extension.

      We realize that not all merchants have this information, though. Thankfully, this will all become a little easier to understand in our 8.5.0 release—at that point, WooCommerce will try to detect if any services are still using the Legacy REST API and, if so, it will warn you (it will also log useful information that should make it easier to figure out what service is doing this).

  6. sandyc1115 Avatar

    so, i do not have any current REST APIs, no webhooks. So i UNchecked the leagacy API box, without any noticeable problems. I did install the zip Legacy Rest Api plugin, and it is activated. At this time should i check the legacy API box? or not………………….

    1. In this case, it sounds like you probably can leave the checkbox disabled and do not need the extension. If you want to be extra safe, though, you can:

      — Enable the Legacy API (check the box).
      — Wait until WooCommerce 8.5.0 is released: that version has some new tooling that will alert you if we detect the Legacy API is actually being used (and it will try to capture information to help figure out which service is using it).

      1. sandyc1115 Avatar
        sandyc1115

        oh, dear God, issues like mad now. error 2002 persistently. i disabled the woocommerce legacy rest api that was recommended and i installed just days ago.

        1. I’m sorry to hear that.

          If there is any more information you can share about the errors (we didn’t find any problems when testing this, and can’t immediately replicate now) we’d be interested to learn more.

          Of course, if you’ve solved things and moved on, that’s also fine.

        2. konamiman Avatar

          Could you please open an issue in the GitHub repository of the extension? https://github.com/woocommerce/woocommerce-legacy-rest-api/issues/new – please add as many details as you can about how to reproduce the issue and what are the errors that you get. Thank you.

  7. Why isn’t the Woocommerce Legacy REST API plugin on the WP plugin repository?

    And it should be linked directly from the warning notice in the WP dashboard!

    1. We’re still awaiting approval from the WP Plugins Team for it to be listed in the official repo.

    2. konamiman Avatar

      It was approved WP Plugins Team and published just a few days ago: https://wordpress.org/plugins/woocommerce-legacy-rest-api/

      Linking it in the warning notice is a good point, thanks.

  8. sandyc1115 Avatar
    sandyc1115

    i have to refresh multiple times to get the product page to load

  9. Would be great for commenters on these posts to either direct their request for assistance to Woo support, or open a Github issue to discuss the details. Otherwise the comments and replies here fill up email inboxes causing an unnecessary distraction.

    What would be even nicer, would be the ability to stay subscribed to notifications of new posts on this blog, but also the ability to unsubscribe from comments and replies, unless they are your own.

    1. and just like that I discovered I can unsubscribe to comments and replies.

  10. Can someone help me. Since I installed the plugin i am now getting this error message on my website:

    A PHP session was created by a session_start() function call. This interferes with REST API and loopback requests. The session should be closed by session_write_close() before making any HTTP requests.

    The REST API encountered an error
    Performance
    The REST API is one way that WordPress and other applications communicate with the server. For example, the block editor screen relies on the REST API to display and save your posts and pages.

    When testing the REST API, an error was encountered:

    REST API Endpoint: https://worxdaily.com/wp-json/wp/v2/types/post?context=edit
    REST API Response: (http_request_failed) cURL error 28: Operation timed out after 10000 milliseconds with 0 bytes received

    if anyone can please let me know exactly what i need to do to cofrrect this issue? I am not a programer so not too familiar with what it is exactly telling me to do or where i should go correct it.

    Thanks

    1. Barry Hughes Avatar
      Barry Hughes

      I’m so sorry we missed this question, Jay. Are you still experiencing difficulties here?

  11. Hi
    I have not deactivated the old API, and have not installed the new one. How long have I got to do this?

    1. Konamiman Avatar
      Konamiman

      Hi Marcia, there’s no deadline for installing the new extension (other than WooCommerce 9.0 itself, in which the Legacy REST API will be removed from WooCommerce). Note however than the plugin will be installed automatically with the upgrade to WooCommerce 8.8: https://developer.woocommerce.com/2024/03/21/the-legacy-rest-api-plugin-will-be-automatically-installed-in-woocommerce-8-8/

  12. annie jones Avatar
    annie jones

    I need help installing the new api. I have been trying for weeks now. What I’m I doing wrong. Please help

    1. Barry Hughes Avatar
      Barry Hughes

      Hi Annie—sorry to hear you are experiencing difficulties. Can you provide a little more information?

      The WooCommerce Legacy REST API plugin is basically just a regular WordPress plugin, and can be installed and activated like any other. Are you experiencing an error of some kind, and can you provide some details if so?

Leave a Reply

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