loading…
Search for a command to run...
loading…
The best free social media publishing and scheduling API. Publish to 11 platforms from a single API call. Schedule posts, upload media, track analytics, and aut
The best free social media publishing and scheduling API. Publish to 11 platforms from a single API call. Schedule posts, upload media, track analytics, and automate your social media workflow.
The free social media API built for automation, AI agents, and LLMs.
Programmatically publish to 11 platforms from a single API call. Built for developers, AI agents, LLMs, and agentic workflows that need reliable social media automation without browser sessions or manual interaction.
from bulkpublish import BulkPublish
bp = BulkPublish("bp_your_key_here")
bp.posts.create(
content="Launching our new product today!",
channels=[{"channelId": 1, "platform": "x"}, {"channelId": 2, "platform": "linkedin"}],
status="scheduled",
scheduled_at="2026-04-10T09:00:00Z",
)
Most social media tools are built for humans clicking buttons. BulkPublish is built for code — whether that code is written by a developer, an AI agent, an LLM with tool use, or an autonomous workflow.
Create a free account at app.bulkpublish.com.
Go to Settings > Developer in the dashboard and create an API key. Keys start with bp_ and are shown only once — save it securely.
Connect your social accounts in the dashboard under Channels. The API uses your connected channels to publish.
Python
pip install bulkpublish
Node.js
npm install bulkpublish
Homebrew (macOS/Linux)
brew tap azeemkafridi/bulkpublish && brew install bulkpublish
Or call the REST API directly with curl, fetch, requests, or any HTTP client.
curl -X POST https://app.bulkpublish.com/api/posts \
-H "Authorization: Bearer bp_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello from the BulkPublish API!",
"channels": [{"channelId": 1, "platform": "linkedin"}],
"status": "draft"
}'
BulkPublish ships an MCP server so AI assistants can manage your social media directly:
{
"mcpServers": {
"bulkpublish": {
"command": "npx",
"args": ["-y", "@bulkpublish/mcp-server"],
"env": {
"BULKPUBLISH_API_KEY": "bp_your_key_here"
}
}
}
}
12 tools available: create_post, list_channels, upload_media, get_analytics, and more. See mcp-server/README.md.
Ready-made tool definitions for autonomous AI agents:
All examples are complete, runnable scripts with error handling.
| Python | Node.js |
|---|---|
|
|
post = bp.posts.create(
content="This will go out tomorrow morning.",
channels=[{"channelId": 1, "platform": "instagram"}],
status="scheduled",
scheduled_at="2026-04-10T09:00:00Z",
timezone="America/New_York",
)
media = bp.media.upload("./product-photo.jpg")
post = bp.posts.create(
content="Our newest product is here.",
channels=[{"channelId": 1, "platform": "instagram"}],
media_files=[media["file"]["id"]],
status="scheduled",
scheduled_at="2026-04-10T12:00:00Z",
)
import csv
from bulkpublish import BulkPublish
bp = BulkPublish("bp_your_key_here")
channels = bp.channels.list()["channels"]
with open("content-calendar.csv") as f:
for row in csv.DictReader(f):
bp.posts.create(
content=row["content"],
channels=[{"channelId": ch["id"], "platform": ch["platform"]} for ch in channels],
status="scheduled",
scheduled_at=row["scheduled_at"],
timezone="America/New_York",
)
More examples in examples/ — including Python automation scripts, Node.js examples, curl reference, and AI agent integrations.
postTypeOverridesFull interactive API documentation: app.bulkpublish.com/docs
https://app.bulkpublish.com
Authorization: Bearer bp_your_key_here
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/posts |
Create a post (draft, scheduled, or immediate) |
GET |
/api/posts |
List posts (paginated, filterable by status/date/channel/label) |
GET |
/api/posts/:id |
Get a post with platform statuses and metrics |
PUT |
/api/posts/:id |
Update a draft or scheduled post |
DELETE |
/api/posts/:id |
Delete a post |
POST |
/api/posts/:id/publish |
Publish a draft immediately |
POST |
/api/posts/:id/retry |
Retry failed platforms |
POST |
/api/posts/bulk |
Bulk delete or retry |
GET |
/api/channels |
List connected social media channels |
GET |
/api/channels/:id/health |
Check channel token health |
GET |
/api/channels/:id/options |
Get platform options (Pinterest boards, YouTube playlists, LinkedIn orgs) |
GET |
/api/channels/:id/mentions |
Search users for @mention (X, Bluesky) |
POST |
/api/media |
Upload a media file (multipart) |
GET |
/api/media |
List uploaded media |
GET |
/api/analytics/summary |
Analytics summary for a date range |
GET |
/api/analytics/engagement |
Engagement data grouped by day/week/month |
POST |
/api/schedules |
Create a recurring schedule |
GET |
/api/quotas/usage |
Check current plan limits and usage |
See the OpenAPI spec for the complete endpoint list.
| Platform | Post Types | Media |
|---|---|---|
| Post, Story | Images, Videos | |
| Feed, Reel, Story, Carousel | Images (JPEG), Videos (MP4, MOV) | |
| X / Twitter | Tweet, Thread | Images, Videos, GIFs |
| TikTok | Video, Photo Slideshow | Videos (MP4, MOV), Images |
| YouTube | Video, Short | Videos (MP4, MOV, WebM, AVI, WMV, FLV) |
| Threads | Post, Thread, Quote Post | Images, Videos |
| Bluesky | Post, Thread | Images |
| Pin | Images, Videos | |
| Google Business Profile | Post, Event, Offer | Images |
| Post | Images, Videos | |
| Mastodon | Post, Thread | Images, Videos |
pip install bulkpublish
Supports sync and async. Rich docstrings on every method for IDE and LLM consumption.
npm install bulkpublish
Full TypeScript types, zero dependencies, native fetch (Node 18+).
brew tap azeemkafridi/bulkpublish && brew install bulkpublish
Installs the Node SDK via Homebrew.
No SDK needed — any HTTP client works:
curl https://app.bulkpublish.com/api/channels \
-H "Authorization: Bearer bp_your_key_here"
| Limit | Free | Pro | Business |
|---|---|---|---|
| Writes/min | 60 | 60 | 60 |
| Reads/min | 300 | 300 | 300 |
| Daily API requests | 100 | 5,000 | 50,000 |
| API keys | 1 | 5 | 10 |
| Recurring schedules | — | 10 | Unlimited |
See the rate limits guide for headers, backoff strategies, and best practices.
| Platform | Package | Install |
|---|---|---|
| Zapier | BulkPublish on Zapier | Search "BulkPublish" in Zapier |
| n8n | n8n-nodes-bulkpublish | Settings > Community Nodes > n8n-nodes-bulkpublish |
| Homebrew | homebrew-bulkpublish | brew tap azeemkafridi/bulkpublish && brew install bulkpublish |
| Resource | URL |
|---|---|
| Dashboard | app.bulkpublish.com |
| API Docs | app.bulkpublish.com/docs |
| Website | bulkpublish.com |
| [email protected] |
MIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"bulkpublish": {
"command": "npx",
"args": []
}
}
}