CMS
CMS overview
Field types, value formats, and the schema rules behind the CMS collection and entry endpoints.
The CMS API manages the same collections and entries you see under CMS in the dashboard, so a backend service, automation, or data pipeline can keep them up to date.
A collection is a schema: a named set of fields. An entry is one record in a collection, with values keyed by field ID.
Collections
Create, read, update, and delete collection schemas.
Entries
Create, read, update, and delete records inside a collection.
Field types
| Field type | JSON value |
|---|---|
text | String |
number | Finite number |
boolean | Boolean |
date | Date string in YYYY-MM-DD format |
timestamp | ISO 8601 timestamp with an offset, such as 2026-08-10T09:30:00Z |
url | Absolute URL string |
select | The value of one active option |
asset | Asset object |
group | Object keyed by the group's sub-field IDs |
Set repeated to true on a field to store an ordered array of that type
instead of a single value:
{
"authors": [
{ "name": "Ada Lovelace", "profile_url": "https://example.com/authors/ada" },
{ "name": "Grace Hopper", "profile_url": "https://example.com/authors/grace" }
]
}Asset values
An asset value is an object. assetId, url, and type are required, and
type must be image or video. Upload a file with the files
endpoint to get one.
{
"assetId": "stored-asset-id",
"url": "https://example.com/image.jpg",
"type": "image",
"source": "storage",
"name": "Hero image",
"alt": "Product dashboard",
"thumbnail": "https://example.com/image-thumbnail.jpg",
"width": 1600,
"height": 900
}source is optional and may be pexels, unsplash, storage, or vimeo.
Field IDs
SuperFunnel generates field IDs from field labels and normalizes them to
lowercase identifiers such as published_at. When an identifier is already in
use, a numeric suffix is added to make it unique.
You cannot choose a field ID
Field IDs are derived from labels, and a request that tries to supply one is
rejected with 400. Read the generated IDs from the collection object after
creating it, and key your entry values by those.
Once a field exists, its ID, its type, its repeated setting, and the
sub-fields of a group cannot be changed. Only the label, the required flag,
and the options of a select field can be updated.
Schema history
Collections keep deleted fields and select options with a status of deleted,
so existing entries retain the schema they were written against. Only fields and
options with status: "active" accept new values.
A collection must always keep at least one active field, and can hold between 1 and 50 fields. Group fields support one level of sub-fields — a sub-field cannot itself be a group, and cannot be repeated.
Validation is strict
Entry values are checked against the active schema on every write. Unknown
field IDs and values of the wrong type return 400 rather than being ignored.