Tweets & Threads
Publish single posts or coordinated X threads through the same PostZen endpoint.
Stop wrestling with X drafts, media reviews, and publishing status. PostZen keeps X planning, scheduling, and campaign context in one calm workflow.
No credit card required
import PostZen from '@postzen/node';
const postzen = new PostZen();
await postzen.posts.createPost({
body: {
content: 'Shipping today with PostZen!',
publishNow: true,
platforms: [{
platform: 'twitter',
accountId: 'your-x-account-id',
}],
},
});WHY POSTZEN?
X API brings its own authentication, rate limits, media rules, and maintenance. PostZen replaces it with one predictable integration.

2.3M+ posts
2,000+ developersFEATURES
One complete API for X formats, controls, and scheduled publishing

Publish single posts or coordinated X threads through the same PostZen endpoint.
Attach images to X posts without building a separate media-upload workflow.
Publish native video or GIF media while PostZen handles hosting and processing.
Keep mentions, hashtags, and destination links intact in every scheduled post.
Send an X variant alongside Instagram, LinkedIn, Threads, and other networks in one request.
Publish at a precise time or add posts to your automatic publishing queue.
Three steps to integrate the X Upload API

Sign up for PostZen and grab your API key from the dashboard.

Authorize your X account once. We manage OAuth, permissions, and publishing access for you.

POST to /v1/posts with X selected and your content or media. Done.
CODE EXAMPLE
One POST request to /v1/post — send a file or a public URL
const response = await fetch("https://api.postzen.dev/v1/posts", {
method: "POST",
headers: {
"Authorization": "Bearer POSTZEN_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
platforms: [{ platform: "x", accountId: "your-x-account-id" }],
content: "Building the future with calm campaign workflows",
mediaItems: [{ url: "https://cdn.example.com/launch-image.jpg" }],
scheduledFor: "2026-06-15T19:00:00Z",
tags: ["launch", "x"]
})
});
const result = await response.json();
console.log("Scheduled successfully:", result.post._id);Still have questions?
X API pricing changes frequently and can include usage-based access, legacy paid tiers, or enterprise plans depending on your account. PostZen is free up to 2 accounts, then pay only for what you use beyond that.
X's API can require paid access, developer portal approval, media upload handling, thread chaining, and ongoing API maintenance. PostZen abstracts that complexity with one simple endpoint for scheduling posts on X and other supported platforms.
Not yet. Each API call publishes a single post to X today. Thread chaining is on our roadmap.
Not yet. PostZen focuses on publishing and scheduling today. DM support is on our roadmap.
Yes. PostZen supports all X media types: images, videos, and GIFs. We handle the multi-step media upload process that X's API requires.
Join the 2,000+ developers who chose PostZen over building around disconnected platform tools. Same reliability, 10x less code.