API and integrations
A clean REST API, flexible webhooks, and content you can query the moment you save it. Build once, publish to websites, apps, signage, or anything else that speaks JSON.
Open source under AGPLv3. Free plan, unlimited editors.
What this replaces
Plenty of systems call themselves headless, then pile on proprietary abstractions until you are locked in again. If it is in b10cks, you can query it. No hidden endpoints, no SDK-only features, nothing that only works in the dashboard.
How the API works
The REST API follows conventions you already know. Responses are structured JSON with consistent shapes, so the code you write today still reads correctly a year from now.
One request returns the full content tree with nested blocks already resolved. No second round trip to stitch relations back together.
Your block model defines the JSON. Field names, nesting, and types come straight from the structure you designed, not from a schema we chose for you.
Switch between draft and published state with a query parameter. Point your staging build at drafts and your production build at published content.
Locale-aware responses with fallback chains built in. Ask for French, get French where it exists and the fallback where it does not.
Cursor-based pagination for collections that keep growing. Walk a thousand entries without the offset drift that breaks lists mid-crawl.
Webhooks fire on the changes you care about, so deploys, caches, and search indexes react on their own. Endpoints are versioned, so integrations do not break on updates.
Bring your frontend
b10cks hands you structured content and stays out of the presentation. Keep your framework, your components, and your deploy pipeline.
Built for the way you build
A clean content API, flexible webhooks, and the source code to make it yours. The whole server is open under AGPLv3, so the API is a public contract rather than a moat. Read the code, audit it, or send a fix.
Structured content / any frontend
// A structure you define.
// A response you can predict.
{
"component": "hero",
"heading": "Built to go further",
"blocks": [
{ "component": "grid", "cols": 3 }
],
"locale": "en",
"state": "published"
}Start querying today
Create a workspace, model your first block, and read it back over the API. It takes minutes, and your frontend stays exactly where you left it.