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,482

Operations

15

Modules

2

Transports

What you can call

Create a job, draft a quote, adjust inventory, post an invoice — 1,482 operations across 15 modules, the same set the app itself calls. Each carries a READ / WRITE / DESTRUCTIVE classification — 757 read, 498 write, 227 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,482 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.