Publishing
WordPress (REST API)
AvailablePublish AI-generated articles straight into any self-hosted WordPress site using native REST API + Application Passwords. No plugin install required — works with managed hosts, Pantheon, WP Engine, Kinsta, Bluehost, anywhere WordPress 5.6+ runs over HTTPS.
Prerequisites
- WordPress 5.6 or newer (check WP Admin → Dashboard → At a Glance).
- Your site must be served over HTTPS. WordPress disables Application Passwords on plain HTTP.
- A user account with Editor or Administrator role.
- The REST API must be reachable at
/wp-json/wp/v2/. Security plugins like Wordfence can block it — see Troubleshooting below.
Setup guide
- Sign in to WordPress as an Editor or Administrator.
- Go to Users → Profile (or Users → All Users → Edit for a specific user).
- Scroll to Application Passwords. If this section is missing, see Troubleshooting.
- Enter
KwikScaleAIas the application name and click Add New Application Password. - Copy the generated password (it's shown only once — the format is
xxxx xxxx xxxx xxxx xxxx xxxx, with or without spaces; both work). - In KwikScaleAI, open Integrations → WordPress (REST API) → Connect.
- Paste your site URL, the WordPress username, and the application password. Click Test connection — you should see a success toast.
How it works
When you approve an article in KwikScaleAI, we make two HTTP calls to your WordPress site:
- A pre-flight
GET /wp-json/to confirm Application Passwords are available. - A
POST /wp-json/wp/v2/poststo create the article (orPOST /wp-json/wp/v2/posts/{id}for updates).
Auth is HTTP Basic: we send Authorization: Basic base64(username:applicationPassword). The post body maps cleanly to WordPress fields:
{
"title": "How We Doubled Organic Traffic",
"slug": "how-we-doubled-organic-traffic",
"content": "<h1>...</h1><p>...</p>",
"excerpt": "The exact playbook we used to 2x traffic...",
"status": "publish",
"categories": [12],
"tags": [34, 56]
}Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
| siteUrl | string (URL) | Required | Your WordPress site URL. Must start with https://. Trailing slashes are stripped automatically. |
| username | string | Required | WordPress username (not email). Find it at Users → Profile. |
| applicationPassword | string | Required | The 24-character password generated in Users → Profile → Application Passwords. Spaces are optional. |
| publishStatus | 'publish' | 'draft' | 'private' | Optional | publish goes live immediately. draft saves without publishing — useful if you want manual review in WP Admin. private makes the post visible only to logged-in admins.Default: publish |
| defaultCategoryIds | number[] | Optional | Numeric WordPress category IDs to apply to every article. Find the ID in Posts → Categories— it's in the URL when you hover “Edit” (tag_ID=12). Empty array = uncategorized.Default: [] |
| defaultTagIds | number[] | Optional | Numeric WordPress tag IDs. Same lookup method as categories.Default: [] |
siteUrlRequiredstring (URL)
Your WordPress site URL. Must start with https://. Trailing slashes are stripped automatically.
usernameRequiredstring
WordPress username (not email). Find it at Users → Profile.
applicationPasswordRequiredstring
The 24-character password generated in Users → Profile → Application Passwords. Spaces are optional.
publishStatusOptional'publish' | 'draft' | 'private'
publish goes live immediately. draft saves without publishing — useful if you want manual review in WP Admin. private makes the post visible only to logged-in admins.
Default: publish
defaultCategoryIdsOptionalnumber[]
Numeric WordPress category IDs to apply to every article. Find the ID in Posts → Categories— it's in the URL when you hover “Edit” (tag_ID=12). Empty array = uncategorized.
Default: []
defaultTagIdsOptionalnumber[]
Numeric WordPress tag IDs. Same lookup method as categories.
Default: []
Choosing a publish status
publish— recommended for fully autonomous pipelines. Articles go live the moment KwikScaleAI generates + scores them.draft— recommended while you're still tuning prompts or editorial style. Articles land in the WP dashboard for human review before you click “Publish.”private— rare. Useful for internal knowledge-base WordPress installs.
Capabilities
When to use the Plugin instead
If you own the WordPress install and can upload plugins, the KwikScaleAI WordPress Plugin is usually a better fit:
- Single integration key (no Application Password needed).
- Accepts tag/category names — no ID lookup.
- Bypasses hosts that block
/wp-json/wp/v2/.
Use the REST API integration when plugin install is not allowed — e.g. managed WP hosts with strict whitelists, or multi-tenant installs where you don't control wp-content/plugins.
Troubleshooting
Application Passwords section is missing
401 Unauthorized on every call
.htaccess issue. Apache strips the Authorization header by default on some shared hosts. Add this to .htaccess: RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]. If you're on Nginx, add fastcgi_pass_header Authorization; to your server block.Security plugin blocks /wp-json/wp/v2/posts
403 Forbidden when creating posts
Posts are created but no categories/tags appear
Connect test succeeds, publish fails with 500
FAQ
Do I need WordPress 5.6 or newer?
Can I pass tag/category names instead of numeric IDs?
Can KwikScaleAI upload featured images to WordPress?
What WordPress user role does the Application Password need?
How do I rotate the Application Password?
Related
- WordPress Plugin integration — simpler auth + name-based taxonomies.
- Integrations overview.
Ready to automate publishing?
Connect your site once. KwikScaleAI researches, writes, and publishes SEO content on autopilot.