Tokens that expire at 3 a.m.
Access tokens are refreshed before they expire. If a network revokes access, the account is marked needs_reconnect and a webhook tells you, instead of tomorrow's post failing quietly.
6 networks available now · one API
Connect your accounts and publish across 6 social networks from one app or API. SendFlow refreshes tokens before they expire, retries without double-posting, and hands back a receipt from every network you post to.
Request
{
"content": "Spring drop is live →",
"publishNow": true,
"platforms": [
{ "platform": "twitter", … },
{ "platform": "linkedin", … },
{ "platform": "bluesky", … },
{ "platform": "discord", … },
{ "platform": "telegram", … }
]
}Idempotency-Key: 7f3c…e19a
Reliability
Access tokens are refreshed before they expire. If a network revokes access, the account is marked needs_reconnect and a webhook tells you, instead of tomorrow's post failing quietly.
Send the same Idempotency-Key twice and you get the original post back. The worker claims each due post atomically, so more replicas add throughput, not duplicates.
Every post returns a result per network, so a partial failure is visible. Webhooks are signed over timestamp and body, retried with backoff, and kept in a delivery history.
Channels
Every network has its own limits. The composer checks them as you type, against the same spec the API validates with, so a post is fixed before a network can refuse it.
Choose a platform, connect your account, and create your first post. Snapchat prepares a share link for you to finish posting on your phone.
App and API
The app holds no data of its own: every screen runs on the same public API your code calls. Click it in the app today, automate it tomorrow.
Spring drop is live: 40 new pieces, made in small batches. First come, first served → acme.studio/spring
curl -X POST https://social.acme.dev/v1/posts \ -H "Authorization: Bearer $SOCAPI_KEY" \ -H "Idempotency-Key: 7f3c…e19a" \ -d '{ "content": "Spring drop is live: 40 new…", "scheduledFor": "2026-11-04T09:00:00", "timezone": "Europe/Berlin", "platforms": [ { "platform": "twitter", "accountId": "acc_7Kd2p" }, { "platform": "linkedin", "accountId": "acc_Q1muv" }, { "platform": "bluesky", "accountId": "acc_m3Rx0" } ] }'
Self-host
Prefer to run it yourself? API keys, provider credentials, the database and uploaded media all stay in your deployment.
$ docker compose up # Postgres, migrations, the API, a separate # publisher worker and the app. Health and # readiness probes and JSON logs included.A Render blueprint ships too. Locally it is one script against SQLite.
Point an agent at the machine-readable docs and it can connect accounts and post, with idempotency keys keeping its retries safe.
Connect your social accounts, create a post, and choose when it goes out.