API Overview
The FlowCMS REST API provides programmatic access to your content. Create, read, update, and delete entries, manage content types, and automate workflows with predictable resource-oriented URLs and standard HTTP response codes.
All API responses return JSON. Request bodies must be sent as `application/json`. The API supports standard CORS headers and gzip compression.
Authentication
Access the API using your personal or team API key. Keys can be generated in the Settings → API Keys section of your dashboard.
Include your API key in the `Authorization` header using the Bearer scheme:
Authorization: Bearer your_api_key_here
Key Scopes
| Scope | Access Level |
|---|---|
read | View entries and content types |
write | Create and update entries |
admin | Full access including deletion |
Rate Limits
API requests are limited based on your plan. When you exceed the limit, you'll receive a 429 Too Many Requests response. Limits reset per minute.
| Plan | Requests/min | Burst |
|---|---|---|
| Starter | 100 | 10 |
| Professional | 1,000 | 50 |
| Enterprise | Custom | Custom |
Endpoints
| Parameter | Type | Description |
|---|---|---|
content_type | string | Filter by content type slug |
limit | integer | Number of results (max 100) |
offset | integer | Pagination offset |
sort | string | Sort field (e.g., -created_at) |
{
"data: [
{
"id: "ent_8x2k9d0p1q,
"title: "Welcome to FlowCMS,
"status: "published,
"created_at: "2025-01-15T08:30:00Z
}
],
"meta: {
"total: 142,
"has_more: true
}
}
| Field | Type | Description |
|---|---|---|
content_type | string | Slug of the target content type |
title | string | Entry title (max 255 chars) |
fields | object | Key-value pairs matching schema |
status | string | draft or published |
{
"content_type: "blog_post,
"title: "Getting Started with FlowCMS,
"fields: {
"body: "Welcome to our guide...
,
"tags: ["cms, "tutorial],
"author_id: "usr_9m2x7
}
}
Returns an array of all content types defined in your workspace, including their schemas and field definitions.
{
"data: [
{
"id: "ct_blog_post,
"slug: "blog_post,
"fields: [
{ "name: "title, "type: "text },
{ "name: "body, "type: "rich_text }
]
}
]
}
Removes the specified entry. This action is irreversible and requires admin scope.
{
"success: true,
"message: "Entry permanently deleted
}
Error Handling
FlowCMS uses standard HTTP status codes and returns detailed error objects to help you debug issues quickly.
| Code | Meaning | Resolution |
|---|---|---|
400 | Bad Request | Check request body format and required fields |
401 | Unauthorized | Verify API key and permissions |
403 | Forbidden | Key lacks required scope |
404 | Not Found | Resource or path doesn't exist |
422 | Unprocessable | Validation failed (see `errors` array) |
429 | Rate Limited | Wait and retry with exponential backoff |