BulkPublish
Enables publishing posts and threads with image media to the Bluesky platform, including scheduling and analytics capabilities.
Supports publishing posts and stories with images and videos to Facebook, including scheduling, draft management, and engagement analytics.
Provides integration with Google Business Profile for publishing posts, events, and offers with images, plus analytics tracking.
Enables publishing feed posts, reels, stories, and carousels with images and videos to Instagram, including support for collaborators and scheduling.
Supports publishing posts and threads with images and videos to Mastodon instances, with scheduling and retry capabilities.
Enables publishing pins with images and videos to Pinterest, including board selection and scheduling options.
Supports publishing posts, threads, and quote posts with images and videos to Threads, with full scheduling and analytics support.
Enables publishing videos and photo slideshows to TikTok, with privacy settings and scheduling capabilities.
Supports publishing videos and shorts to YouTube, accepting various video formats including MP4, MOV, WebM, AVI, WMV, and FLV.
BulkPublish API
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",
)Why BulkPublish?
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.
Headless by design — No browser, no UI, no OAuth pop-ups at runtime. Connect accounts once in the dashboard, then automate everything via API.
AI-native — MCP server for Claude, tool definitions for GPT and LangChain, structured JSON responses that LLMs parse reliably.
Agentic-ready — Deterministic API with clear error codes. AI agents can create posts, check status, retry failures, and read analytics autonomously.
11 platforms, one endpoint — Facebook, Instagram, X/Twitter, TikTok, YouTube, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon.
Use Cases
AI social media managers — Let Claude, GPT, or custom agents schedule and publish posts autonomously
Content pipelines — RSS-to-social, blog-to-social, newsletter-to-social automation
Bulk scheduling — Upload a CSV or feed a content calendar and schedule weeks of posts programmatically
Cross-platform syndication — Publish once to all platforms with per-platform content optimization
Analytics dashboards — Pull engagement data into your own tools, spreadsheets, or AI analysis
Zapier/n8n/Make alternatives — Direct API access without middleware, lower latency, more control
LLM-powered content creation — Generate content with AI, publish it with BulkPublish, track performance, iterate
Quick Start
1. Sign up
Create a free account at app.bulkpublish.com.
2. Get your API key
Go to Settings > Developer in the dashboard and create an API key. Keys start with bp_ and are shown only once — save it securely.
3. Connect platforms
Connect your social accounts in the dashboard under Channels. The API uses your connected channels to publish.
4. Install an SDK
Python
pip install bulkpublishNode.js
npm install bulkpublishOr call the REST API directly with curl, fetch, requests, or any HTTP client.
5. Make your first API call
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"
}'AI Agent Integration
MCP Server (Claude, Cursor, Windsurf, Claude Code)
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.
LLM Tool Use / Function Calling
Ready-made tool definitions for autonomous AI agents:
Claude tool_use example — Anthropic SDK with tool definitions for scheduling posts
OpenAI function calling example — GPT-4 with functions for post management
LangChain tool example — LangChain agent with BulkPublish tools
All examples are complete, runnable scripts with error handling.
Code Examples
Create a Post
from bulkpublish import BulkPublish
bp = BulkPublish("bp_your_key_here")
post = bp.posts.create(
content="Check out our latest update!",
channels=[
{"channelId": 1, "platform": "facebook"},
{"channelId": 2, "platform": "x"},
{"channelId": 3, "platform": "linkedin"},
],
status="draft",
)import { BulkPublish } from 'bulkpublish';
const bp = new BulkPublish({ apiKey: 'bp_your_key_here' });
const post = await bp.posts.create({
content: 'Check out our latest update!',
channels: [
{ channelId: 1, platform: 'facebook' },
{ channelId: 2, platform: 'x' },
{ channelId: 3, platform: 'linkedin' },
],
status: 'draft',
});Schedule a Post
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",
)Upload Media and Publish
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",
)Automation Example: Bulk Schedule from CSV
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.
Features
11 platforms — Facebook, Instagram, X/Twitter, TikTok, YouTube, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon
Scheduling — Schedule posts for any future time with timezone support, or let queue slots pick optimal times
Media uploads — Images (JPEG, PNG, WebP, GIF) and videos (MP4, MOV, WebM) up to 100 MB
Recurring schedules — Repeat posts daily, weekly, biweekly, or monthly with cron expressions
Analytics — Track impressions, likes, comments, shares, and engagement across all platforms
Webhooks — Get notified when posts are published, fail, or are scheduled
Labels — Organize posts and media with color-coded labels
Bulk operations — Delete or retry multiple posts in a single request
Threads — Multi-part thread posts for X, Threads, Bluesky, and Mastodon
Auto first comment — Automatically add a comment after publishing on any platform
Per-platform content — Customize text and options per platform in a single post
Platform-specific options — Instagram collaborators, TikTok privacy, YouTube categories, Pinterest boards, and more
API Reference
Full interactive API documentation: app.bulkpublish.com/docs
Base URL
https://app.bulkpublish.comAuthentication
Authorization: Bearer bp_your_key_hereCore Endpoints
Method | Endpoint | Description |
|
| Create a post (draft, scheduled, or immediate) |
|
| List posts (paginated, filterable by status/date/channel/label) |
|
| Get a post with platform statuses and metrics |
|
| Update a draft or scheduled post |
|
| Delete a post |
|
| Publish a draft immediately |
|
| Retry failed platforms |
|
| Bulk delete or retry |
|
| List connected social media channels |
|
| Check channel token health |
|
| Upload a media file (multipart) |
|
| List uploaded media |
|
| Analytics summary for a date range |
|
| Engagement data grouped by day/week/month |
|
| Create a recurring schedule |
|
| Create a webhook for event notifications |
|
| Check current plan limits and usage |
See the OpenAPI spec for the complete endpoint list.
Supported Platforms
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 |
SDKs
Python
pip install bulkpublishSupports sync and async. Rich docstrings on every method for IDE and LLM consumption.
Node.js / TypeScript
npm install bulkpublishFull TypeScript types, zero dependencies, native fetch (Node 18+).
REST API
No SDK needed — any HTTP client works:
curl https://app.bulkpublish.com/api/channels \
-H "Authorization: Bearer bp_your_key_here"Rate Limits
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 |
Webhooks | — | 5 | 10 |
Recurring schedules | — | 10 | Unlimited |
See the rate limits guide for headers, backoff strategies, and best practices.
Guides
Authentication — API keys, authorization, key management
Scheduling — Scheduled posts, queue slots, recurring schedules, timezones
Media Uploads — File uploads, supported formats, using media in posts
Platform Options — Per-platform configuration and quirks
Webhooks — Real-time event notifications, payloads, signature verification
Rate Limits — Burst limits, daily quotas, best practices
Links
Resource | URL |
Dashboard | |
API Docs | |
Website | |
License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/azeemkafridi/bulkpublish-api'
If you have feedback or need assistance with the MCP directory API, please join our Discord server