Introduction to FlowCMS
FlowCMS is a modern, headless Content Management System designed for developers and content teams who need flexibility, speed, and scalability. Built with an API-first approach, FlowCMS lets you manage content in one place and deliver it anywhere — websites, mobile apps, IoT devices, and more.
What is FlowCMS?
FlowCMS separates content from presentation. Instead of being tied to a specific template engine or frontend framework, FlowCMS exposes your content through powerful REST and GraphQL APIs. This means you can build any frontend with any technology stack while FlowCMS handles content creation, organization, and delivery.
Key Features
Headless Architecture
API-first content delivery with REST and GraphQL. Connect to any platform, device, or framework.
AI-Powered Workflows
Automated content generation, SEO scoring, intelligent tagging, and smart recommendations.
Visual Builder
Drag-and-drop content creation with a WYSIWYG editor. No code required for content teams.
Enterprise Security
SOC 2 compliant, RBAC, SSO/SAML, audit logs, and encryption at rest and in transit.
Multi-Language
Manage content in 50+ languages with full translation workflows and localization support.
Edge CDN Delivery
Global content delivery with 200+ edge locations. Sub-50ms API response times worldwide.
System Architecture
FlowCMS follows a decoupled architecture with three main components:
- Content Store — Your content is stored in a distributed, versioned database with real-time sync and rollback capabilities.
- API Layer — REST and GraphQL endpoints serve content with caching, rate limiting, and query optimization.
- Delivery Network — Edge-optimized CDN ensures your content is delivered globally with minimal latency.
Quick Start Guide
Get FlowCMS up and running in minutes. This guide walks you through installing FlowCMS, creating your first content model, and making your first API request.
Prerequisites
- Node.js 18+ installed
- npm or pnpm package manager
- A FlowCMS account (sign up free)
Installation
Install the FlowCMS CLI
Install the FlowCMS command-line tool globally:
# Using npm npm install -g @flowcms/cli # Or using pnpm pnpm add -g @flowcms/cli # Verify installation flowcms --version
Initialize Your Project
Create a new FlowCMS project in your working directory:
# Create a new project flowcms init my-website # Navigate into the project cd my-website # Install dependencies npm install
Start the Local Server
Run the development server with hot-reload:
flowcms dev # Server running at # ➜ Local: http://localhost:3000 # ➜ Admin: http://localhost:3000/admin # ➜ API: http://localhost:3000/api/v1
Create Your First Content Model
Define a content type using the FlowCMS schema file:
// flowcms.schema.js import { defineType } from '@flowcms/schema'; export const post = defineType({ name: 'post', label: 'Blog Post', fields: [ { name: 'title', type: 'string', required: true, validations: [ { max: 200 } ] }, { name: 'slug', type: 'slug', from: 'title', required: true }, { name: 'body', type: 'richText', required: true" }, { name: 'coverImage', type: 'media', mediaType: ['image'] }, { name: 'tags', type: 'relation', to: 'tag', multiple: true }, { name: 'publishedAt', type: 'datetime', isPublishDate: true } ] });
Fetch Content via API
Retrieve your content using the FlowCMS API:
import { createClient } from '@flowcms/client'; const cms = createClient({ spaceId: 'your-space-id', apiKey: process.env.FLOWCMS_API_KEY, environment: 'preview' // or 'master' }); // Fetch all published posts const posts = await cms.getEntries({ contentType: 'post', status: 'published', limit: 10, order: '-publishedAt' }); console.log(`Found ${posts.total} posts`);
Installation
FlowCMS can be installed as a managed cloud service, self-hosted instance, or via Docker. Choose the option that best fits your needs.
Cloud (Managed Service)
The easiest way to get started. No installation required — just create an account and start building.
- Go to app.flowcms.io and create your account
- Create a new space from the dashboard
- Use your space credentials to connect via SDK or API
Self-Hosted (Docker)
Run FlowCMS on your own infrastructure:
# Pull the latest image docker pull flowcms/core:3.2 # Run with docker-compose docker compose up -d # Access at http://localhost:3000
Requirements
| Component | Minimum | Recommended |
|---|---|---|
| Node.js | 18.0 | 20.x LTS |
| Database | PostgreSQL 14 | PostgreSQL 16 |
| RAM | 512 MB | 2 GB |
| Disk | 10 GB | 50 GB SSD |
Configuration
FlowCMS can be configured via environment variables, a config file, or the admin dashboard.
Environment Variables
| Variable | Type | Default | Required | Description |
|---|---|---|---|---|
| FLOWCMS_SPACE_ID | string | — | Required | Your unique space identifier |
| FLOWCMS_API_KEY | string | — | Required | API key for authentication |
| FLOWCMS_ENV | string | development |
Optional | Environment: development | staging | production |
| FLOWCMS_PORT | number | 3000 |
Optional | Port for the development server |
| FLOWCMS_DB_URL | string | sqlite::memory: |
Optional | Database connection string |
| FLOWCMS_RATE_LIMIT | number | 1000 |
Optional | API requests per minute per IP |
Config File
Create a flowcms.config.js file in your project root:
export default { spaceId: process.env.FLOWCMS_SPACE_ID, apiKey: process.env.FLOWCMS_API_KEY, env: process.env.FLOWCMS_ENV || 'development', server: { port: 3000, cors: true, rateLimit: 1000 }, preview: { enabled: true, webhookSecret: process.env.WEBHOOK_SECRET }, seo: { autoGenerate: true, sitemaps: true, robots: true } };
FLOWCMS_API_KEY to version control. Always use environment variables or a secrets manager.
API Reference Overview
FlowCMS exposes a comprehensive REST API and a GraphQL API for content management and delivery. All API responses are in JSON format and support pagination, filtering, sorting, and field expansion.
Authentication
FlowCMS uses API keys for authentication. Include your key in the Authorization header:
GET /api/v1/spaces/:spaceId/entries Host: api.flowcms.io Authorization: Bearer fc_live_xxxxxxxxxxxxxxxx Content-Type: application/json
FlowCMS provides two types of API keys:
| Key Type | Prefix | Access Level | Use Case |
|---|---|---|---|
| Publishable | fc_live_ / fc_test_ |
Read-only | Frontend content delivery |
| Secret | fc_secret_ |
Full CRUD | Admin operations, CI/CD |
?environment=preview to query the preview environment and access draft content.
Response Format
All API responses follow a consistent envelope structure:
{