Skip to main content
This walks through one post from start to finish: an image post to Bluesky, scheduled for a set time, then checked. It takes six calls. Bluesky needs no settings, so the post body stays short; the WordPress notes show what changes for a network that does. You need an API key and at least one connected channel. To connect one, see Connect a channel.
Where the API key is: in the app, open Connections > API Keys. Only a workspace Admin or Super Admin can reveal or rotate it; other members see it masked. A workspace has one key, and each agent card on Connections shows your MCP address with the key already filled in.

1. Check the key

{ "connected": true } means the key works. A 401 says why it does not: see Limits and errors.

2. Find the channel

Keep the id of the channel you want. It is YOUR_CHANNEL_ID below.

3. Read what the network needs

Bluesky takes up to 300 characters, up to four pictures or one video, and no settings.
A WordPress channel answers with a settings schema that requires title and type. type is a post type such as posts, and the postTypes tool lists them:
The post then carries "settings": { "title": "...", "type": "posts" }. Every network’s settings: Posting settings by network.

4. Upload the image

Keep id and path. An image is ready at once. A video comes back processing: call Get media status every few seconds until it is ready, and use the path from that answer.

5. Create the post

Pick a time in UTC that is still ahead: with schedule, a time that has already passed publishes the post at once. To use the channel’s next free posting time instead, Find a free slot returns one.
The answer is 201 with the new post’s id:
A 400 means nothing was saved, and the body says what to fix. For example, text over 300 characters on Bluesky answers post is too long, please fix it.
To post the same thing on several channels, add one entry per channel to posts. To add a thread, add more items to value, each with "image": [] if it has no media and an optional delay in minutes. It is still one request.

6. Check that it went out

List the posts of that day:
Find your postId and read its state:
PUBLISHED with a releaseURL means the post is live on Bluesky.
To be told the moment a post goes out instead of asking, add a webhook.

Change or cancel it

Next steps

Create a post

Every field of the request, the post types and the settings each network requires.

Posting settings by network

The settings of each network, with examples.

Limits and errors

The hourly limits, and what each status code means.

Node.js SDK

The same calls from JavaScript or TypeScript.
Last modified on September 23, 2026