Skip to content
The reliability layer for social posting at scale

Nothing fails silently. Ever.

Know what went live, what failed, why it failed, and what Publishly did next — across every brand, client, location, and market you manage. Flat price. Unlimited accounts on every paid plan.

Start free · 50 successful posts · 5 accounts · no card

publishly api
$ curl -X POST https://your-publishly-host/public/v1/posts \ -H 'Authorization: YOUR_API_KEY' \ -H 'Idempotency-Key: launch-day-2026-08-14' \ -H 'Content-Type: application/json' \ -d '{"type":"schedule","date":"2026-08-14T18:00:00.000Z","shortLink":false,"tags":[],"posts":[{"integration":{"id":"ig_01"},"value":[{"content":"Launch day.","image":[]}],"settings":{"__type":"instagram","post_type":"post"}}]}' [{ "postId": "post_01HZX4", "integration": "ig_01" }] ↳ receipt: queued ↳ receipt: uploading ↳ receipt: sent (not success) ↳ receipt: confirmed_live ✓ instagram.com/p/DLm4… ↳ webhook: post.receipt { "specversion": "1.0", "id": "post.receipt:post_01HZX4:confirmed_live:1:76ab", "type": "post.receipt", "time": "2026-08-14T18:00:08.214Z", "data": { "postId": "post_01HZX4", "integrationId": "ig_01", "provider": "instagram", "stage": "confirmed_live", "attempt": 1, "providerPostId": "180450001", "providerUrl": "https://instagram.com/p/DLm4…", "confirmationMethod": "instagram_media_read", "evidence": { "mediaType": "IMAGE" }, "failureId": null } } $ curl -X POST …/public/v1/posts -H 'Idempotency-Key: new-drop-2026-08-14' -d '{…}' [{ "postId": "post_01HZX5", "integration": "ig_01" }] ↳ receipt: queued ↳ receipt: retrying — Instagram rate limit (rate_limited) ↳ webhook: post.failure { "specversion": "1.0", "id": "post.failure:post_01HZX5:retry:1:rate_limited", "type": "post.failure", "time": "2026-08-14T18:01:02.110Z", "data": { "postId": "post_01HZX5", "attempt": 1, "integrationId": "ig_01", "provider": "instagram", "willRetry": true, "failure": { "class": "recoverable", "code": "rate_limited", "reason": "Instagram asked us to slow down." } } } ↳ alert: sent — retry scheduled after 15 seconds ↳ retry: attempt 2 of 4 ↳ receipt: sent (not success) ↳ receipt: confirmed_live ✓ instagram.com/p/DLm5… ✓ explained, alerted, retried, confirmed live

One post succeeds. One hits a platform limit. Both tell you exactly what happened next.

Authorized connections through official platform APIs

InstagramFacebookTikTokYouTubeXThreadsLinkedInPinterestBlueskyMastodon+ additional integrations
Why this exists

You scheduled it. Your client noticed it never went live.

That is the worst way to learn a posting tool broke. The problem usually follows the same four steps.

01Schedulers fail silently

Most tools mark a post “scheduled” and move on. When it never lands, an agency finds out from the client — days later, mid-report.

02Tokens die on a timer

Platform connections do not last forever. Some common access tokens last about 60 days; others renew more often. When that renewal breaks quietly, scheduled posts can stop with it.

03Failures come with no reason

A red icon with no explanation isn’t status — it’s homework. You need the reason, whether it’s retryable, and what happens next.

04Per-profile pricing punishes growth

At 100 profiles the per-profile tools bill four figures a month. Winning more clients shouldn’t raise your software bill faster than your revenue.

At current monthly rates, 100 Ayrshare profiles work out to $1,228.30 and 30 Buffer Team channels cost $360. Publishly Growth is $99 a month with unlimited connected accounts. See the source-checked math.

What Publishly does instead

Every post ends with proof or a clear next step.

Publishly is the reliability layer for social posting at scale: every post gets proof, every failure gets a reason and a safe retry, and every paid plan includes unlimited accounts.

Quick answer

Publishly watches the delivery so your team does not have to. It confirms live posts, explains failed ones, retries temporary problems safely, warns about weak connections, and keeps one broken account from stopping the rest of your work.

01

Every post gets a delivery receipt

A post is only marked successful after Publishly confirms it is live. The receipt stores the result and the live link, separately for every account you chose.

02

Every failure gets a reason and an alert

