Skip to content
Menu
Who it is for Founders Writers and editors Developers Agents What is inside Blog Knowledge base Custom content Media Releases Webhooks
Customers Pricing Docs

Content your team can run.

A headless CMS with the blog and knowledge base already built, and an API your developers will not fight.

Already built
Blog and help centre
Your images
In your own bucket
Price today
Free, no card
The ZevContent dashboard editing a case study, showing labelled fields, a date picker, a toggle and a link picker

Start from a template, not a blank page.

The sections a site actually has, already modelled. Pick one, rename a field, start writing.

The new content type screen in ZevContent, showing ready-made templates for a homepage hero, testimonials, pricing plans, services, features and a call to action

Built for agents

An API that explains itself.

An MCP server exists to translate for an API that cannot describe itself. This one can, so an agent reads the project and starts working in a single request.

What an agent can do
No MCP server
Nothing to install, host or keep in step with the API.
One call, whole model
Types, fields, response shapes, routes and events.
Errors that teach
A refusal names the fields that would have worked.
Keys with a limit
Scope an agent to one project and an expiry it can read.
introspection
$ curl -H "Authorization: Bearer sk_live_…" \
  https://api.zevcontent.net/v1/introspection

{
  "types": [
    { "slug": "case-study", "kind": "collection",
      "fields": [
        { "key": "title",   "type": "text",     "required": true },
        { "key": "cover",   "type": "image"     },
        { "key": "sector",  "type": "select"    },
        { "key": "related", "type": "reference" }
      ] }
  ],
  "endpoints": [ "GET /v1/content/case-study", … ],
  "events":    [ "entry.published", "release.published", … ]
}

Your content, in your stack, in four lines.

REST and JSON with a bearer token. There is no client library to learn and no build step to add, so this is the whole integration.

app/blog/page.tsx
const res = await fetch(
  'https://api.zevcontent.net/v1/blog/articles',
  {
    headers: { Authorization: `Bearer ${process.env.ZEVCONTENT_KEY}` },
    next: { revalidate: 60 },
  },
);
const { data } = await res.json();

export default function Blog() {
  return data.map((a) => <article key={a.id}>{a.title}</article>);
}
src/pages/blog.astro
---
const res = await fetch(
  'https://api.zevcontent.net/v1/blog/articles',
  { headers: { Authorization: `Bearer ${import.meta.env.ZEVCONTENT_KEY}` } },
);
const { data } = await res.json();
---
{data.map((a) => <article>{a.title}</article>)}
pages/blog.vue
const { data } = await useFetch(
  'https://api.zevcontent.net/v1/blog/articles',
  { headers: { Authorization: `Bearer ${config.zevcontentKey}` } },
);

// <article v-for="a in data.data" :key="a.id">{{ a.title }}</article>
+page.server.ts
export async function load({ fetch }) {
  const res = await fetch(
    'https://api.zevcontent.net/v1/blog/articles',
    { headers: { Authorization: `Bearer ${ZEVCONTENT_KEY}` } },
  );
  const { data } = await res.json();
  return { articles: data };
}
any terminal
curl "https://api.zevcontent.net/v1/blog/articles" \
  -H "Authorization: Bearer $ZEVCONTENT_KEY"

# Filter, sort and page the same way:
curl "https://api.zevcontent.net/v1/content/product\
?where[category]=ent_QYa7&sort=-price&limit=20" \
  -H "Authorization: Bearer $ZEVCONTENT_KEY"

Anything that can make an HTTP request works, including the ones not listed. See the API reference.

Questions

What does ZevContent cost?

It is free while we are in beta, with no card required to start. Paid plans arrive when we ship them, and existing projects will not be cut off without notice.

Where are my images stored?

In your own object storage bucket, not ours. ZevContent holds the connection and signs uploads; the files stay in a bucket you own on ZevCloud, Amazon S3, Cloudflare R2, or any S3-compatible store. If you use ZevCloud you can connect a bucket in two clicks without handling a key.

Do I have to build a blog schema myself?

No. A blog and a knowledge base are built in, with articles, authors, categories, tags, SEO fields and rich text already modelled. Custom content types are for the things that are specific to your product, not for rebuilding a blog for the fifth time.

Can an AI agent set up a project on its own?

Yes, and without an MCP server or any other adapter. GET /v1/introspection returns the whole map in one request: every content type with its fields, the exact response shape of each one, every endpoint, every webhook event, and the relationships between types. Writes go through the same REST surface a website reads from. Errors name the fix rather than the failure, so an agent corrects itself without a human reading the docs.

How do writers publish without breaking the site?

Roles decide it. A writer edits and saves drafts but cannot publish. An editor publishes. A developer changes the structure. Nobody is shown a button their role would refuse.

Can I change the content model without breaking what is live?

Releases. Build the new structure and content in a release, point a preview deployment at it, then promote it in one atomic step. Readers see the old version, then the new one, never half of each.

How does my site know when something changes?

Signed webhooks, nineteen events covering entries, content types, media and releases. Every delivery is an HMAC over the raw body, and every event names its subject and the path to re-fetch, so you invalidate one page rather than dropping a whole cache.

Is there a way to link content without hardcoding URLs?

Yes, and it is the fix for menus that break. A link field stores the id of a blog article, category, author, or knowledge base entry, and resolves the current title and slug on every read. Rename the category and every menu that points at it follows.

Start with a project and a key.

Free while we are in beta. Paid plans when we ship them, and never a surprise bill.