Channels

WordPress

How an agent publishes to self-hosted WordPress through uplika: application password, Markdown as HTML, photos, tags, drafts and trash.

Quick reference

NameTypeDescription
characterstext30,000
imagesmediaup to 40 per post; more than that and the first 40 go out with a warning
carouselmediano carousel; images sit in the post one after another
videomedianot supported
text alonemediaallowed
posts / 24hlimit1,000
deletes / 24hlimitWordPress through the REST API, with no documented daily cap; a delete moves the post to the trash
statusstatelive

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 ![alt](media:<id>); 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![Cover](media:med_...)",
    "accountIds": ["conn_..."],
    "options": { "wordpress": { "title": "Release notes", "tags": ["news"] } }
  }'

What options.wordpress takes

NameTypeDescription
titleRequiredstringRequired. The post title, up to 255 characters.
tagsstring[]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.
featureImageMediaIdstringMedia 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.
draftOnlybooleanSave 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.
contentstringText 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.