X · Text & media

The X API, one POST, one tweet

Post to X with a single call to the v2 tweets endpoint. Bearer token in, tweet id back — no v1.1 archaeology for the common case.

Posts280 charsSchedulingFan-out
Official OAuth APIup to 280 charsX API v2
curl https://postmyish.com/api/v1/posts \
  -H "Authorization: Bearer $POSTMYISH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"caption":"We just shipped v2 🚀","platforms":["x"]}'
201 · { id: "9f2c8b1e…", status: "published" }JSON
Why not raw?

X API v2 is powerful — and painful

The official API can do this. It just makes you do a lot first. Here's what raw X publishing costs you, and what PostMyIsh absorbs.

Raw X API
With PostMyIsh
Tiering
Posting needs at least the Basic paid tier (~$100/mo)
One key here; bring your X tier when you're ready
Auth
OAuth 2.0 with tweet.write + offline.access for refresh
One OAuth screen, one encrypted token
Media
Upload media via v1.1 first, then attach the media_id
Text posts today; media routed through the same call
Rate limits
Per-app and per-user write caps you track yourself
Tracked centrally and surfaced in analytics
Capabilities

Everything X supports, one endpoint

Post types, limits, and scheduling — all through the same POST /v1/posts call, formatted the way X expects.

Text posts

POST /2/tweets with your caption, trimmed to 280 where needed.

Scheduling

Queue with schedule_at and we post it on time.

Fan-out

The same words go to LinkedIn, Threads, and Bluesky in one call.

Real tweet id

We return the id X hands back, stored on the post.

Copy, paste, ship

Real calls, not pseudocode

Every snippet hits the live API — same base URL, Bearer auth, plain JSON. Add your key and it runs.

Publish to X now

One POST fans out to X. The response carries the id and status the moment it ships.

curl https://postmyish.com/api/v1/posts \
  -H "Authorization: Bearer $POSTMYISH_KEY" \
  -H "Content-Type: application/json" \
  -d '{"caption":"We just shipped v2 🚀","platforms":["x"]}'
How it works

Live in three steps, not three weeks

Connect X, call one endpoint, and we run the X API v2 plumbing behind it.

Step 01

Connect the account

Link it once from the Accounts page through its official login. The credential is stored encrypted.

Step 02

POST /v1/posts

Send one caption and the platform id. Add schedule_at to queue it, or media for a URL.

Step 03

We handle the rest

Container flows, token refresh, rate limits, and the real post id — all on our side.

Straight talk: X gates write access behind a paid tier (Basic, ~$100/mo). The v2 posting code is complete — you supply an X token from your tier and it posts for real.

One API, eleven more

X is one entry in the same array

Add another id to platforms and the identical call posts there too. One request already covers X, LinkedIn, Threads, and Bluesky — no second integration.

See all twelve networks
X API FAQ

The honest answers

What's real, what needs review, and what X itself requires — no hand-waving.

Is this the official X API?

Yes — X API v2, POST /2/tweets, with an OAuth 2.0 user token.

Do I need to pay X?

Yes. X requires at least the Basic tier (~$100/mo at time of writing) to post. The free tier is essentially read-only. That's X's pricing, not ours.

Can I post threads?

The API posts a single caption per call today. Threads are on the roadmap; you can chain calls in the meantime.

Can I schedule?

Yes — schedule_at queues the post and we send it when it's due.

Ready to post your ish everywhere?

Connect your accounts, write one caption, and be live on every feed in minutes. The free plan is genuinely free.