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.
A fully typed client from @hey-api/openapi-ts — request and response types included.
GenerateA modern typed client with openapi-python-client — attrs models and httpx under the hood.
GenerateA typed client from oapi-codegen — pure Go, no Java runtime needed.
GenerateA client from openapi-generator — its Docker image needs no Java install (-g ruby).
GenerateA client from openapi-generator — its Docker image needs no Java install (-g csharp).
GenerateA client from openapi-generator — its Docker image needs no Java install (-g php).
GenerateFull 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.