Carbon API

The Carbon API

The Carbon API is the service layer — the same code the app runs when you click a button. Every call validates its input, recalculates what depends on it, and enforces your permissions. It's the surface to build on.

1,617

Operations

14

Modules

2

Transports

What you can call

Create a job, draft a quote, adjust inventory, post an invoice — 1,617 operations across 14 modules, the same set the app itself calls. Each carries a READ / WRITE / DESTRUCTIVE classification — 713 read, 675 write, 229 destructive — so a client can filter or gate by risk.

Every operation has a page of its own with a copyable sample in six languages — browse them by module in the sidebar, or search from anywhere in these docs.

How you connect

Every operation is reachable two ways, with the same arguments and the same permissions: over plain HTTP as POST /api/v1/{module}/{operation}, and as a tool over MCP — so any MCP client, Claude Code, Cursor or ChatGPT, can read and write in plain language.

Connect over MCP covers the setup, and Authentication covers how a client proves who it is and what it's allowed to touch.

Build in your language

Carbon publishes an OpenAPI spec for all 1,617 operations, with input schemas taken from the validators the server runs and response shapes reflected from the service functions. A typed client is one generator command away — nothing hand-maintained to fall behind.

Full commands, the spec URL, and how to authenticate a generated client are on Client SDKs.

The Data API

The Data API is the escape hatch — every table and view as a REST endpoint, for the rare case this surface doesn't cover. It skips the service layer, so a write there skips the validation and recalculation with it. Reach for it when you know exactly what the table touches.