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
What a blog on a headless stack actually 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 pay the AI provider directly (OpenAI or Gemini on Free, OpenAI, Gemini, or Anthropic on BYOK) — 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.
Built for the fetch, not the dashboard
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.
How it works
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.
Simple 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
The full intelligence stack — you supply the AI, we supply the engine. Channels distribution and workspace tools come bundled on every site you activate.
FOUNDING at checkout- Everything in Free
- 20+ point SEO protocol on every post — Yoast/RankMath green out of the box
- Real-time SERP and competitor intelligence
- Keyword Bank — auto-discover 20–50 high-value keywords per campaign
- Authority links, validated before publish
- Search Console analytics — per-post performance, ranked improvement opportunities, and a weekly digest
- Pre-generated stock — scheduled posts publish in under a second
- Body & featured images, WebP-optimized
- Up to 10 active campaigns per workspace
- Full block library + publish notifications (Slack, Discord, webhooks)
- Priority support — direct access to the team
You supply the AI (OpenAI, Gemini, or Anthropic). Typical API cost for daily publishing: $5–15/month per site — less than a single freelance post.
Cloud
Everything in BYOK, fully managed. We handle the AI — no API keys, no token budgets to watch. The per-site rate drops as you add sites.
FOUNDING at checkout- Everything in BYOK — same SEO, SERP, and authority-link engines
- Managed AI — no API key required
- 2M tokens per site / month
- Unlimited active campaigns per workspace
- Automatic provider failover (OpenAI → Gemini → Anthropic)
- Graduated volume pricing — the per-site rate drops as you add sites
- White-glove support with priority response
Managed AI with graduated volume pricing — the per-site rate drops from 5 sites onward. Best when you'd rather not deal with API keys, model choices, or provider bills.
Cloud Pro
Top-tier AI models and higher quotas, with graduated volume pricing as you scale and a dedicated support channel.
FOUNDING at checkout- Everything in Cloud — same SEO, SERP, and authority-link engines
- Frontier AI models by default — GPT-5.2, Claude Opus 4.7, Gemini 3 Pro
- 150 images per site / month (vs 90 on Cloud)
- Graduated volume pricing — the per-site rate drops as you add sites
- Dedicated support channel
The premium tier — frontier models by default, the highest image and content quotas, and graduated volume pricing past 5 sites. Built for publishers and multi-brand operators running their blog engine at scale.
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 — the per-site rate drops as you add sites
1 – 4 sites
- Billed yearly
- $39$23.40 per site/mo
- Billed monthly
- $49$29.40 per site/mo
5 – 9 sites
- Billed yearly
- $34$20.40 per site/mo
- Billed monthly
- $43$25.80 per site/mo
10 – 24 sites
- Billed yearly
- $30$18 per site/mo
- Billed monthly
- $37$22.20 per site/mo
25+ sites
Contact sales for custom pricing| Sites | Billed yearly | Billed monthly |
|---|---|---|
| 1 – 4 sites | $39$23.40 per site/mo | $49$29.40 per site/mo |
| 5 – 9 sites | $34$20.40 per site/mo | $43$25.80 per site/mo |
| 10 – 24 sites | $30$18 per site/mo | $37$22.20 per site/mo |
| 25+ sites | Contact sales for custom pricing |
Volume tier is calculated on total active sites at billing date. Add or remove sites anytime; billing adjusts at the next cycle.
Volume pricing
Cloud Pro — the per-site rate drops as you add sites
1 – 4 sites
- Billed yearly
- $119$71.40 per site/mo
- Billed monthly
- $149$89.40 per site/mo
5 – 9 sites
- Billed yearly
- $105$63 per site/mo
- Billed monthly
- $131$78.60 per site/mo
10 – 24 sites
- Billed yearly
- $90$54 per site/mo
- Billed monthly
- $112$67.20 per site/mo
25+ sites
Contact sales for custom pricing| Sites | Billed yearly | Billed monthly |
|---|---|---|
| 1 – 4 sites | $119$71.40 per site/mo | $149$89.40 per site/mo |
| 5 – 9 sites | $105$63 per site/mo | $131$78.60 per site/mo |
| 10 – 24 sites | $90$54 per site/mo | $112$67.20 per site/mo |
| 25+ sites | Contact sales for custom pricing |
Volume tier is calculated on total active sites at billing date. Add or remove sites anytime; billing adjusts at the next cycle.
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.
Your content backend, filled
Stop wiring up an empty CMS.
Create a headless space, run your first campaign, and fetch a real post today — free.