Connecting to WordPress
Machined.ai lets you connect to unlimited WordPress sites to publish content directly.
Connections are set up per project. Open Project settings (the gear icon next to the project name at the top of the page), go to the Integrations tab, and click the WordPress tile under Connect a CMS.

Only workspace owners and admins can add, edit or remove integrations. Other members see the connections but can't change them.
Connection methods
There are two ways to connect:
Whichever method you use, enter just your site address in WordPress URL, for example https://your-site.com. Links that include /wp-admin, /wp-login.php or /wp-json are rejected.
Connecting automatically
Select Automatic ("One-click OAuth setup"), enter your WordPress URL and click Connect. Machined takes you to your WordPress site, where you approve the connection. No credentials are needed. Once approved, you're brought back to the Integrations tab.
Make sure you're already logged in to your WordPress admin in the same browser before you start, as the user you want Machined to publish as (see What Machined can access). The approval link is valid for 15 minutes.
If the connection doesn't complete, you'll see a message explaining why, for example Authorization declined (the request was declined in WordPress), Connection link expired (start a new connection) or Site already connected (a connection for that site already exists).
Connecting Manually
Select Manual ("Enter credentials") and enter your credentials.
- WordPress URL: your site's domain (e.g.
https://your-site.com) - Username: the WordPress username of the user you created the application password for (not the application password name)
- Application Password: generated in the next step
Create an application password
You can create the application password for any WordPress user. Machined can do anything that user can do, so to limit its access we recommend a separate user with the Editor role (see What Machined can access).
- Log into your WordPress admin as an Administrator and click Users in the sidebar

- To limit Machined's access (recommended): click Add User, fill in the new user's details, choose Editor as the role and save. To use an existing user instead, skip to the next step

- On the Users page, click the username of the user Machined will publish as: the Editor you just created, or an existing user

- Scroll down to the Application Passwords section. Enter "Machined" in New Application Password Name and click Add Application Password

- Copy the generated password straight away with Copy. WordPress won't show it again

Paste the password into Machined and click Connect.
Once connected, the site appears under Publishing destinations with a Connected status.
What Machined can access
When you connect, Machined gets access to your WordPress site to create and update posts.
What you give Machined
An application password for a WordPress user. With the automatic connection, WordPress creates one for the user you're logged in as when you approve.
What it can do
Anything that WordPress user can do. WordPress has no narrower kind of application password, so a password for an Administrator can also manage users, plugins and settings.
What Machined uses it for
- Checking the login, including the user's role
- Listing categories and tags, and creating new ones
- Creating and updating posts, and checking their status
- Uploading images and setting their alt text and captions
How to limit it
Create a separate WordPress user for Machined with the Editor role, and connect as that user rather than an Administrator. If you connect as an Administrator, Machined still connects but suggests an Editor user instead. The Author role limits Machined to its own posts, but WordPress doesn't let Authors create new categories or tags.
Across every connection
- The connection belongs to this project only. Other projects in your workspace can't publish through it.
- Machined stores your application password encrypted, uses it only on its own servers when connecting and publishing, and never shows it in the app again.
- Machined never deletes anything in WordPress. Unpublishing an article in Machined doesn't remove the post from WordPress.
- Removing the connection in Machined deletes the stored application password. To cut off access straight away, also revoke the application password in WordPress: go to Users, click the user's username and find it under Application Passwords.
Managing a connection
Each connection row has two actions:
- Move to another project: moves the connection to a different project in your workspace
- Remove connection: deletes the connection after you confirm
You can connect as many WordPress sites as you need. Each one is its own connection.
Troubleshooting
WordFence users
If you have WordFence installed, disable these two settings:
Disable WordPress application passwordsBlock IPs who send POST requests with blank User-Agent and Referer
WP REST API returns 401
A 401 error indicates an authentication problem.
- Check your credentials are correct
- The username must be your WordPress username, not the application password name
- The application password may have been revoked. Check in WordPress
- If WordFence is enabled, configure it as above
WP REST API returns 404
A 404 error means the REST API endpoint can't be found.
- Change permalink settings to Post name. See this Stack Overflow thread
- If you're on Hostinger, disable the Hostinger AI and Hostinger Easy Onboarding plugins
WP REST API returns 403
A 403 error means access is forbidden. The cause is almost always a security layer in front of your site blocking our connection, not your WordPress account or password.
Many hosts and security plugins (for example Wordfence, iThemes Security, or a Cloudflare firewall) block requests to the WordPress REST API by default. Machined uses that API to connect and publish, so when it's blocked, the connection fails.
How to fix it
Ask your hosting provider or whoever manages your site's security to allow access to the WordPress REST API from external services. The most reliable way is to add this path to their allow-list:
/wp-json/wp/v2/users/
(More broadly, allowing /wp-json/ will cover publishing too.)
You can also ask them to allow our requests by name. They'll see the identifier MachinedAI in their logs.
Before you contact your host, double-check
- Enter just your site address, like
https://yoursite.com, not a link that includes/wp-adminor any other path. - For the one-click connection, make sure you're already logged in to your WordPress admin in the same browser.
- Confirm
https://yoursite.com/wp-jsonopens in a browser and shows code (not a login screen or error page). If it doesn't, a plugin may be disabling the REST API.
Specific causes
Cloudflare
If the error includes rayId or challenge, Cloudflare is blocking the request.
- Disable bot challenge mode. See these tips
JWT Authentication
If the error includes jwt_auth_bad_auth_header, you have JWT authentication installed.
- Remove the JWT Authentication plugin
WPEngine
This can be caused by their legacy network configuration.
- Contact WPEngine support. See this thread for more info