API resource
Blog (WordPress)
Connect your own WordPress site (on your own domain) and let your agent write, schedule and publish articles to it, so the SEO value lands on your site. WordPress.com sites connect with a WordPress sign-in; self-hosted sites with an Application Password (WordPress admin → Users → Profile → Application Passwords). Articles are HTML, save as drafts by default, and schedule natively on WordPress. With one site connected, every /v1/blog call finds it automatically; with several, pass account_id. Article ids are your site's own WordPress post ids. Included on every plan.
Connect a WordPress.com site
/v1/connect/wordpressSend the site owner to auth_url; they approve and pick the site on WordPress.com, then land back on return_to. Connecting the same site again refreshes it in place.
Query parameters
return_tourlWhere the browser lands afterwards.
curl "https://creatoros-production-5658.up.railway.app/v1/connect/wordpress" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"platform": "wordpress",
"auth_url": "https://public-api.wordpress.com/oauth2/authorize?..."
}Connect a self-hosted site
/v1/connect/wordpressFor WordPress you host yourself. Create an Application Password in WordPress admin (Users → Profile) and send it with the login username. The user must be able to publish posts and upload files (an Editor or Administrator); the site must be HTTPS. The password is stored server-side and never returned; revoking it in WordPress disconnects the site.
Body
site_urlurlrequiredThe public site root, e.g. https://yoursite.com (no /wp-json).
usernamestringrequiredThe WordPress login username.
application_passwordstringrequiredThe Application Password (spaces are fine).
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/connect/wordpress" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"site_url": "https://yoursite.com",
"username": "kevin",
"application_password": "abcd efgh ijkl mnop qrst uvwx"
}'{
"connected": true,
"id": "acc_Wp7Lk2Qm9Vx4TcR8yN3bF1hZ",
"site": "yoursite.com",
"name": "Your Site"
}List connected sites
/v1/blogWordPress sites connected to this workspace.
curl "https://creatoros-production-5658.up.railway.app/v1/blog" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"sites": [
{
"id": "acc_Wp7Lk2Qm9Vx4TcR8yN3bF1hZ",
"site": "yoursite.com",
"name": "Your Site",
"blogId": "1",
"needsReconnection": false
}
]
}List articles
/v1/blog/articlesEvery published, scheduled, draft, pending and private article, newest first. Cursor paginated: pass nextCursor back as cursor.
Query parameters
limitinteger1 to 50 (default 20).
cursorstringnextCursor from the previous page.
account_idstringOnly with several sites.
curl "https://creatoros-production-5658.up.railway.app/v1/blog/articles" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"platform": "wordpress",
"articles": [
{
"id": "1842",
"blogId": "1",
"title": "Best time to post on TikTok in 2026",
"status": "publish",
"isPublished": true,
"publishedAt": "2026-09-29T14:00:00Z"
}
],
"nextCursor": "wp:2"
}Create an article
/v1/blog/articlesSaved as a draft unless isPublished: true (publish now) or a future publishDate (WordPress schedules it; don't send isPublished with it). bodyHtml is raw HTML, not Markdown. Missing tags are created. image.url is downloaded into your media library and set as the featured image (public JPEG, PNG, WebP or GIF up to 10 MB). SEO plugin fields (Yoast, Rank Math) aren't set; excerpt is the summary most themes use as the description.
Body
titlestringrequiredArticle title.
bodyHtmlstringThe article HTML.
handlestringURL slug.
excerptstringSummary / description.
tagsstring[]Tag names (up to 100).
imageobject{ url, altText } featured image.
authorstringWordPress user id as a string.
isPublishedbooleantrue publishes now; false (default) is a draft.
publishDateISO 8601Future time to schedule.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/blog/articles" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Best time to post on TikTok in 2026",
"bodyHtml": "<p>We looked at 12,000 posts...</p><h2>The short answer</h2><p>...</p>",
"handle": "best-time-to-post-on-tiktok",
"excerpt": "When to post on TikTok for the most views in 2026, by day and hour, from 12,000 real posts.",
"tags": [
"tiktok",
"posting schedule"
],
"image": {
"url": "https://example.com/cover.jpg",
"altText": "TikTok posting heatmap"
},
"isPublished": false
}'{
"platform": "wordpress",
"article": {
"id": "1842",
"blogId": "1",
"title": "Best time to post on TikTok in 2026",
"handle": "best-time-to-post-on-tiktok",
"status": "draft",
"isPublished": false
}
}Get an article
/v1/blog/articles/{articleId}One article with its HTML, excerpt, tags, featured image, status and dates.
Path parameters
articleIdstringrequiredThe WordPress post id.
curl "https://creatoros-production-5658.up.railway.app/v1/blog/articles/1842" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"platform": "wordpress",
"article": {
"id": "1842",
"title": "Best time to post on TikTok in 2026",
"bodyHtml": "<p>...</p>",
"tags": [
"tiktok"
],
"status": "publish",
"isPublished": true
}
}Update an article
/v1/blog/articles/{articleId}Partial update: omitted fields keep their value. isPublished: true publishes a draft, false moves it back to draft. tags replaces the whole list; empty bodyHtml or excerpt clears it.
Path parameters
articleIdstringrequiredThe WordPress post id.
Body
titlestringNew title.
bodyHtmlstringNew HTML.
isPublishedbooleanPublish or unpublish.
publishDateISO 8601Reschedule.
curl -X PATCH "https://creatoros-production-5658.up.railway.app/v1/blog/articles/1842" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"isPublished": true
}'{
"platform": "wordpress",
"article": {
"id": "1842",
"status": "publish",
"isPublished": true,
"publishedAt": "2026-09-30T13:00:00Z"
}
}Delete an article
/v1/blog/articles/{articleId}Deletes the article from WordPress for good (its images and tags stay in the site). Unpublish with isPublished: false instead if it may come back.
Path parameters
articleIdstringrequiredThe WordPress post id.
curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/blog/articles/1842" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"ok": true
}