Posteady
Posteady Docs
GuidesAPI referenceMCP

Publish a post

Publish text or submit a media post to your connected social accounts.

POST
/api/v1/posts
curl -X POST "https://example.com/api/v1/posts" \  -H "Content-Type: application/json" \  -d '{    "accountIds": [      "11111111-1111-4111-8111-111111111111"    ],    "posts": [      "Hello from the Posteady API!"    ]  }'

{  "results": [    {      "accountId": "11111111-1111-4111-8111-111111111111",      "provider": "threads",      "username": "your_brand",      "success": true,      "postIds": [        "18000000000000001"      ]    }  ],  "summary": {    "succeeded": 1,    "failed": 0  }}

Publish text to Threads, X or LinkedIn, or submit a media publishing job to TikTok, Instagram, YouTube or Facebook. Choose a request example for your target platform. All account IDs must belong to the API key's workspace.

Choose a publishing mode

  • Text: use accountIds and posts. Multiple posts form a thread on Threads or X; LinkedIn accepts a single post.
  • TikTok: use posts and video together, with one account and one caption.
  • Instagram, YouTube and Facebook: use the matching platform object with exactly one account. Omit posts and all other publishing-mode objects.
  • Media: upload and confirm files before using their mediaId. Choose images or videos appropriate to the selected format.

Links in X posts

For X, Posteady automatically removes links from the first post (posts[0]), including http://, https://, www., and bare domains such as foo.com or foo.io/path with any path, query string, or fragment. Links in replies (posts[1] onward) remain, and other platforms in the same request receive the original text. To share a link on X, include it in a reply; links are not moved there automatically. X character limits are checked after removal. An empty or whitespace-only first X post after removal rejects the entire request with VALIDATION_ERROR (HTTP 422), before any account publishes. See the X guide for input and published-text examples.

Check the result

Text publishing returns per-account results. Check each success value, including when HTTP 200 is returned. An accepted asynchronous job returns HTTP 202 and results[0].jobId. Here success: true means accepted; use GET /api/v1/publish-jobs/{id} to confirm publication.

Retry a media request

Reuse the same UUID requestId and unchanged input to retrieve the existing job. A different payload with the same ID returns REQUEST_CONFLICT. Facebook returns HTTP 202 while a job is active and HTTP 200 for terminal replays, including failed, canceled and unknown results with success: false. Other media providers return HTTP 502 for unsuccessful terminal replays. Text requests do not provide this idempotency guarantee.

AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Publish text to Threads, X, or LinkedIn; include video for one public TikTok video; include instagram for one Instagram media post; include youtube for one YouTube video; or include facebook for one Facebook Page post. TikTok uses posts and video together. Instagram, YouTube, and Facebook are self-contained modes and cannot be combined with other write modes.

Publish text to Threads, X, or LinkedIn; include video for one public TikTok video; include instagram for one Instagram media post; include youtube for one YouTube video; or include facebook for one Facebook Page post. TikTok uses posts and video together. Instagram, YouTube, and Facebook are self-contained modes and cannot be combined with other write modes.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json