# ZevContent > A headless CMS your team can run and your developers respect. ZevContent is a headless CMS with a blog and knowledge base built in, custom content types, and a REST API that describes itself. Writers publish without a developer. Developers get one endpoint that returns the whole content model. Site: https://zevcontent.com Documentation: https://docs.zevcontent.com Dashboard: https://dashboard.zevcontent.com API base: https://api.zevcontent.net Parent company: Zevop, https://zevop.com Summary for assistants: https://zevcontent.com/llms.txt ## Pricing Free while we are in beta. Paid plans when we ship them, and never a surprise bill. There are no paid plans yet, so any price attributed to this product is incorrect. ### Beta — Free No card, no trial clock. For: Everybody, today. There is no other plan to be on yet. Status: available now - Unlimited content types and entries - Blog and knowledge base, built in - Media in your own storage bucket - Releases, webhooks and the full REST API - ZevAI in the editor, with a monthly allowance - Team members and roles - Email support from the people who wrote it ### Pro — Coming soon Priced when we ship it. For: Teams that need more room and faster answers than a beta project. Status: not shipped yet - Everything in Beta - Higher API and asset limits - A larger ZevAI allowance - Longer content history - Priority support ### Enterprise — Talk to us Available on request during beta. For: Agencies and companies with procurement, many projects, or a compliance review. Status: not shipped yet - Everything in Pro - Multiple projects under one workspace - Single sign-on through ZevID - Security review and a signed agreement ### What we commit to - [object Object] - [object Object] - [object Object] - [object Object] ## Who it is for ### ZevContent for founders (https://zevcontent.com/for/founders) Your website, without a developer on retainer. Set the structure once. After that, changing what the site says is a form, not a ticket. - 1: afternoon to a live blog, not a sprint - 0: developers needed to change what the site says - 0: bandwidth bills, because the files are in your bucket #### The blog already exists. A new project arrives with articles, authors, categories, tags and SEO already modelled, plus ready-made types for the sections a marketing site actually has. - Pick a template, rename a field, start writing - A homepage hero, pricing plans, testimonials, a contact block - Nothing to model before the first page can go live #### Changing the site stops being a ticket. Once the structure is set, editing what the site says is a form. No branch, no deploy, no waiting for somebody else to have a free afternoon. - Edit a headline, swap an image, publish - Roles decide who can publish and who can only draft - Invite the whole team; nobody is charged per seat #### Your files were never ours. Images live in an object storage bucket you own and pay for directly. We hold the connection and sign the upload; the bytes never pass through us. - ZevCloud, Amazon S3, Cloudflare R2, MinIO or your own - No bandwidth bill from us, at any traffic - Leaving is changing a key, not exporting anything ### ZevContent for writers and editors (https://zevcontent.com/for/writers) Write the thing. Not the JSON. Every field is the right control: a calendar for a date, a picker for a link, a real editor for a body. - 0: ids, slugs or URLs you will ever type by hand - 2: roles: one writes, one publishes - 1: click between a draft and the live page #### A real editor, not a text box. Headings, quotes, lists, links and images, with the controls where you expect them. What you write is what the site renders. - Formatting that survives the round trip to the site - Images placed inline, with alt text beside them - Everything about the post in one panel, not five screens #### Every field is the right control. A calendar for a date. A searchable list for a link. A toggle for a yes or no. Nobody types an id, and nobody can paste a URL that breaks when a page is renamed. - Link to an article by its title, not its address - Rename a category and every menu pointing at it follows - Required fields say so before you try to publish #### Drafts are safe, and publishing is deliberate. Save as often as you like. The site keeps serving the published version until somebody with permission decides otherwise. - An entry with unpublished edits says which fields differ - Schedule a date and it goes live then, not early - No publish button appears for a role that cannot publish ### ZevContent for developers (https://zevcontent.com/for/developers) One endpoint returns the whole model. REST and JSON with a bearer token. No client library, no build step, no query language to learn. - 1: request returns every type, field, route and event - 0: SDKs to install or keep in step with a schema - 19: signed webhook events, each naming the path to re-read #### Work on the next version without touching this one. A release is a full copy of the project: types, fields, entries and every link between them. Build the next structure inside it, point a preview deployment at it, and promote when it is right. - Preview a release with one query parameter - Promotion is atomic; no reader sees half of each - One event fires when it lands, so a cache knows #### It describes itself, so you never guess. One introspection call returns the whole contract: every content type and field, the exact response shape of each one, every endpoint and every webhook event. It is generated from the same definitions the API serves, so it cannot drift. - Filter and sort on any field the type declares - A refused request names the fields that would have worked - Publishable keys locked to an origin, secret keys for servers #### Structure is yours to shape. Fourteen field types, references between entries, and links that store an id rather than a URL. Define it in the dashboard or push it through the schema endpoint from your own repository. - Singletons for a page, collections for everything else - References resolved one level deep on read - Ask any entry what points at it before you delete it ### ZevContent for agents (https://zevcontent.com/for/agents) An API that explains itself. An MCP server translates for an API that cannot describe itself. This one can. - 0: MCP servers to install, host or keep in sync - 1: call to learn the entire project - 1: project a key can be scoped to, with an expiry it can read #### Read the whole project in one call. An MCP server exists to translate for an API that cannot describe itself. This one can, so an agent starts working from the response instead of from a wrapper somebody has to maintain. - Every content type, field and response shape - Every endpoint and every webhook event - Generated from what the API actually serves #### The same surface a website reads from. Define types, create entries, upload media and publish, all through the REST API. There is no second, weaker interface for automation. - Create and change content types from a script - Create, update and publish entries - Every refusal names what would have worked instead #### Keys that know when they end. Scope an agent to one project with a session key that expires in days rather than years, and reports its own expiry so it can stop cleanly rather than fail halfway through a task. - Session keys expire; service keys do not - One project per key, never a whole workspace - Revoke one without touching anything else ## What it ships ### Blog (https://zevcontent.com/products/blog) A blog you do not have to model. Articles with authors, categories, tags, excerpts, rich text and SEO fields, ready on day one. - Scheduled publishing: Set a date and it goes live then. Nothing fires early. - Related posts: By category or tag, resolved server side. - Release independent: An article is live or it is not, in every version of your site. - SEO resolved for you: Titles, descriptions and canonical URLs come back with the article. - 12: fields on every article, before you add one - 0: schemas to write to have a blog - 1: call returns the article, its author and its SEO 1. It is already there: A new project has articles, authors, categories and tags on day one. Nothing to model, nothing to migrate later. 2. Write and publish: A writer saves drafts. An editor publishes, or schedules a date and walks away. 3. Read it from anywhere: One request returns the article with its author, category, tags and SEO already resolved. Q: Can I move an existing blog into it? A: Yes. Articles, authors, categories and tags all have write endpoints, so a migration is a script that reads your old store and posts to ours. Publish dates can be backdated, so archive posts keep their original date. Q: Can a writer schedule a post and walk away? A: Yes. Set a future publish date and the article goes live then. Nothing fires early, and the article stays invisible to the public API until the moment it does. Q: What happens to a post when I change my content model? A: Nothing. The blog is release-independent, so an article is either live or it is not, in every version of your site. Changing custom content types does not touch it. ### Knowledge base (https://zevcontent.com/products/knowledge-base) A help centre that stays navigable. Collections and sections with explicit ordering, a tree endpoint for navigation, and helpful votes per article. - Built for depth: Two levels of grouping, so fifty articles do not become one flat list. - One call for the whole tree: Render a sidebar without a request per node. - Was this helpful: Vote tallies per article, deduplicated by reader. - Reviewed dates: Mark an article reviewed so stale pages are findable. - 2: levels of grouping, so fifty pages stay findable - 1: call renders the whole sidebar - 0: plugins to install for helpful votes 1. Group it twice: Collections hold sections, sections hold articles. Fifty pages stay navigable instead of becoming one flat list. 2. Order it by hand: Drag articles into the order that teaches best. Alphabetical is almost never the right order for a help centre. 3. Render the sidebar in one call: One request returns the whole structure, so navigation is not a round trip per node. Q: How deep can the structure go? A: Two levels: collections hold sections, sections hold articles. That is deliberate. Three levels of nesting is where help centres become impossible to navigate and impossible to maintain. Q: Can I control the order articles appear in? A: Yes, by hand. Alphabetical is almost never the right order for a help centre, so ordering is explicit and drag-and-drop. Q: How do I know which pages have gone stale? A: Every article carries a reviewed date and a running tally of whether readers found it helpful, so the pages that need attention are the ones you can sort to the top. ### Custom content (https://zevcontent.com/products/custom-content) Model the things only you have. Singletons for a homepage or settings. Collections for anything there are many of. - Fourteen field types: Text, rich text, images, galleries, dates, choices, booleans, numbers, references, links. - Links that survive a rename: Point at an article or category by id. The slug resolves on every read. - Reference other entries: A product has a category. A page has a menu. Resolved one level deep. - Filter and sort: On any field the type declares, validated against the schema. - 14: field types, each with the right control - 2: kinds of type: one of a thing, or many - 6: things a link field can point at safely 1. Start from a template: A homepage hero, pricing plans, testimonials, a contact block. Rename a field or delete one, then keep going. 2. Choose singleton or collection: One of a thing, or many of a thing. That is the only structural decision there is. 3. Fill it in like a form: A calendar for a date, a picker for a link, a real editor for a body. Nobody types an id. Q: What is the difference between a singleton and a collection? A: A singleton is one of a thing: your homepage hero, your contact details. A collection is many of a thing: case studies, services, team members. That is the only structural decision you have to make. Q: Can one entry point at another? A: Yes. A reference field points at another entry and resolves it one level deep on read, so a product can carry its category without you fetching twice. Q: What happens if I rename something a menu points at? A: The menu follows. A link field stores an id, not a URL, and the current title and slug are resolved on every read. Renaming a category cannot break a navigation built on one. ### ZevAI (https://zevcontent.com/products/zevai) A second pair of eyes on the draft. Rewrite a sentence, change the tone, proofread a page. Every suggestion is shown as a change you accept or reject. - Nothing changes without a yes: Suggestions arrive as tracked edits, old struck through and new highlighted. Take them one at a time or all at once. - Eleven things it does: Improve, four tones, shorten, expand, simplify, summarise, translate, or just ask. - Off until you turn it on: The workspace owner decides who gets it. A new member has it off unless they were given it. - A monthly allowance, not a meter: Actions are counted against your plan and stop there. Nothing is billed past it. - 11: things it does, from four tones to a plain translation - 0: words changed without somebody accepting them - 1: switch per member, held by the workspace owner 1. Turn it on for the people who need it: The workspace owner grants ZevAI per member, on an invite or afterwards. Nobody gets it by default. 2. Select, or ask for the whole page: Highlight a sentence and pick what to do with it, or run proofread and rewrite across a whole article. 3. Read the changes, then decide: Every suggestion arrives as a tracked edit. Accept the ones that help, reject the rest, and nothing else moves. Q: Does it edit my content on its own? A: No. Every suggestion is shown as a change against what you wrote, with the old text struck through and the new text highlighted. Nothing is saved until you accept it, and rejecting leaves the draft exactly as it was. Q: Is my content used to train anything? A: No. Your text is sent to ZevAI to answer the request you made, and is not kept for training. ZevAI runs on infrastructure we operate, not a consumer chat product. Q: What happens when the monthly allowance runs out? A: ZevAI stops until the allowance resets on the first of the month, and tells you how many are left before you spend the last one. Nothing is billed past your plan. Q: Can I stop a particular person using it? A: Yes. It is granted per member by the workspace owner, on the invite or at any time after, and can be taken back the same way. A member without the grant never sees the controls. Q: Does it work on any field, or only articles? A: Any rich text field, in any content type: a blog article, a knowledge base page, or a custom type you defined yourself. Summaries and SEO titles and descriptions can also be generated from what a page already says. ### Media (https://zevcontent.com/products/media) Images stay in storage you own. ZevContent holds the connection and signs the upload. The files never touch us. - Any S3 compatible store: ZevCloud, Amazon S3, Cloudflare R2, MinIO, or your own. - Two clicks on ZevCloud: Pick a bucket. No key to copy, no CORS rule to write. - Straight from the browser: Uploads go direct to your bucket with a signed request. - Alt text and dimensions: Measured on upload, returned with every image. - 5: storage providers, including your own - 0: bytes of yours pass through us - 0: bandwidth we can ever bill you for 1. Connect a bucket you own: ZevCloud, Amazon S3, Cloudflare R2, MinIO, or anything S3 compatible. On ZevCloud it is two clicks and no key to copy. 2. Upload straight from the browser: ZevContent signs the request; the bytes go to your bucket without passing through us. 3. Read the URL back: A public bucket returns a permanent URL. A private one returns a signed URL and the moment it expires. Q: Do my images go through ZevContent? A: No. We hold the connection and sign the upload; the bytes travel from the browser straight to your bucket. We never store or serve your files. Q: What happens to my images if I leave? A: Nothing. They are already in a bucket you own, under keys you can list. Leaving means changing a key, not exporting anything. Q: Do I need to write a CORS rule? A: On ZevCloud, no: connecting a bucket sets it up. On another provider you add one rule allowing PUT from your dashboard origin, and the connection test tells you if it is wrong. ### Releases (https://zevcontent.com/products/releases) Version the whole project, then promote. Build the next structure and its content in a release, preview it, and switch atomically. - Preview before promoting: Point a deployment at a release with one query parameter. - Atomic switch: Readers see the old version, then the new one. Never half of each. - Clone and edit: A release starts as a copy, including every link between entries. - One event when it lands: release.published tells a cache that everything may have changed. - 1: query parameter to preview the next version - 1: step to promote it - 0: readers who see half of each 1. Start a release from what is live: It begins as a copy, including every link between entries, so nothing is half-migrated. 2. Preview it: Point a preview deployment at the release. Nobody else sees a thing until you promote it. 3. Promote in one step: Readers see the old version, then the new one. Never half of each. Q: Can I preview a release before it goes live? A: Yes. Point a preview deployment at the release and read it exactly as your site would. Nobody else sees a thing until you promote it. Q: What happens to readers during a promotion? A: They see the old version, then the new one. The switch is atomic, so nobody gets a page built from half of each. Q: Does a release copy my content or just the structure? A: Both. A release starts as a copy of what is live, including every link between entries, so you are never editing a half-migrated model. ### Webhooks (https://zevcontent.com/products/webhooks) Your site finds out the moment it changes. Signed deliveries for entries, content types, media and releases, each naming the exact page to re-fetch. - Signed, not just posted: Every body carries an HMAC over the raw payload and a timestamp, so a forged delivery fails verification. - Invalidate one page: An event names its subject and the path to re-read, rather than making you drop the whole cache. - Retries you can see: Failed deliveries are retried with backoff and listed with their response, so a broken endpoint is visible. - Nothing leaks on redirect: Deliveries never follow a redirect and never resolve to a private address. - 19: events, covering every kind of content - 6: delivery attempts over about an hour - 1: page to re-fetch, named in the payload 1. Add an endpoint: A name and a URL. Pick the events you care about, or take all of them. 2. Verify the signature: Every body carries an HMAC over the raw payload and a timestamp. A forged delivery fails the check. 3. Re-fetch one path: The payload names its subject and the path to read again, so you invalidate a page rather than a site. Q: How do I know a delivery really came from you? A: Every body carries an HMAC signature over the raw payload plus a timestamp. Verify both and a forged or replayed delivery fails the check. Q: What happens when my server is down? A: We retry, with backoff, six times over about an hour. Failed deliveries are listed with the response we got, so a broken endpoint is visible rather than silent. Q: Do I have to rebuild my whole site on every event? A: No. Every payload names its subject and the path to re-read, so you can invalidate one page. release.published is the one event that means everything may have changed. ## Sites running on it - Exsol Solfield (https://exsolsolfield.com.ng/): A cybersecurity company publishing three security assurance products, the frameworks they map to, and an insights library. Uses: Custom types for products and frameworks, the blog for insights. - The Cover Journal (https://coverjournal.com/): A visual culture publication about the people and ideas behind album cover art. Uses: Custom types for covers, artists and creatives, the blog for the journal, and link fields for a menu that survives a rename. ## 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. ### Does ZevContent have AI writing tools? ZevAI sits in the editor: rewrite a sentence, change its tone, shorten or expand it, proofread a page, or generate a summary and SEO description from what the page already says. Every suggestion appears as a tracked change, with the old text struck through and the new text highlighted, so nothing is written until somebody accepts it. The workspace owner decides which members have it. ### 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. ### How is ZevAI charged? By the action, against a monthly allowance that comes with the plan. A rewrite, a proofread or a generated summary is one action. When the allowance runs out ZevAI stops until it resets, and the dashboard tells you how many are left before you spend the last one. Nothing is billed past your plan. ### What does ZevContent cost right now? Nothing. Every feature is free while we are in beta, and there is no card required to create a workspace, a project, or an API key. ### What happens to my project when paid plans arrive? It keeps working. Plans and prices will be announced by email before they take effect, a free tier will remain, and no existing project will be switched off without notice. ### Is anything limited during beta? There are no plan limits today. We apply fair-use rate limits to the API to keep the service stable for everybody, and we will contact you rather than cut you off if a project is unusually heavy. ### Do I pay for media storage? Not to us. Images and files live in your own object storage bucket, so you pay your storage provider directly for what you store. ZevContent only holds the connection and signs the upload. ### Can I get an invoice or pay in Naira? Billing runs through ZevPay when it opens, which supports Naira and USD and issues invoices. Nothing is charged during beta. ### Can I export everything and leave? Yes. The REST API that serves your website also serves your export: one call returns the content model, and the entry endpoints return every field of every entry, drafts included. Your images are already in a bucket you own.