Why does /wp-json/ return 404 rest_no_route?
The route was not registered at the path you used, and on a WooCommerce store the usual cause is permalinks. WordPress serves the REST API at /wp-json/ only when permalinks are set to something other than Plain. Re-save Settings > Permalinks and retry, and while permalinks are Plain the query form ?rest_route=/wc/v3/ reaches the same API.
What rest_no_route is telling you
WordPress maps routes to endpoints: a route is a URI, and the mapping of an HTTP method to it is the endpoint. rest_no_route means WordPress answered the request but found no route registered for that URI and method. So the API itself is alive, and the path is wrong, unreachable, or belongs to a namespace that is not loaded.
Work through it in this order
Open Settings > Permalinks and select any option other than Plain.
Save changes even if the setting already looks right: saving rewrites the rules, which is the fix on Apache when the .htaccess rules are missing.
Load https://yourstore.com/wp-json/ and check that JSON comes back listing namespaces.
Look for wc/v3 in that namespace list. If it is absent, WooCommerce is not active, and no REST key will help.
If /wp-json/ still 404s, try https://yourstore.com/?rest_route=/ to confirm the API is running behind a rewrite problem.
Two paths to the same API
The WordPress REST API handbook names the query form as what to use when pretty permalinks are not enabled, and as what to try when the normal route structure returns a 404. Treat it as a diagnostic: if ?rest_route= answers and /wp-json/ does not, the API is fine and your rewrite rules are not.
| Permalink setting | Base path | Example orders route |
|---|---|---|
| Any option but Plain | /wp-json/ | /wp-json/wc/v3/orders |
| Plain | ?rest_route= | /?rest_route=/wc/v3/orders |
Fix it properly rather than living on the fallback
Keep the store on pretty permalinks. WooCommerce's own REST API documentation lists a human readable permalink format as a prerequisite before generating keys, and integrations are written against the /wp-json/wc/v3/ base path. A store that only answers on ?rest_route= will work with some clients and quietly fail with others.
On Apache the rewrite rules live in .htaccess. If the file is missing or not writable, re-saving Settings > Permalinks will not be enough, and the rules have to go in by hand or in the server config.
When the namespace list is the real answer
Load /wp-json/ and read what comes back. A GET to /wp-json/ returns information about the routes and endpoints that are available, so an active WooCommerce store lists wc/v3 among them. If WordPress routes such as wp/v2 are there and wc/v3 is not, the request path was never the problem: WooCommerce is deactivated, or an update left it in a broken state, and the store owner needs to look at Plugins before looking at keys.
Key takeaways
- rest_no_route means the route was not found at that path, not that authentication failed.
- Set permalinks to anything but Plain, then save Settings > Permalinks to rewrite the rules.
- /?rest_route=/wc/v3/orders reaches the same API when pretty permalinks are off.
- No wc/v3 in the /wp-json/ namespace list means WooCommerce is not active.
What we check when a WooCommerce connection fails
I'd Ship That for WooCommerce is in early access, and it connects with your site URL plus a REST API consumer key and secret. We call the WooCommerce orders route when you connect, so a permalink problem shows up at connect time rather than the first time you try to ship. Once the route answers, paid orders arrive in The Workbench on a scheduled sync and buying a label writes tracking back to the order.
Related questions
Saving the same option again does not change your URLs. It regenerates the rewrite rules, which is what repairs a missing or stale .htaccess block on Apache. Changing to a different option does change URLs, so keep the setting you already use.
That points at WooCommerce rather than WordPress. Check the namespace list returned by /wp-json/ for wc/v3. If the namespace is listed and the orders route still 404s, confirm you are using the exact path /wp-json/wc/v3/orders, with no trailing segment.
Test it rather than guess. Request /wp-json/ from outside the site in a plain browser, then request /?rest_route=/ and compare. If the query form answers and the pretty path does not, the API is running and something in front of it, rewrite rules included, is handling that path.
Yes. WooCommerce's REST API documentation asks you to confirm permalinks are set to a human readable format before generating keys. A key created on a Plain-permalink site is valid but points at a base path that returns 404.