# Postiz

Self-hosted social scheduler for 30+ networks with a public API, an in-repo MCP server, and an agent CLI.

Open-source social media scheduling platform that publishes to X, LinkedIn, Instagram, TikTok, YouTube, Reddit, Bluesky and more from one calendar. The Builder ships a documented public API, an MCP server inside the monorepo, a Node SDK, and a separate postiz-agent CLI aimed at coding agents. Self-hosting is free under AGPL; the hosted service is paid.

Alternative to: Buffer, Hootsuite

- Capabilities: adaptable, operable
- Vertical: content-publishing
- Shape: business-app
- Form factor: web-app
- Execution model: hybrid
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/gitroomhq/postiz-app (AGPL-3.0), 35402 stars, last commit 2026-09-02
- Last activity: 2026-09-02
- Page: apps/gitroomhq--postiz-app.html
- JSON: apps/gitroomhq--postiz-app.json

## Use it when

- I run social for a few brands and want a Buffer I own, with my agent posting through an API
- I need one calendar that publishes to a dozen networks and I do not want per-channel pricing

## Gotchas

- AGPL-3.0: network use of a modified copy triggers source disclosure
- Every network needs your own developer app; Meta and TikTok apps require platform review before you can post for other accounts
- Public API is rate limited to 90 create-post calls per hour by default; self-hosters raise it with API_LIMIT
- On the hosted service the API is on paid plans only
- Requires PostgreSQL, Redis, and Temporal; the stack is heavier than a single container

## Editions

- Self-hosted: Free, open source
  - source: https://github.com/gitroomhq/postiz-app
  - container: docker compose up -d
- Standard: $29 per month, closed source
  - hosted: https://postiz.com/pricing
- Team: $39 per month, closed source
- Pro: $49 per month, closed source
- Ultimate: $99 per month, closed source

## Adaptable: make it yours

Effort: config-only (23 things to edit)

Copy .env.example, set database, Redis, JWT, and public URLs, then add a client ID and secret for each network you want to publish to. STORAGE_PROVIDER switches local vs Cloudflare R2; API_LIMIT raises the per-hour API cap; IS_GENERAL and the POSTIZ_OAUTH_* vars swap the login provider. No code changes needed to run it as your own scheduler.

- Env vars: DATABASE_URL, REDIS_URL, JWT_SECRET, FRONTEND_URL, NEXT_PUBLIC_BACKEND_URL, BACKEND_INTERNAL_URL, STORAGE_PROVIDER, API_LIMIT, IS_GENERAL, OPENAI_API_KEY, X_API_KEY, LINKEDIN_CLIENT_ID, FACEBOOK_APP_ID, THREADS_APP_ID, YOUTUBE_CLIENT_ID, TIKTOK_CLIENT_ID, PINTEREST_CLIENT_ID, REDDIT_CLIENT_ID, DISCORD_CLIENT_ID, MASTODON_URL, POSTIZ_GENERIC_OAUTH
- Config files: .env, docker-compose.yaml
- Prompt files: none
- Accounts you'll need: developer app on each social network (Meta, TikTok, Google, X, LinkedIn, Reddit, Pinterest, Discord); Cloudflare R2 (optional storage); OpenAI (optional AI features)

## Operable: what an agent can drive

Operability: official. Interface: api at https://docs.postiz.com/public-api (published by the builder, both).

### Reach (partial coverage)

- Create and schedule posts: reachable. docs.postiz.com/public-api: Posts endpoint creates, schedules, and publishes
- Publish to Instagram: reachable. public API platform list includes Instagram; needs your own Meta app approval
- Publish to TikTok: reachable. public API platform list includes TikTok; TIKTOK_CLIENT_ID in .env.example
- Publish to YouTube: reachable. public API platform list includes YouTube; YOUTUBE_CLIENT_ID in .env.example
- Upload media before posting: reachable. public API Upload endpoint
- List and manage connected channels: reachable. public API Integrations endpoint
- Pull analytics: not reachable. README lists analytics; public API docs cover only posts, integrations, upload
- Team comments and collaboration: not reachable. not in public API docs
- Generate posts, images, or videos with AI: undetermined. hosted plans meter AI images and videos; not documented in public API
- Buy or exchange posts in the marketplace: not reachable. README feature; not in public API docs

## Code stack

- Languages: TypeScript
- Frameworks: Next.js, NestJS, Prisma, Temporal
- Package manager: pnpm
- Database: PostgreSQL, Redis
- Hosting target: docker-compose, any Node host

## Model stack

- Providers: OpenAI (optional)
- Models: none
- Keys you need (names only): OPENAI_API_KEY
- Prompts live in: none
- Tools: none

## Evidence and confidence

- formFactor: README tech stack: Next.js frontend, NestJS backend, run with docker compose (confidence 0.95)
- executionModel: scheduler is deterministic; OPENAI_API_KEY in .env.example and 'many AI features' in README (confidence 0.6)
- operability: public API at docs.postiz.com/public-api; MCP server file libraries/nestjs-libraries/src/chat/start.mcp.ts (server name 'Postiz MCP'); gitroomhq/postiz-agent CLI (440 stars, pushed 2026-09-01), all from the same org (confidence 0.9)
- effort: .env.example names 90+ variables; README says hosted and self-hosted are the same product (confidence 0.9)
- editions: postiz.com/pricing: Standard $29, Team $39, Pro $49, Ultimate $99 per month; FAQ says self-hosting is free (confidence 0.85)
- active: pushedAt 2026-09-02; 265 open issues
- provenance: long-running project with sponsors and contributors; no vibe-coded claim (confidence 0.7)
- reach:  (confidence 0.7)

## Open questions

- Enumerate the MCP server's tool list from start.mcp.ts; only the server name was confirmed
- Does the hosted MCP endpoint require a paid plan like the API does?
- postiz-agent license shows NOASSERTION on GitHub; confirm

## Sources

- https://github.com/gitroomhq/postiz-app (sourcing:content-publishing:github)
- https://docs.postiz.com/public-api (analysis:content-publishing)
- https://postiz.com/pricing (analysis:content-publishing)
- https://github.com/gitroomhq/postiz-agent (analysis:content-publishing)
