📡 Content API

The Content API provides full CRUD operations for your CMS entries. It supports filtering, sorting, field projection, and real-time webhooks. All endpoints are versioned and served over HTTPS.

GET /api/v2/content

Retrieve a paginated list of content entries matching the provided filters. Supports soft deletes, draft/published states, and custom field querying.

curl https://api.flowcms.io/v2/content \n  -H "Authorization: Bearer $FLOW_API_KEY" \n  -H "Content-Type: application/json" \n  -d '{
    "status": "published",
    "limit": 20,
    "sort": { "createdAt": "desc" },
    "fields": ["id", "title", "slug", "author"]
  }'
const response = await fetch('https://api.flowcms.io/v2/content', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${FLOW_API_KEY}`,
    'Accept': 'application/json'
  }
});

const data = await response.json();
console.log(data.entries);
import requests

response = requests.get(
    "https://api.flowcms.io/v2/content",
    headers={"Authorization": f"Bearer {FLOW_API_KEY}"},
    params={
        "status": "published",
        "limit": 20,
        "sort[createdAt]": "desc"
    }
)

entries = response.json()["entries"]

Query Parameters

Name Type Required Description
status string No Filter by entry status: draft, published, archived, or trashed
limit integer No Number of entries to return (max: 100). Default: 20
offset integer No Number of entries to skip for pagination. Default: 0
sort[field] string No Sort direction: asc or desc. Supports nested fields.
fields[] array No Specify which fields to return to reduce payload size.
filter[field]=value string No Filter entries by custom field values. Supports operators: gt, lt, contains, in
200 OK
{
  "entries": [
    {
      "id": "entry_8xK2mP9vL",
      "title": "Getting Started with FlowCMS",
      "slug": "getting-started",
      "status": "published",
      "author": {
        "id": "usr_7hN3qR2wT",
        "name": "Alex Chen",
        "email": "alex@flowcms.dev"
      },
      "createdAt": "2025-01-15T08:30:00Z",
      "updatedAt": "2025-01-18T14:22:00Z"
    }
  ],
  "meta": {
    "total": 142,
    "limit": 20,
    "offset": 0,
    "hasMore": true,
    "nextCursor": "eyJpZCI6ICJlbnRyeV84eEsybVA5dkwifQ=="
  }
}
POST /api/v2/content

Create a new content entry. Returns the created entry with all populated fields. Draft entries are assigned a unique slug automatically if omitted.

curl -X POST https://api.flowcms.io/v2/content \n  -H "Authorization: Bearer $FLOW_API_KEY" \n  -H "Content-Type: application/json" \n  -d @payload.json
{
  "title": "Advanced Querying Guide",
  "slug": "advanced-querying",
  "status": "draft",
  "authorId": "usr_7hN3qR2wT",
  "fields": {
    "category": "developers",
    "featuredImage": "media_9xL4pQ1wN",
    "excerpt": "Learn how to build complex queries..."
  }
}
© 2025 FlowCMS, Inc. All rights reserved. API Status: Operational