ShapelessAIAll capabilities
Publishing

Publish a post

Put a post on a connected LinkedIn, X, Instagram, TikTok, YouTube, Facebook, Threads or Bluesky account (Reddit once Reddit approves our app): now, at a time, or in the account's next free queue slot.

View as Markdown

The body carries the text, media keys, a title where the platform needs one, per-platform settings and an optional first comment. The rail checks the platform's rules before anything goes out and answers 422 with the rule it refused on, or 402 with the reset time when a Free plan's UTC day is full. What comes back is the post's id, its state and, once live, the URL on the platform.

Ask in plain words

  • "post this to LinkedIn for me"
  • "schedule an Instagram post for tomorrow at 9am"
  • "add these three posts to the X queue"
  • "social media posting API for my agent"

From an agent host (MCP)

Server: https://shapelessai.com/mcp (add it to your host).

  • posts_create: PUBLISHES CONTENT: puts a post you wrote on the rail for one connected account (connections_list), at a time, in the account's next free queue slot, or now. Read platforms_list first for the platform's limits and settings schema. Free plan: 10 posts a day (402 free_daily_cap says when the day resets). Needs the publish scope.

From code (REST)

Bearer API key with the scope each call names (auth, OpenAPI).

  • POST /api/posts (publish scope): Queue a post: at a time, in the next free queue slot, or now.
  • GET /api/posts/cap (read scope): The Free plan's day: how many posts already go out on the UTC day ?at= falls on, and the cap. Paid plans answer { cap: null }.

From a terminal (CLI)

  • shapeless posts create

Example

curl -s https://shapelessai.com/api/posts -H "Authorization: Bearer $SHAPELESS_API_KEY" -H "Content-Type: application/json" -d '{"connectionId":"<id>","postText":"Shipped the thing.","queue":true}'
// MCP tool call
{ "tool": "posts_create", "arguments": { "connectionId": "<id>", "text": "Shipped the thing.", "queue": true } }
shapeless posts create --to <connectionId> --text "Shipped the thing." --queue

Refusals

StatusMeaning
402Free plan: that UTC day already holds its posts (FreeDailyCap).
422A platform rule refused the post; the message names the rule.

Where else

Every capability · Docs · /llms.txt