webCOMAND

Contentful, Contentstack, GraphCMS, Kentico Cloud, webCOMAND

Headless CMS Comparison - API

API

The APIs vary quite a bit between services.  Here is what they all have in common.

  • Web Access - Access to published and draft content via HTTPS web requests.
  • Queries - Ability to query content based on certain field values and conditions.
  • JSON Results - Results are delivered in JSON.
  • Images - Serve and process images to resize and otherwise transform image assets.
  • Workflow - Ability to query against published/production or draft/staging content.
  • Manage Content - Ability to programmatically create, update and delete content entries.

API Queries

One important consideration is how queries are communicated to each API.  REST APIs can be awkward and limiting for anything more than basic queries to retrieve a content entry or paginated list of entries based on basic filters.  GraphQL helps address some issues, but the current GraphQL APIs still have significant short-comings, especially when compared to SQL.

API Contentful Contentstack GraphCMS Kentico Cloud webCOMAND
Query Languages REST, GraphQL REST, GraphQL GraphQL REST cQL, cPath
    Create Support REST REST GraphQL REST Web Service
    Read Support REST, GraphQL REST, GraphQL GraphQL REST Web Service
    Update Support REST REST GraphQL REST Web Service
    Delete Support REST REST GraphQL REST Web Service
Select Specific Fields
 

 

 

 

 
Query with AND/OR logic
GraphQL only

 

 

 

 
Relationship Depth no limit 1 no limit no limit no limit
Nested Conditions
GraphQL only

 
Query Linked Content
Query Expressions
Query Functions
Query Localization
=, != (missing !=)
<, <=, >, >=
IN, NOT IN, ANY (missing NOT)
All, Not All (missing NOT)
CONTAINS, NOT CONTAINS (with regex) (missing NOT) (with LIKE)
STARTS/ENDS WITH (with regex) (with LIKE)
LIKE (with regex)
ILIKE (case-insensitive)
RLIKE / REGEX
BETWEEN / Range (with and) (with and) (with and)
EXISTS / ISNULL
Full Text Search
(All Fields)
Full Text Search
(Specific Fields)
Location (near)
Location (rectangle)
Location (radius)
LIMIT/OFFSET
ORDER BY ★★★★★
 
★★★☆☆
(only one field)
★★★★★
 
★★★☆☆
(only one field)
★★★★★
 
Aggregation (count, min, max, concat) ☆☆☆☆☆
 
☆☆☆☆☆
 
★★☆☆☆
(count)
☆☆☆☆☆
 
★★★★★
 
Manage Assets
Manage Content Types
Manage Users
Manage User Roles
Define User Roles
Webhooks □ (programmable)
CDN Hosting
Total Score ★★★★ ★★★☆☆ ★★☆☆☆ ☆☆☆☆ ★★★★

Contentful - API

Contentful organizes programmatic access to content and features into the following APIs.

  • Content Delivery (REST) - A read-only API to deliver content to apps, websites and other media as JSON data, images, videos and other media files.
  • Content Management (REST) - A read/write API to add, update and delete content.
  • Content Preview (REST) - Similar to Content Delivery, except that it will retrieve draft content, instead of just published content.  Useful for previewing content in a staging environment before publishing to production.
  • Images (REST) - Serves, transforms and optimizes images.
  • GraphQL (in beta) - A read-only GraphQL interface to similar functionality provided by the Content Delivery and Content Preview APIs, plus enhanced query capabilities.
  • Sync API (REST) - Initially retrieves all content in a space and then subsequent content changes (aka “deltas”) to keep an external copy of a space, optionally restricted to certain content types.
contentful-api.png
  • Query Languages - REST, GraphQL (read-only).
  • Read Support - All of the REST APIs and the GraphQL API are used to access content and assets.
  • Create Support - New content entries can be created via the REST Content Management API.
  • Update Support - Existing content entries can be updated via the REST Content Management API.
  • Delete Support - Existing content entries can be removed via the REST Content Management API.
  • Query with AND/OR Logic - Supported by the GraphQL API, but not by the REST APIs.
  • Nested Conditions - Supported by the GraphQL API, but not by the REST APIs.
  • Query Expressions - Expressions like WHERE Width*Height<MaxPixels are not supported by any of the APIs.
  • Query Functions - Functions like DATEADD() and SUBSTR() are not supported.
  • Comparison Options - all, in, nin, exists, match, gt, gte, lt, lte, ne, near, within
  • Aggregation - Aggregation is not currently supported to gather count, min, max of queried top-level- or sub-content.
  • Assets & Content - Assets and Content are managed via the REST Content Management API.
  • Schema & Users - Content Types, Users and User Roles are managed via the REST Content Management API.

Contentstack - API

Contentstack organizes programmatic access to content and features into the following APIs.

  • Content Delivery (REST) - Read-only to fetch content.
  • Content Management (REST) - Read-write to create/edit/delete entries and assets, manage content types, etc.
  • GraphQL Content Delivery (in alpha) - A read-only GraphQL interface to similar functionality provided by the Content Delivery API, plus enhanced capabilities.
  • Image Delivery (REST) - Read-only API to retrieve and manipulate images to deliver modified images, including resize, crop, trim, modify device pixel ratio, change quality, etc.
  • Change Log -  Lists all changes and upgrades introduced in Contentstack APIs.
