For developers & headless stacks
An API-first CMS for developers. That writes the posts, too.
Every headless CMS gives you a content API and an empty editor. Structura gives you the API and the content: SEO-researched articles, written and published on a schedule, served as JSON your Next.js, Astro, or custom front end fetches. Three read endpoints, no auth, nothing to host.
Free plan · No credit card · Bring your own AI key, no markup
Headless CMS blog costs
The CMS was never the expensive part.
You can wire up a headless CMS in an afternoon. Then somebody has to research, write, and publish three posts a week — forever.
- Headless CMS seat
- $0–300/moand the editor stays empty
- Writer or agency
- $100+/postper article — briefed by you, pasted by you
- Structura
- from $0content backend and the writing, one API
On the free and BYOK plans you bring your own OpenAI, Gemini or Claude key and pay the provider directly — typically $5–$15 a month for daily publishing. We don't mark up AI.
Headless CMS vs. Structura
Same API shape. One of them ships content.
A headless CMS is a database with an editor. Structura is the editor, the writer, and the API — with the SEO work done before the post reaches your fetch.
Content API
Typical headless CMS
Yes — empty until someone writes
Structura
Yes — filled on a schedule you set
Who writes
Typical headless CMS
Your team, a freelancer, or nobody
Structura
Structura — SERP-researched, persona-voiced posts
SEO metadata
Typical headless CMS
Fields you fill in by hand
Structura
Meta title, description, keyphrase, OG, JSON-LD — in the response
Images
Typical headless CMS
Upload your own
Structura
Generated, alt-texted, delivered with width and height
Internal links
Typical headless CMS
Manual
Structura
Validated and pointed at your real domain
Authentication
Typical headless CMS
API keys, tokens, rate plans
Structura
None — public read API, CDN-cached
Hosting
Typical headless CMS
Self-host or pay per seat
Structura
Nothing to run — Structura is the backend
| Typical headless CMS | Structura | |
|---|---|---|
| Content API | Yes — empty until someone writes | Yes — filled on a schedule you set |
| Who writes | Your team, a freelancer, or nobody | Structura — SERP-researched, persona-voiced posts |
| SEO metadata | Fields you fill in by hand | Meta title, description, keyphrase, OG, JSON-LD — in the response |
| Images | Upload your own | Generated, alt-texted, delivered with width and height |
| Internal links | Manual | Validated and pointed at your real domain |
| Authentication | API keys, tokens, rate plans | None — public read API, CDN-cached |
| Hosting | Self-host or pay per seat | Nothing to run — Structura is the backend |
Already using WordPress as a headless backend? Keep it — the plugin runs in headless mode and publishes into the WordPress REST API your front end already reads.
Content API for developers
A response contract you can render blind.
Everything a blog page needs comes back in one GET — no second call for images, no separate SEO plugin, no HTML you have to sanitize yourself.
Sanitized HTML or structured blocks
Every post ships as strict-allowlisted HTML you can inject as-is — no scripts, no inline handlers — plus a blocks array if you'd rather render components yourself.
SEO fields in the payload
Meta title, meta description, keyphrase, Open Graph, categories and tags. Your head tag is a spread, not a form.
JSON-LD out of band
FAQPage and HowTo schema arrive as an array alongside the body, so the sanitizer can strip script tags and you still get rich-result eligibility.
Images with dimensions
Featured and body images come as url, width, height and alt — ready for next/image, no layout shift.
ISR-friendly by design
publishedAt and updatedAt on every post, cursors in both directions on every list, CDN-cached responses. Revalidate on updatedAt and stop re-rendering the world.
One blog per language
A language parameter selects a separate blog with its own campaign, categories and tags. Ship en, de, es and fr from one backend.
API-first CMS in three endpoints
Three endpoints. One afternoon.
Create a headless space
In the customer portal, add a site, pick Headless, and enter your public URL. The same wizard WordPress sites use learns your brand, persona, and visual style.
Run a campaign
Structura builds a keyword bank from real search demand, then researches, writes, illustrates, links, and publishes posts on the schedule you set. Approve each one, or let it run.
Fetch and render
GET /posts for the index, GET /posts/{slug} for a page, GET /terms for the archive nav. Drop the HTML in, spread the meta into your head, emit the JSON-LD. Done.
API-first CMS pricing
A content backend that costs less than a CMS seat.
Start free with your own AI key. Move up to managed AI and the full intelligence stack whenever you're ready — no contracts either way.
BYOK
You supply the AI. We supply the engine.
Bring your own API key
Pay your AI provider directly.
Save $36 per site / year
The full publishing engine
- Everything in Free
- SEO, SERP & competitor research
- Keyword Bank and authority links
- All channels and Search Console
- Up to 10 active campaigns
- Priority support
AI usage is billed by your provider.
Cloud
We run the AI. No API keys, no provider bills.
Save $120 per site / year
Included per site, every month
- posts
- 30
- images
- 90
- AI videos
- 10
- Everything in BYOK
- Same AI quality at every volume
- All channels and unlimited campaigns
- Support from the Structura team
Lower rates from your fifth site.
Applicable taxes are calculated at checkout based on your location.
Just want to try it with your own API key? Start on the free plan
Volume pricing
Cloud · 30 posts
Per site / month · billed yearly
- Sites 1–4
- $39
- Sites 5–9
- $34
- Sites 10–24
- $30
- 25+ sites
- Contact sales
Each rate applies to the sites in that bracket.
Developer questions
What developers ask first
Is this a headless CMS?
Functionally, yes: a content store with a public read API that your front end renders. The difference is what's in it. A headless CMS ships empty and waits for editors; Structura fills it with SEO-researched posts on a schedule, so the API is worth fetching from day one.
Does it work with Next.js?
Yes — fetch at build or revalidation time like any other data source. The docs include an App Router example with ISR, and the same fetch works from Astro, Nuxt, SvelteKit, Remix, a mobile app, or plain Node. There's no SDK to install; it's JSON over HTTPS.
How is the API authenticated?
It isn't, on purpose. The API serves published posts only, and a blog is public by definition, so there are no keys to rotate or leak. Drafts and scheduled posts never appear. Responses are CDN-cached.
Can I keep WordPress as the backend?
Yes. If your front end already reads a headless WordPress install, run the plugin there in headless mode: it publishes native Gutenberg posts into WordPress and points internal links and channel shares at your public domain instead of the CMS host.
Do I get raw HTML or structured data?
Both. Each post carries sanitized HTML you can inject directly — strict tag allowlist, no scripts or inline handlers — and a blocks array if you prefer to render components yourself. Schema.org JSON-LD comes as a separate array so nothing gets stripped.
How do I know when there's a new post?
Poll the list endpoint at your revalidation interval and key on updatedAt — it's your revalidation signal. Lists are cursor-paginated in both directions, so an index page renders purely from its own URL token.
Can I review posts before they reach the API?
Yes. Every post lands in the portal for review, and publishing it is what makes it appear on the API. Or switch a campaign to full autopilot once you trust it.
Content API with the posts included
Stop wiring up an empty CMS.
Create a headless space, run your first campaign, and fetch a real post today — free.