X / Twitter API

X / Twitter API alternative for posting and scheduling

Post and schedule on X without rebuilding OAuth, media handling, and queues, and with 14 other platforms on the same payload.

Create and schedule X/Twitter posts with bundle.social while reducing the maintenance work around OAuth, media, queues, status tracking, and future cross-platform publishing.

Last updated: July 2026

One API key. No per-account fees. 15 platforms.

API key authScheduled publishing15 platforms
Quick start
API request
1const response = await fetch("https://api.bundle.social/api/v1/post", {2  method: "POST",3  headers: {4    "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY,5    "Content-Type": "application/json"6  },7  body: JSON.stringify({8    teamId: "team_123",9    title: "X product launch",10    postDate: "2026-05-12T14:00:00.000Z",11    status: "SCHEDULED",12    socialAccountTypes: ["TWITTER"],13    data: {14      TWITTER: {15        text: "Launching today: one API workflow for social scheduling.",16        uploadIds: ["upload_hero_image"]17      }18    }19  })20});
Official APIs500k+ connected accountsDirect engineer support

X API direct

X pricing and access rules can change project economics quickly, especially for URL-heavy or high-volume products.
OAuth, media uploads, retry logic, and account mapping become your responsibility.
If you later add LinkedIn, Instagram, or Threads, you start another integration from scratch.
Analytics availability and API access depend on X plan, account, and endpoint limits.

What bundle.social handles

Create X posts through the same API shape used for other supported platforms.
Reference uploaded media IDs instead of building the media lifecycle in your app.
Use bundle.social scheduling and status states around the post lifecycle.
Expand from X-only publishing to LinkedIn, Instagram, Threads, Reddit, and more without a rewrite.

Use X publishing as one channel, not a one-off build

bundle.social works best when X is part of a broader publishing workflow. You can start with scheduled X posts, then add LinkedIn, Instagram, Threads, Reddit, and more without rebuilding the foundation.

Workflow

How it works

Connect accounts once, then create and schedule posts with channel-specific fields from one API.

01

Create an API key

Generate an organization API key in the dashboard and use it with the x-api-key header.

02

Connect accounts

Connect each social account once. bundle.social keeps the account mapping ready for future posts.

03

Create or schedule posts

Send one request with the publish date, selected channels, and the fields each platform needs.

Product architecture

Build social media workflows without rebuilding every platform

X and Twitter API publishing for product teams

An X API integration matters for SaaS products, agencies, developer tools, and internal marketing systems that need short-form publishing inside their own workflow. These teams need text posts, media uploads, reply settings, scheduling, status tracking, and cross-platform campaign context. They also have to absorb X access rules, subscription tiers, and per-post charges that can change project economics quickly.

bundle.social gives X publishing a production workflow instead of a one-off integration. Your backend can create scheduled X posts, reference uploaded media by upload ID, set reply controls where the account supports them, and track delivery status next to other channels. X posting stays metered at the platform's own rate, so cost remains visible rather than hidden inside the integration.

Subscription tier decides what an X integration can promise

X is unusual because the same payload behaves differently depending on the connected account. Character limits, video duration, and some reply controls follow the account's subscription level, so a composer validating against one limit will either truncate content for premium accounts or accept posts that free accounts cannot publish.

A better X publishing flow makes account tier, caption limits, media rules, and reply settings visible before publish time. bundle.social validates against the limit the connected account actually allows while keeping the same API patterns used for Instagram, LinkedIn, TikTok, Facebook, YouTube, Threads, and other supported channels.

X publishing wired into scheduling, status, and campaigns

Products rarely stay X-only. The same announcement usually needs a short line on X, a longer framing on LinkedIn, and a visual on Instagram or Threads, with one campaign view across all of them. When X is built as a standalone integration, none of the surrounding scheduling, retry, and status work transfers to the second channel.

bundle.social keeps X inside the shared publishing lifecycle. One scheduled post can target several networks while an X data block carries only the fields the platform needs, prepaid credits keep usage predictable, and every other channel keeps publishing if that balance runs out. X becomes one measurable channel in the campaign rather than a separate integration.

Implementation

How X posting is billed

X charges for posting through its API, so X publishing is pay-per-use: $0.015 per post and $0.20 for a post with a link. These are X's own charges, passed through with no markup from us.

Prepaid credits, no surprise invoices

Top up a credit balance in the dashboard and each X post draws it down. You only ever spend what you've loaded.

X's prices, passed through

The per-post rate is what X charges for API posting - bundle.social adds nothing on top.

Only X is metered

All other supported platforms are covered by your subscription with no usage fees. Credits are spent on X posts only.

Predictable when the balance runs out

If your credits run out, X posts pause until you add funds. Publishing to every other channel keeps running.

Capabilities

X/Twitter scheduling without the API maintenance

Schedule X posts with the same workflow used for every other channel, with media, status, and multi-platform support included.

API key auth, no OAuth per request

Use a single x-api-key header for X post creation. Users still connect X accounts through the hosted OAuth flow; bundle.social handles token storage and refresh.

Media upload references

Attach images, videos, and GIFs by upload ID rather than managing the X media upload lifecycle directly.

Scheduling and queuing

Set a postDate to schedule X posts in advance, or push to a queue through the dashboard without extra logic.

Post status tracking

Track scheduled, processing, posted, retrying, and error states without building your own state machine around the X API.

Multi-platform ready

Start with X and expand to LinkedIn, Instagram, Threads, Reddit, and more using the same post endpoint and API shape.

Dashboard for non-technical teams

Marketing teams can review, approve, and monitor X posts in the same calendar as every other channel.

Platform specifics

X API specifics that vary by subscription tier

X publishing is text-first, but account tier, media limits, and reply controls affect what your product can promise.

Character limits vary

Free and Basic accounts are limited to 280 characters, while Premium and Premium+ accounts can support up to 25,000 characters.

Video duration varies

Free and Basic accounts are limited to 140 second videos. Premium tiers can support videos up to 10 minutes.

Reply settings are explicit

The TWITTER payload can set replySettings for everyone, following, mentioned users, subscribers, or verified accounts where the connected account supports it.

Developer example

Schedule an X/Twitter post

Examples use bundle.social's public API shape: API key authentication, a post date, selected social account types, and platform-specific data.

TypeScript
API request
1const response = await fetch("https://api.bundle.social/api/v1/post", {2  method: "POST",3  headers: {4    "x-api-key": process.env.BUNDLE_SOCIAL_API_KEY,5    "Content-Type": "application/json"6  },7  body: JSON.stringify({8    teamId: "team_123",9    title: "X product launch",10    postDate: "2026-05-12T14:00:00.000Z",11    status: "SCHEDULED",12    socialAccountTypes: ["TWITTER"],13    data: {14      TWITTER: {15        text: "Launching today: one API workflow for social scheduling.",16        uploadIds: ["upload_hero_image"]17      }18    }19  })20});

Supported content

Text postsImagesVideosGIF uploadsReply settingsScheduled posts

Honest limitations

  • X character limits still depend on account subscription level.

Guarantees

Developer-first infrastructure

Visible post status

Track scheduled, processing, posted, retrying, and error states per post.

Verbose errors

When native APIs fail, we return human-readable error messages and actionable recovery steps.

Flat pricing

No per-post counting. Predictable pricing for teams managing many users, workspaces, and connected accounts.

Same-day support

Direct access to the engineers building the API. We respond to technical issues the same day, sometimes the same hour.

FAQ

Questions developers ask before building

Is bundle.social a Twitter API replacement?

It is an API layer for products that need X publishing and scheduling. It does not remove X's rules, but it can reduce the code you maintain around posting workflows.

How is X posting billed?

X posting is pay-per-use from a prepaid credit balance: $0.015 per post and $0.20 for a post with a link. These are X's own API charges, passed through with no markup from us. Top up credits in the dashboard and each X post draws the balance down; other platforms have no usage fees.

Can I schedule tweets through the API?

Yes. Create a post with status SCHEDULED, a future postDate, socialAccountTypes set to TWITTER, and TWITTER-specific data.

Can I post images or videos to X?

Yes. Upload media to bundle.social first, then include upload IDs in the TWITTER payload.

Does this also post to other platforms?

Yes. The same post creation workflow can include other supported social account types with their own platform data.

Do I still need to understand X rules?

Yes. bundle.social simplifies implementation, but X still controls account eligibility, content policy, character limits, and API behavior.