Content API and SDK (for developers)
The Content API lets a developer pull published content out of NexoFlow and render it on any website, in any framework.
What it is
The Content API lets a developer pull published content out of NexoFlow and render it on any website, in any framework.
Use it when the site is custom-built and neither WordPress publishing nor the embed widget is the right fit. website integration for the comparison.
This article is aimed at developers. A non-technical customer almost certainly wants WordPress or the embed widget instead.
Where to find it
Sidebar > System > Website Integration, or Projects > (project) > Content API
The page shows the project's API key and generates an integration snippet.
Authentication
Each project has its own read-only API key, in the format:
pk_live_<32 hex characters>
Properties worth knowing:
- It is READ-ONLY. It cannot create, edit or delete anything.
- It is scoped to ONE project. It gives no access to your other projects.
- It is a SERVER-SIDE key. Do not put it in browser code. If you need content in the browser without a backend, use the embed widget instead, which has its own public key designed for that.
Images served through the Content API use a separate image token, so image URLs can appear in public page source without exposing your API key.
What the API exposes
- Posts- List published posts, with pagination
- Single post- Fetch one post by its slug
- Site settings- Project-level settings for rendering
- Things to do- Local landing pages, if you use them
- Images- Post images
- Verify- Check that a key and connection are working
- Revalidate- Trigger a rebuild/cache refresh when content changes
Only PUBLISHED content is served. Drafts and scheduled posts are not exposed.
The official SDK
There is an official TypeScript SDK published on npm:
npm install nexoflow-sdk
Features:
- Zero dependencies
- Full TypeScript types on every response
- Built-in retries with exponential backoff, and timeouts
- Async iterators, so you can paginate thousands of posts with a
for awaitloop - ISR-ready: pass a revalidate value and it sets the right cache headers for Next.js Incremental Static Regeneration
Works in Next.js, Nuxt, SvelteKit, Astro, Remix, Express, Fastify, Cloudflare Workers, Deno, Bun, and any server runtime.
Using the SDK is recommended over calling the endpoints by hand- retries, pagination and typing are already solved.
Keeping a static site up to date
If the site is statically generated, publishing a post in NexoFlow will not change the live site until the site rebuilds or its cache expires. Use the revalidate endpoint, or the SDK's revalidate support, so new content appears without waiting for a scheduled rebuild.
This is the most common reason a developer reports "the post published but my site doesn't show it".
Common questions
Is there an API?
Yes- a read-only Content API for pulling published content into your own site, plus an official TypeScript SDK on npm (nexoflow-sdk).
Can I create or publish posts through the API?
No. The Content API is read-only. Content is created in the dashboard, by the AI assistant, or through the MCP server- mcp server.
Where do I get my API key?
From the project's Content API / Website Integration page in the dashboard.
Can I use the key in my frontend JavaScript?
No. It is a server-side key. For browser-side rendering with no backend, use the embed widget, which has its own public key built for that purpose.
Does it work with my framework?
Any server-side JavaScript runtime. The SDK is explicitly tested against Next.js, Nuxt, SvelteKit, Astro, Remix, Express, Fastify, Cloudflare Workers, Deno and Bun.
My site is static. Posts publish but don't appear.
The site needs to rebuild or refresh its cache. Use the revalidate endpoint so publishing triggers it automatically.
Do drafts show up in the API?
No. Only published content is served.
Can one key read all my projects?
No. Each key is scoped to a single project.
