Agent-readable docs index: /llms.txt. Full docs in one file: /llms-full.txt. Download /docs.zip to grep all markdown files locally.

X Threads

A single tweet is capped at 280 characters. Anything longer has to be published as a thread: a root tweet with each following tweet chained as a reply.
Repeat --text once per tweet:
akarso posts create --platforms x \ --text "Shipping a new CLI today." \ --text "It talks to one API and posts to ten platforms." \ --text "Install it with npm i -g akarso"
That publishes three tweets, chained in the order you passed them. One --text is just a normal post.

Why one flag per tweet

Every tweet boundary is something you decide, never something Akarso guesses. Nothing is split, joined, or re-wrapped behind your back.
That matters because X measures tweets in weighted characters: any URL counts as 23 no matter how long it is, and CJK characters and emoji count as 2. Any tool that auto-splits by counting plain string length silently produces tweets that are too long (CJK) or wastes money by cutting text into more tweets than needed (URLs, each extra tweet being a separate billed write).
Each tweet must still fit in 280 characters. If one is too long the whole post is rejected and nothing is published.

Cross-posting a thread

Only the X target is threaded. Every other platform in the same command receives the tweets joined back into one post, separated by blank lines:
akarso posts create --platforms x,linkedin \ --text "First tweet." \ --text "Second tweet."
X gets a two-tweet thread. LinkedIn gets a single post containing both paragraphs. This is usually what you want: X is the only platform with a 280-character cap.
Repeating --text requires x in --platforms. Without an X target there is nothing to thread, so the command errors instead of quietly joining your tweets together.

Media in a thread

All media attaches to the first tweet:
akarso posts create --platforms x \ --media ./chart.png \ --text "Revenue this quarter." \ --text "Full breakdown in the replies."
Per-tweet media is supported by the API but not yet exposed by the CLI.

Schedule a thread

Threads compose with --scheduled-at and --draft:
# publish in 2 hours akarso posts create --platforms x --scheduled-at 2h --text "First." --text "Second." # save for later akarso posts create --platforms x --draft --text "First." --text "Second."
A drafted thread keeps its structure; akarso drafts publish <draftId> publishes it as a thread.

What it costs

Each tweet in a thread is a separate write on X's side, so a 5-tweet thread costs 5 times a single post against your plan's X allowance. A tweet containing a link costs more than a plain one; see Pricing for the exact weights.
Keep threads as short as the idea allows.

If a single tweet is too long

Posting more than 280 characters to X as one tweet fails before anything is published, with a message pointing you here:
Tweet exceeds X's 280-character limit. Publish it as a thread instead — every tweet in the thread must also stay under 280 characters. CLI: repeat --text once per tweet on `akarso posts create`.
Nothing is published and nothing is billed when this happens.

Threads over the API

Repeated --text is a convenience over the normal post body. Building it yourself: put the root tweet in the X target's content override and the remaining tweets in platformSpecificData.threadItems.
{ "content": "First tweet.\n\nSecond tweet.", "platforms": [ { "platform": "twitter", "accountId": "acc_xxx", "content": "First tweet.", "platformSpecificData": { "threadItems": [{ "content": "Second tweet." }] } } ], "publishNow": true }
The target-level content override matters: without it the shared top-level content becomes the root tweet, which would push the entire thread into a single over-length tweet.
Each thread item can also carry its own mediaItems.