Production publish log through October 10, 2026 · Implementation audit August 14, 2026
SchedulePost platform capability matrix
SchedulePost has direct-publishing code for six networks. Its production log shows sustained successful publishing to four of them (Instagram, YouTube, Facebook and TikTok) and only a single test publish each for Threads and X. Adapter presence is still not the same as a successful publish, and platform approval, account type, permissions, tokens and API changes can block a post, so this page reports what actually happened and how often it failed.
Production publish log by network
Counts come from SchedulePost's own production database (the per-network result of each publish attempt), January 20 to October 10, 2026. “Published” means the network's API accepted the post and, where noted, returned a post ID. It is not an independent re-check of every post on the network. Download the figures as CSV.
| Network | Published (post ID returned) | Failed | Last 90 days: published / failed | Accounts · channels | First → last publish | Reading |
|---|---|---|---|---|---|---|
| 464 (464) | 39 | 202 / 1 | 2 · 3 | 2026-01-27 → 2026-10-10 | Sustained, low recent failure | |
| YouTube | 341 (341) | 8 | 211 / 3 | 2 · 3 | 2026-01-20 → 2026-10-10 | Sustained, low recent failure |
| TikTok | 161 (161) | 8 | 145 / 2 | 2 · 2 | 2026-01-20 → 2026-10-10 | Sustained, low recent failure |
| 308 (308) | 134 | 152 / 51 | 1 · 2 | 2026-04-01 → 2026-10-10 | Works; 1 in 4 of the last 90 days' attempts failed, almost all before the Aug 26 upload fallback | |
| Threads | 1 (1) | 2 | 0 / 0 | 1 · 0 | 2026-03-11 → 2026-03-11 | Single test publish; not sustained |
| X | 1 (0) | 1 | 0 / 0 | 1 · 0 | 2026-02-08 → 2026-02-08 | Single publish without a returned post ID; not verified |
Limits of this evidence: the log covers two SchedulePost accounts, so it shows the publishing paths work in production but not how a typical new account will fare. A failed result stays recorded as failed unless the same post is retried. Facebook failures are the largest problem in the 90-day window: 131 of the 134 all-time failures were "Facebook Reel upload failed", the last on August 25, 2026, the day a direct-upload fallback shipped. Since August 26 the production database shows 1 Facebook failure against roughly 135 published, a figure measured after the fix and still short. Rate-limit, permission and media errors are all counted together here.
Implementation audit
The table below is the August 14 code audit. Its last column now points to the log above instead of “needs account test”.
| Network | Connection route | Publisher implementation | Automated test evidence | Production log (Oct 10) |
|---|---|---|---|---|
| Implemented OAuth callback | Image/video publishing path | Dedicated publisher tests present | Sustained (464 published) | |
| TikTok | Implemented OAuth callback | Video and photo direct-post/status polling paths | Dedicated publisher tests present | Sustained (161 published) |
| YouTube | Implemented OAuth callback | Video upload path with privacy fields | Dedicated publisher tests present | Sustained (341 published) |
| Implemented OAuth callback | Publishing path present | No dedicated publisher test found in this audit | Works; 25% failed in the last 90 days, mostly before the Aug 26 fix (308 published) | |
| Threads | Implemented OAuth callback | Publishing path present | No dedicated publisher test found in this audit | Single test publish only (1) |
| X | Connection handled outside the five callback files | Media publishing path present | No dedicated publisher test found in this audit | Not verified (1 publish, no post ID) |
Network × post-type contract
“Implemented” below means automated direct-publishing code exists; it does not mean a fresh production account accepted the post. SchedulePost does not substitute reminder-only notifications for any row.
| Network | Text only | One video | One image | Carousel | Repository limit | Last checked |
|---|---|---|---|---|---|---|
| Unsupported | Implemented as Reel | Implemented | Implemented: images or videos | 20 items | 2026-08-14 | |
| TikTok | Unsupported | Implemented: direct post or draft upload | Implemented as photo post | Implemented: images only | 1 video or 35 images; no mixed carousel | 2026-08-14 |
| YouTube | Unsupported | Implemented | Unsupported | Unsupported | Exactly 1 video | 2026-08-14 |
| Implemented | Implemented as Reel | Implemented | Implemented: images only | 10 images | 2026-08-14 | |
| Threads | Implemented | Implemented | Implemented | Implemented: images and/or videos | 20 media items; 500-character text slice | 2026-08-14 |
| X | Implemented | Implemented | Implemented | Implemented: images only | 1 video or 4 images; 512 MB media ceiling | 2026-08-14 |
Evidence paths: src/server/publish/index.ts, the six adapters under src/server/publish/ and src/server/x-api.ts, plus src/components/post-composer/mediaConstraints.ts. YouTube, TikTok, and Instagram publisher behavior has dedicated adapter tests; other rows are implementation-inspected and remain live-test gated.
What “supported” means here
- Implemented: the repository routes a connected account to network-specific publishing code.
- Automated evidence: repository tests exercise a publisher without proving the external platform accepted a production post today.
- Production-logged: an authorized account published through SchedulePost and the network API accepted the post, recorded in the production log above. “Sustained” means hundreds of accepted publishes over months with a returned post ID for each.
- Independently re-checked on the network: a person confirmed the live post on the platform. This has not been done systematically for every logged publish.
Failure, retry, and media behavior
The repository tracks published, partial, and failed final states; records per-platform results; supports retry from sent-post history; and includes a publishing heartbeat/reaper path for interrupted jobs. Media validation has network-specific branches for TikTok, YouTube, Instagram, and Facebook. These controls reduce silent failure but do not guarantee delivery.
Account, upload, and plan boundaries
- A SchedulePost account and an authorized platform connection are required. Network-specific account eligibility, app review, scopes, and channel permissions still apply.
- Direct upload accepts video or image MIME types and enforces a 512 MB service upload ceiling. The composer accepts MP4, MOV, WebM, JPEG, PNG, and WebP; its safe video baseline is MP4 with H.264 video and AAC audio.
- Videos must be at least 360 × 360 pixels and one second long. The composer warns about aspect ratio and short-form classification; TikTok's creator-info response can impose a lower account-specific maximum duration and block publishing.
- Batch scheduling is limited in code to 50 items. No paid tier, universal connected-account quota, or retention promise was found in the audited public contract, so this page does not invent one.
- SchedulePost sends direct API publication requests. Notifications report results or failures; they are not a reminder-only fallback publishing mode.
Verification still outstanding (Threads and X)
Threads and X have only one logged publish each and no recent successful publishes. Use this protocol before relying on them:
- Connect one authorized test account per network and record account/profile type and granted scopes.
- Publish the same rights-cleared vertical MP4 with a unique caption and no optional network-only features.
- Record queued time, API response, returned post ID/URL, visible publication time, and any transformation.
- Repeat as a scheduled post, then force one recoverable failure to confirm error and retry behavior.
- Date each successful row; downgrade it when scopes, API versions, or implementation change.
Buffer comparison boundary
Buffer's official pricing page currently says its Free plan allows three channels and ten scheduled posts per channel, and that some Instagram, TikTok, and YouTube workflows may use reminder notifications. The production log supports four networks, not six, and Facebook failed often before an August 2026 fix and has only about six weeks of data since, so SchedulePost should not be described as more reliable than Buffer. Its possible advantage is the number of channels on a free plan, which depends on current limits. See Buffer's current pricing and capability table.
Corrections
This is an implementation audit, not a platform endorsement. Send a reproducible correction to hello@fulinlabs.com. Open SchedulePost or read the product overview.