Channels
WordPress
How an agent publishes to self-hosted WordPress through uplika: application password, Markdown as HTML, photos, tags, drafts and trash.
Quick reference
| Name | Type | Description |
|---|---|---|
characters | text | 30,000 |
images | media | up to 40 per post; more than that and the first 40 go out with a warning |
carousel | media | no carousel; images sit in the post one after another |
video | media | not supported |
text alone | media | allowed |
posts / 24h | limit | 1,000 |
deletes / 24h | limit | WordPress through the REST API, with no documented daily cap; a delete moves the post to the trash |
status | state | live |
These numbers come from the file the server validates against. The title is required and counted in code points; photos only; the site's default category applies.
How does the body reach WordPress?
As HTML rendered from your Markdown. Put each photo on its own line as ; uplika uploads it to the site's media library. Raw HTML is refused with wordpress_html_not_supported, and Naver Blog syntax (@group, {.small}) with wordpress_directive_not_supported. One body can go to Ghost and WordPress together.
How do I publish my first post?
Call publish with Markdown content and options.wordpress.title. Add options.wordpress.draftOnly to keep it as a draft in your WordPress admin.
curl -X POST https://api.uplika.com/v1/posts \
-H "Authorization: Bearer $UPLIKA_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Intro.\n\n",
"accountIds": ["conn_..."],
"options": { "wordpress": { "title": "Release notes", "tags": ["news"] } }
}'What options.wordpress takes
| Name | Type | Description |
|---|---|---|
titleRequired | string | Required. The post title, up to 255 characters. |
tags | string[] | Tag names, up to 100; WordPress creates new ones. Categories are left to the site's default. Ignored on an edit, where the current tags stay. |
featureImageMediaId | string | Media id of a JPEG, PNG, GIF or WebP for the featured image; Uplika uploads a copy to the site. Ignored on an edit, where the current featured image stays. |
draftOnly | boolean | Save it as a WordPress draft instead of publishing; the permalink is then its WordPress editor page. Not the same as draft on the post, which keeps it on Uplika. |
content | string | Text for this channel only. When set it replaces the shared content for this channel, and the length and media checks use it. Leave it out to use the shared content. |
Generated from the same schema the server validates with. GET /v1/platforms returns it too.
What is not available?
Not offered: categories, pages, custom post types, SEO plugin fields, excerpts, slugs, comments, view counts and video. uplika's server sends scheduledAt posts, not WordPress scheduling. update_post overwrites the title and body, even edits made in the WordPress editor; tags and the featured image stay as they are.
Frequently asked
Does delete_post remove the post for good?
No. It goes to the site's trash, where an administrator can restore it until WordPress empties the trash. If the site has the trash turned off, it is deleted for good and the response's note says so.
Why does connecting say the details were not accepted?
Check in order: the username is your login name or email; the password is an application password, not your login password; if both are right, your host may strip the Authorization header.
Whose name is on the post?
The WordPress user you connected with.