contentstack-api.png
  • Query Languages - REST, GraphQL (read-only).
  • Read Support - All of the REST APIs and the GraphQL API are used to access content and assets.
  • Create Support - New content entries can be created via the REST Content Management API.
  • Update Support - Existing content entries can be updated via the REST Content Management API.
  • Delete Support - Existing content entries can be removed via the REST Content Management API.
  • Query with AND/OR Logic - Supported by the REST and GraphQL APIs.
  • Nested Conditions - Supported by the REST and GraphQL APIs.
  • Query Expressions - Expressions like WHERE Width*Height<MaxPixels are not supported by any of the APIs.
  • Query Functions - Functions like DATEADD() and SUBSTR() are not supported.
  • Comparison Options - in, nin, exists, regex, gt, gte, lt, lte, ne
  • Aggregation - Aggregation is not currently supported to gather count, min, max of queried top-level- or sub-content.
  • Assets & Content - Assets and Content are managed via the REST Content Management API.
  • Schema & Users - Content Types, Users and User Roles are managed via the REST Content Management API.  The API is extensive and supports almost any operation you may want to perform on your account, stack and content.  The only missing feature seems to be defining User Roles through the API.

GraphCMS - API

GraphCMS has a single GraphQL API.  It supports both read (query) and write (mutation) operations.  The documentation mentions a "Management API" and that it supports the creation and modification of projects and models, there is no further information.

  • GraphQL - A read/write API to deliver and update content.
graphcms-api.png
  • Query Languages - GraphQL.
  • Read Support - The GraphQL API is used to access content and assets.
  • Create Support - New content entries can be created via the GraphQL API.
  • Update Support - Existing content entries can be updated via the GraphQL API.
  • Delete Support - Existing content entries can be removed via GraphQL API.
  • Query with AND/OR Logic - Supported by the GraphQL API.
  • Nested Conditions - Supported by the GraphQL API.
  • Query Expressions - Expressions like WHERE Width*Height<MaxPixels are not supported.
  • Query Functions - Functions like DATEADD() and SUBSTR() are not supported.
  • Comparison Options - equals, not, in, not_in, gt, gte, lt, lte, starts_with, ends_with, contains
  • Aggregation - Aggregation is supported to gather count for relationships, but min, max and others are not available.
  • Assets & Content - Content is managed via the GraphQL API.  Assets can not be managed via API.
  • Schema & Users - Management of Models, Users and User Roles is not currently supported via API.

Kentico Cloud - API

Kentico Cloud organizes programmatic access to content and features into the following APIs.

  • Delivery API - Read-only access to content from your web applications and digital devices.
  • Content Management API - Manage and publish content in Kentico Cloud.
  • Custom Elements API - JavaScript API to implement custom elements and use methods.
  • Recommendation API - Provide personalized content recommendations to your users.
kentico-cloud-api.png
  • Query Languages - Custom REST filters.
  • Read Support - The Delivery and Content Management APIS can access content and assets.
  • Create Support - New content entries can be created via the REST Content Management API.
  • Update Support - Existing content entries can be updated via the REST Content Management API.
  • Delete Support - Existing content entries can be removed via the REST Content Management API.
  • Query with AND/OR Logic - Not currently supported.
  • Nested Conditions - Not currently supported.
  • Query Linked Content - The APIs can not filter on linked content.
  • Query Expressions - Expressions like WHERE Width*Height<MaxPixels are not supported by any of the APIs.
  • Query Functions - Functions like DATEADD() and SUBSTR() are not supported.
  • Comparison Options - equals, gt, gte, lt, lte, range, in, contains, any, all (suprisingly, NOT is missing).
  • Aggregation - Aggregation is not currently supported to gather count, min, max of queried top-level- or sub-content.
  • Assets & Content - Assets and Content are managed via the REST Content Management API.
  • Schema & Users - Content Types, Users and User Roles are managed via the REST Content Management API.  The API is extensive and supports almost any operation you may want to perform on your account, stack and content.  The only missing feature seems to be defining User Roles through the API.

webCOMAND - API

While the other services mostly support GraphQL, only webCOMAND provides a query language with capabilities similar to SQL, including capabilities critical to some projects and tasks:

  • expressions - WHERE A + B < C
  • functions - DATEDIFF(), IF(), ISNULL(), LENGTH(), ROUND(), etc.
  • aggregates - AVG(), COUNT(), GROUP_CONCAT(), MIN(), MAX(), SUM()

Another unique difference is that content types, fields, users and other system configuration is managed as content, which means it can be queried and modified via the API just like content.  So, there is no need to learn additional API end points, and it supports type introspection (access the schema of an entry as part of a query).

webcomand-api.png
  • Query Languages - cQL and cPath
  • Read Support - The Get Web Service is used to access content and assets.
  • Create Support - The Put Web Service is used to create content and assets.
  • Update Support - The Put Web Service is used to update content and assets.
  • Delete Support - The Delete Web Service is used to delete content and assets.
  • Query with AND/OR Logic - Supported by cQL and cPath.
  • Nested Conditions - Supported by cQL and cPath.
  • Query Expressions - Expressions like WHERE Width*Height<MaxPixels are supported.
  • Query Functions - Functions like DATEADD() and SUBSTR() are supported.
  • Comparison Options - =, !=, >, >=, <, <=, %, IN, NOT IN, LIKE, ILIKE, RLIKE, ISNULL
  • Aggregation - COUNT, MIN, MAX, AVG, GROUP_CONCAT are supported.
  • Assets & Content - Assets and Content are managed with the Web Services API.
  • Schema & Users - Content Types, Users and other settings are managed with the Web Services API.

More Posts

November 19, 2018
What is a Content Database?
Adding context to build smarter apps and content creations.
Content is application data with relevant context. For example...
August 6, 2018
Choosing a Headless CMS that Grows With You
Five features to look for in a Headless CMS
There are many ingredients that make a successful web development company...
May 21, 2019
Content Modeling Standard
A standard way to communicate content models that isn't specific to a product or implementation.