Vlozi Collections is a structured-content backend. You define the shape of a content type in the dashboard — a collection — then add individual records called entries, publish them, and render them on any website through a public read-only API or a drop-in script widget. There is no backend of your own to run, and no database to manage.
Collections is the display-oriented sibling of Vlozi Forms. Forms collects structured input from visitors; Collections publishes structured content that the site owner writes. Both are multi-tenant, tenant-scoped backends fronted by the Vlozi gateway.
Core concepts
Collection
A collection is a named content type with a fixed schema — for example Team Members,
Testimonials, Services, FAQ, or Hero Section. A collection lives inside one workspace
(tenant) and has a stable, per-tenant slug (e.g. team-members) that you can reference in code.
Cardinality: single vs many
| Cardinality | Meaning | Typical use |
|---|---|---|
single |
Exactly one entry | Whole-page regions — a hero banner, an About blurb, contact info |
many (default) |
A repeating list of entries | Team, testimonials, services, FAQ |
Cardinality is immutable after creation — collapsing several existing entries into one would be ambiguous, so it can't be changed later.
Collection schema
The schema is the list of field definitions that give an entry its shape. Each field has a
name, a type, and optional validation/label props. Because entries render on strangers' public
sites, schemas are validated and sanitized at write time — see Field types
for the full list and Security for how input is tamed.
{
"fields": [
{ "name": "name", "type": "text", "label": "Full name", "required": true },
{ "name": "photo", "type": "image", "label": "Headshot" },
{ "name": "role", "type": "select", "options": ["Engineer", "Designer", "Sales"] }
]
}Entry
An entry is one record in a collection — the actual content. An entry holds a data object
whose keys match the collection's field names. Every entry has a lifecycle:
| Status | Meaning |
|---|---|
draft |
Only visible to the workspace through the admin surface. Never served publicly. |
published |
Visible through the public API and the embed widget. |
Entries in a many collection also carry a manual sort order (drag-and-drop in the dashboard),
which drives the default render order everywhere.
Public vs administrative surfaces
Collections ships two very different surfaces, which matter for how you use it:
- Public read-only API (
/collections/c/…) — no authentication. Thecollection_idin the URL is the credential. Only published entries are served. This is what a website, or the embed widget, calls. - Admin REST + MCP (
/collections/admin/…,/collections/mcp/…) — JWT-authenticated for the seller dashboard and AI agents, guarded by role-based permissions.
What you get
- A graph of content types you fully control — field types, validation, relations between collections.
- Draft → publish workflow — author content without making it live until you're ready.
- Drop-in embed widget — plain
<script>markup that renders your published entries, no build step. - Public JSON API — fetch published entries from any language; optional relation resolution.
- Relations & groups — link a collection's entries to entries of another collection (self-reference allowed), and nest repeating sub-fields for complex data.
- Site synchronization — when published content changes, Vlozi's site-sync integration can rebuild your static site automatically.
TIP
Jump to the Quickstart to put your first collection on a website in a few minutes.