You see what happened, what needs fixing, and whether Publishly will try again. Developers can send the same alert straight into their own software through a signed webhook.

03

Retries that never double-post

Short platform problems are retried safely. If Publishly cannot prove what happened, it stops and asks you to check instead of risking the same post appearing twice.

04

Expiring and disconnected accounts are caught early

Warnings start before a known connection expiry. If a connection dies, Publishly flags it, stops sending posts to that account, and keeps the rest of your calendar moving.

05

Flat pricing, unlimited accounts

Plans are sized by how much you post, not how many brand, client, or location accounts you manage. From 5 to 500 — same API, same flat price.

See exactly how failures are handled

Account health

You cannot watch 200 client and brand accounts. Publishly does.

See healthy connections, early token warnings, posts being retried, and accounts that need reconnecting in one view. Fix the small problem before it becomes a missed client post.

  • Warnings before expected token expiry
  • Disconnected accounts held back automatically
  • Healthy accounts keep publishing
  • A reason and next action beside every problem
Example workspace

Account health

Updated just now
186brand & client accounts
172healthy
8early warnings
4retrying now
2need reconnecting
Northline locations48 connected accounts
All scheduled posts on time
Healthy
Sunday Ledger brands12 connected accounts
2 connections need attention this week
Token warning
Field Notes channels64 connected accounts
Instagram rate limit · next try in 42s
Retrying
Harbor & Pine locations20 connected accounts
1 Facebook connection expired
Reconnect

Illustrative product preview · sample names and sample data

Flat pricing

Stop paying a tax on your own growth.

Pay for posts Publishly confirms as live. Failed and unconfirmed posts do not use your allowance. Every paid plan includes unlimited connected accounts.

Free

Try it on five accounts
$0 /month
  • 5 social accounts
  • Up to 50 confirmed-live posts / month
  • Failed and unconfirmed posts use no quota
  • Full receipts, failure reasons & account health
  • Disconnected-account alerts
  • 1 seat
  • API access
Start free

Starter

For growing teams
$29 /month
  • Unlimited social accounts
  • Up to 2,000 confirmed-live posts / month
  • Failed and unconfirmed posts use no quota
  • Full receipts, failure reasons & account health
  • Disconnected-account alerts
  • 1 seat
  • API access
  • Bulk CSV scheduling
Start 7-day trial

Growth

For multi-brand teams
$99 /month
  • Unlimited social accounts
  • Up to 15,000 confirmed-live posts / month
  • Failed and unconfirmed posts use no quota
  • Full receipts, failure reasons & account health
  • Disconnected-account alerts
  • Faster retry handling
  • Reliability SLA
  • 10 team members
  • API access
  • Bulk CSV scheduling
  • RSS auto-posting
Start 7-day trial

Scale

For agencies & media networks
$299 /month
  • Unlimited social accounts
  • Up to 100,000 confirmed-live posts / month
  • Failed and unconfirmed posts use no quota
  • Full receipts, failure reasons & account health
  • Disconnected-account alerts
  • Faster retry handling
  • Reliability SLA
  • 50 team members
  • API access
  • Bulk CSV scheduling
  • RSS auto-posting
Start 7-day trial

From 5 brand or client accounts to 500 — same posting rules, same flat price. Compare every plan and run the calculator.

Works with your tools

Use Publishly in the way your team already works.

Use the app, connect a visual workflow, or add reliable social posting to your own product. Every route ends with the same proof and the same failure alerts.

Straight answers

How do I know when a scheduled post fails?

Publishly alerts you as soon as it knows. The post shows a plain-English reason, one of 20 documented error codes, and whether it will be tried again. Developers can receive the same information inside their own product through a signed webhook.

What counts as a successful post?

A request being accepted is not enough. Publishly marks a destination successful only after it confirms that the post is live and stores the public link in its delivery receipt.

Can Publishly warn me before a social connection expires?

Yes. Publishly checks connection health and warns before expected token expiry. If a connection stops working, that account is held back and the rest of your brands, clients, and locations keep publishing.

Does Publishly charge for every account?

No. Paid plans are based on how many posts are successfully delivered each month. Every paid plan includes unlimited connected accounts. The free plan includes 50 successful posts across 5 accounts.

Can I use Publishly inside my own software?

Yes. The posting API, status checks, delivery events, n8n package, Make package, and MCP server all use the same posting and safety rules as the Publishly app.

Find the broken connection first.

Start free. Schedule one real post. Keep the receipt.