Plans and limits
Use this reference to understand how UniPost plans affect API behavior: monthly post quotas, active scheduled backlog, media retention, platform access, and the errors your integration should handle.
This is the developer reference. For buyer-facing plan comparison, price cards, and upgrade decisions, open the full pricing page.
Plan behavior
The public pricing page explains who each plan is for. This table focuses on the behavior your application sees when it calls the API.
| Plan | Posts/month | Quota behavior | Active scheduled | API behavior |
|---|---|---|---|---|
| Free | 100 | Hard cap | 50 | Dashboard + API. Publishing to X is not available on Free. |
| API | 1,000 | Soft overage | Unlimited | Dashboard + API + MCP, all 9 platforms including X, read-only Analytics API. |
| Basic | 2,500 | Soft overage | Unlimited | Adds Inbox, full Analytics, and one shared custom platform slot. |
| Growth | 7,500 | Soft overage | Unlimited | Adds Hosted Connect branding and Platform Credentials across supported platforms. |
| Team | Unlimited | Unlimited | Unlimited | Adds RBAC, per-member API keys, audit log, unlimited profiles and members. |
| Enterprise | Custom | Contract | Unlimited | SLA, dedicated support, security review, and contract flexibility. |
Usage limits
Free workspaces enforce hard limits. Paid self-serve plans are designed to keep production integrations running while usage is reviewed.
- Monthly post quota
- Free stops accepting new publish requests after 100 posts/month. API, Basic, and Growth use soft overage: posting continues for now, with usage warnings and upgrade guidance instead of surprise billing.
- Active scheduled posts
- Free workspaces can hold up to 50 undeleted parent posts in scheduled status. Published, failed, partial, draft, and cancelled posts do not count toward this cap.
- Paid scheduling
- API, Basic, Growth, Team, and Enterprise do not cap active scheduled backlog.
- Safety caps
- Each connected account still has a daily platform-safety ceiling. Failed posts do not count toward these safety caps.
Media retention
UniPost keeps media while a post can still need it. Cleanup starts only after the parent post reaches a final status, and reused media is deleted only after all post usages for that media are due.
| Plan | After success | After failed, partial, or cancelled |
|---|---|---|
| Free | 1 day | 2 days |
| API | 2 days | 4 days |
| Basic | 4 days | 8 days |
| Growth | 15 days | 30 days |
| Team | 30 days | 60 days |
| Enterprise | 30 days | 60 days unless your contract says otherwise |
Scheduled posts keep their media.R2 cleanup is driven by UniPost post state, not by object age. Scheduled, draft, queued, publishing, and processing posts keep uploaded media until they finish.
API errors to handle
Plan limits surface as normalized API errors. Your integration should branch on normalized_code, not only on the human-readable message.
| Scenario | HTTP | Normalized code | Where it appears |
|---|---|---|---|
| Free monthly post quota exceeded | 402 | plan_limit_exceeded | POST/v1/posts |
| Free active scheduled backlog exceeded | 402 | plan_scheduled_post_limit_exceeded | POST/v1/posts |
See Create post errors for response examples and the scheduled-post idempotency behavior.
Changing plans
Upgrades take effect immediately and prorate. Downgrades take effect at the start of the next billing cycle. Plan changes do not invalidate API keys or disconnect social accounts.