Skip to main content

BulkPublish Python SDK

Official Python SDK for the BulkPublish social media API. Automate publishing to 15 platforms — built for developers, scripts, AI agents, LLMs, and agentic workflows.

Installation

pip install bulkpublish

Requires Python 3.8+. Only dependency: httpx.

Quick Start

from bulkpublish import BulkPublish

bp = BulkPublish("bp_your_key_here")

# List connected social media channels
channels = bp.channels.list()

# Upload media
media = bp.media.upload("./photo.jpg")

# Schedule a post to multiple platforms
post = bp.posts.create(
    content="Hello from the BulkPublish API!",
    channels=[
        {"channelId": 1, "platform": "instagram"},
        {"channelId": 2, "platform": "x"},
    ],
    media_files=[media["file"]["id"]],
    scheduled_at="2026-04-10T09:00:00Z",
    timezone="America/New_York",
    status="scheduled",
)

Post Type Overrides

# Post a reel to Instagram
post = bp.posts.create(
    content="Check this out!",
    channels=[{"channelId": 1, "platform": "instagram"}],
    media_files=[media_id],
    post_type_overrides={"instagram": "reel"},
)

Built for Automation

BulkPublish is designed for programmatic social media management — no browser sessions, no UI, no OAuth flows at runtime. Connect your accounts once in the dashboard, then automate everything:

  • AI agents — Use with Claude (MCP server), GPT (function calling), LangChain, or any LLM that supports tool use
  • Cron jobs & scripts — Schedule content pipelines, RSS-to-social, blog-to-social workflows
  • Bulk operations — Upload a CSV, iterate, and schedule hundreds of posts programmatically
  • Analytics extraction — Pull engagement data into your own dashboards or AI analysis pipelines (check supportedMetrics before treating a 0 as a measurement — platforms report different subsets)

Async Support

import asyncio
from bulkpublish import AsyncBulkPublish

async def main():
    bp = AsyncBulkPublish("bp_your_key_here")
    channels = await bp.channels.list()
    post = await bp.posts.create(
        content="Async post!",
        channels=[{"channelId": 1, "platform": "x"}],
        status="draft",
    )

asyncio.run(main())

Available Resources

Resource Methods
bp.posts create, list, get, update, delete, publish, retry, approve, reject, bulk, queue_slot
bp.channels list, get, delete, health
bp.media upload, list, get, delete, get_labels, set_labels, create_multipart, complete_multipart, abort_multipart
bp.analytics summary, engagement, refresh, account
bp.labels list, create, update, delete
bp.schedules list, create, update, delete
bp.channel_sets list, create, update, delete — saved channel groups for one-click targeting
bp.rss_feeds list, create, update, delete — RSS/Atom autopost feeds (new items become posts; optional field_mapping controls caption template, media, truncation, per-channel overrides)

Every method has docstrings with usage examples — works great with IDE autocomplete and LLM code generation.

Supported Platforms

Facebook, Instagram, X (Twitter), TikTok, YouTube, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon

Resources

License

MIT

Metadata

Release files for bulkpublish 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bulkpublish 0.15.0
File Size Uploaded
bulkpublish-0.15.0.tar.gz 33.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bulkpublish 0.15.0
File Interpreter ABI Platform
bulkpublish-0.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 75.1 kB

Release files / bulkpublish-0.15.0.tar.gz

Download URL bulkpublish-0.15.0.tar.gz
Size 33.3 kB
Tags Source
SHA-256 checksum
How to use checksums
30458fdb9dfea6d2420359b8b598d6fea3e2364d65bb7cbf97d8c97891f50159
BLAKE2b-256 checksum
How to use checksums
59b1461c008c41b73d276c643ba672d5bf8b98aba24d7cb40e1ab9ee82f11814
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release files / bulkpublish-0.15.0-py3-none-any.whl

Download URL bulkpublish-0.15.0-py3-none-any.whl
Size 41.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f093f289380a578664cefb9117136f5e41f0c16cb126f877d7d15bbd1a7f2f9
BLAKE2b-256 checksum
How to use checksums
858b81c46e558dcf8919087fdc9fc394afaf45119fd368b31a378264b796d5a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

0.15.0 This release

2 release files

0.11.0

2 release files

0.4.2

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page