canonical: https://jentic.com/apis/carbon.inc/carbon

# Carbon Inc Carbon REST API

Jentic publishes the only available OpenAPI specification for Carbon REST API, keeping it validated and agent-ready. The Carbon REST API automates Carbon's industrial 3D printing workflow, exposing JWT-authenticated access to a fleet of connected printers, print jobs, and the underlying parts library. Agents can register a JWT, list printers and their statuses, queue and inspect print jobs, and look up parts by ID. The API is the programmatic surface for Carbon's manufacturing platform used by production additive-manufacturing teams.

## For AI agents

Queue and monitor 3D print jobs on a Carbon printer fleet, list connected printers, and look up parts in the manufacturing library.

## Scope

Does not handle CAD design, slicing, or part upload - use for printer fleet status, print job orchestration, and parts lookup only.

## Capabilities

- Register a JWT bearer token for subsequent API calls
- List all Carbon printers connected to the account with their status
- Retrieve detailed status and configuration for a specific printer by ID
- Submit a new print job referencing a part for an available printer
- List print jobs across the fleet with filtering and pagination
- Inspect a single print job's progress and outcome by print ID
- Look up parts in the part library by part ID for use in print jobs

## Use cases

### Automated Print Queue Orchestration

Drive a manufacturing workflow that selects an available Carbon printer, submits a print job referencing a part from the library, and polls for completion. The Carbon REST API exposes printers, prints, and parts as first-class resources, so an orchestrator can list idle printers via GET /printers, post a job to POST /prints, and watch progress on GET /prints/{printId} until status changes.

Example prompt: List printers, pick the first idle one, create a print job for partId PART-123 on it, then poll GET /prints/{printId} until status is complete.

### Production Floor Monitoring Dashboard

Power an internal dashboard that shows live printer fleet status and active jobs. The API returns the printer list and individual printer detail, letting operators see which units are running, idle, or in error, alongside the print queue and per-job status. This gives production managers a single agent-readable view of additive manufacturing capacity.

Example prompt: Fetch all printers and all in-flight prints, then return a JSON summary of how many printers are busy, idle, or errored.

### Parts Library Lookup for CAM Pipelines

Integrate Carbon's parts library into a CAM or PLM pipeline. The /parts and /parts/{partId} endpoints expose the part metadata Carbon needs for production, so an upstream system can validate that a given part exists and is ready before a job is submitted. This prevents queuing jobs against missing or stale parts.

Example prompt: Given a CAD identifier, call GET /parts to confirm a matching part exists in Carbon's library, then return the partId.

### AI Agent Manufacturing Control via Jentic

Wire Carbon into an AI agent through Jentic so a natural-language instruction such as 'print 5 brackets on the first available printer' becomes a reliable tool call. The agent searches Jentic for the print-creation operation, loads the input schema, and executes with a JWT injected from Jentic's vault, with no Carbon credentials in the agent context.

Example prompt: Through Jentic, submit a print job for partId PART-456 to printerId PR-01 and confirm the job was accepted.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /register | Register a JWT bearer token |
| GET | /printers | List all Carbon printers |
| GET | /printers/{printerId} | Get a specific printer's status |
| POST | /prints | Create a new print job |
| GET | /prints | List print jobs |
| GET | /prints/{printId} | Get a specific print job |
| GET | /parts | List parts in the library |
| GET | /parts/{partId} | Get a part by ID |

## Key resources

- **Authentication** — Register and exchange a JWT bearer token for subsequent calls
- **Printers** — List Carbon printers in the account and inspect a single printer by ID
- **Prints** — Create new print jobs and read print job status by print ID
- **Parts** — Browse the parts library and fetch a single part by part ID

## Why Jentic

- **Setup:** Wiring the Carbon REST API by hand means minting a JWT bearer token via the register call, sending it in the Authorization header on every request, and calling the gw.carbon.inc host yourself. Through Jentic you install once, import the Carbon REST API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Carbon puts the printer id in the URL path (/printers/{printerId}), so a rule can pin your agent to one printer for status reads. You choose the operations it may call, so print job creation is not included unless you add it.
- **Credential handling:** Your Carbon JWT is stored once, encrypted, by your own Jentic One instance and injected into the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a 3D print job' or 'list printers', and Jentic returns the matching Carbon operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **CarbonAPI** — CO2 emissions calculations for products, journeys, and energy use.
- **CarbonDoomsday** — Atmospheric CO2 readings from Mauna Loa for sustainability dashboards.
- **Carbon Black** — Unrelated cybersecurity API; included as a disambiguator only.

## FAQ

### Why is there no official OpenAPI spec for Carbon REST API?

Carbon does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Carbon REST API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Carbon REST API use?

Carbon uses HTTP bearer authentication with a JWT. Call POST /register to obtain a token, then send it in the Authorization header as `Bearer <jwt>` on every subsequent request. Through Jentic the JWT is held in the encrypted credential vault and rotated automatically, so agents never see the raw token.

### Can I queue a 3D print job through the Carbon REST API?

Yes. POST /prints submits a new print job referencing a partId and a target printerId. The response returns the print job identifier, which you can poll with GET /prints/{printId} to track status from queued through completion.

### How do I list all printers in our Carbon fleet?

Call GET /printers to retrieve every printer registered to the account, including its status. For details on a single unit, call GET /printers/{printerId} with the printer's ID. The /printers endpoints are read-only - provisioning and configuration happen in the Carbon dashboard.

### What are the rate limits for the Carbon REST API?

The OpenAPI specification does not declare explicit rate limits. Limits are enforced by Carbon's gateway based on your account tier; if you hit a 429 response, slow polling on /prints/{printId} or batch reads where possible. Contact Carbon support for the quota tied to your account.

### How do I create a print job with the Carbon REST API through Jentic?

Run `pip install jentic`, then use Jentic's search to find the print-creation operation with the query "create a 3d print job", load its schema, and execute with `{"partId": "PART-123", "printerId": "PR-01"}`. Jentic calls POST /prints, attaches the JWT from the vault, and returns the new printId.

### Does the API let me upload new part designs?

No. The /parts endpoints only read the existing parts library - GET /parts to list and GET /parts/{partId} to fetch a specific record. Part design upload happens through Carbon's design tooling and dashboard, not this REST surface.

### Can I limit what my agent is allowed to do with the Carbon REST API?

Yes. Because you run Jentic One yourself, your own rules decide which Carbon operations and credentials the agent may use. You can allow only read operations such as GET /printers and GET /printers/{printerId}, and since the printer ID sits in the URL path you can pin the agent to a single printer for status reads. Print job creation via POST /prints stays off limits unless you explicitly add it.
