API overview
Base URL, versioning, SDKs
Everything OpenPost does in the UI is also available through a versioned REST API. The API is JSON-in, JSON-out, authenticated with a workspace-scoped Bearer token. If you can make an HTTP request, you can automate your publishing.
Base URL
https://api.openpost.so/v1
Versioning
URL path (/v1). Breaking changes ship a new /v2.
Transport
HTTPS only. TLS 1.2+
Content type
application/json
Timezones
All timestamps are ISO 8601 UTC
Rate limit
300 req/min per workspace (same on all plans)
Upload caps
1 GB video, 30 MB image. Schedule up to 180 days out.
Quick example
curl -X POST https://api.openpost.so/v1/posts \
-H "Authorization: Bearer $OP_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Hello world from the OpenPost API",
"platforms": ["twitter", "bluesky"],
"schedule_at": "2026-05-01T14:00:00Z"
}'
{
"id": "3a6f1e9e-4c2b-4a1d-9e3a-112233445566",
"status": "scheduled",
"scheduled_at": "2026-05-01T14:00:00Z",
"platforms": ["twitter", "bluesky"]
}
Platforms vs integrations
platforms— the platform names of the accounts you’ve connected in your workspace (twitter, bluesky, linkedin, and so on). Integrations are the underlying connected accounts; list them with GET /v1/integrationsto see what’s available.Platforms currently live
Recipes
Copy-paste starting points for the most common workflows. Swap $OP_KEY for your own key. See per-platform fields for the full set of platform-specific options.
Schedule a tweet with a reply restriction
curl -X POST https://api.openpost.so/v1/posts \
-H "Authorization: Bearer $OP_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Shipping v2 in 24 hours.",
"platforms": ["twitter"],
"schedule_at": "2026-05-01T14:00:00Z",
"platform_settings": {
"twitter": { "who_can_reply": "following" }
}
}'
Post to X and Bluesky at once
curl -X POST https://api.openpost.so/v1/posts \
-H "Authorization: Bearer $OP_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Launching today.",
"platforms": ["twitter", "bluesky"],
"platform_overrides": {
"bluesky": "Launching today on Bluesky too!"
}
}'
Start here
Authentication
API keys, Bearer tokens, test vs live modes
Rate limits
Quotas, headers, and how to handle 429s
Errors
Error shape, status codes, retry rules
Pagination
Cursor-based list endpoints
Resources
Posts
Create, schedule, update, cancel, group
Integrations
Connected channels and time slots
Analytics
Per-post metrics, ranges, exports
Media
Pre-signed S3 upload flow
Notifications
List events, mark read, subscribe
Webhooks
Signed event deliveries with retries
SDKs
Official SDKs are coming soon. For now, any HTTP client works — the API is plain JSON over HTTPS.