Reference
OpenAPI
https://trycutstack.com/v1/openapi.json describes every endpoint, body, query and answer, generated from the same validation the server runs. It is public. Use it to generate a client, to import into an HTTP tool, or to check a field name.
# TypeScript types for every request and answer
npx openapi-typescript https://trycutstack.com/v1/openapi.json -o cutstack-v1.d.ts
# a quick look at one endpoint
curl -s https://trycutstack.com/v1/openapi.json | jq '.paths["/v1/jobs/{id}/review"].get'The spec is versioned with the API (info.version). Additions to /v1 are not breaking; a breaking change would be a /v2.
Every endpoint
All under https://trycutstack.com, all with Authorization: Bearer except the last.
| Method | Path | What | Docs |
|---|---|---|---|
POST | /v1/jobs | Create an empty batch (JSON or multipart with a background image); optional webhook. | batches |
GET | /v1/jobs | List your batches, newest first, without photos. | batches |
GET | /v1/jobs/{id} | Read a batch; since, fields=summary, wait. | batches |
DELETE | /v1/jobs/{id} | Delete a batch now. | batches |
POST | /v1/jobs/{id}/items | Add photos: multipart files, or JSON urls / zipUrl. | batches |
DELETE | /v1/jobs/{id}/items | Remove several photos (itemIds). | batches |
POST | /v1/jobs/{id}/start | Charge and start; sample, defaults, Idempotency-Key. | batches |
POST | /v1/jobs/{id}/continue | Run the held photos. | batches |
POST | /v1/jobs/{id}/cancel | Stop a running batch. | batches |
GET | /v1/jobs/{id}/download | The ZIP; naming, formats, extra presets. | batches |
GET | /v1/jobs/{id}/review | Only the photos worth a second look. | review |
POST | /v1/jobs/{id}/apply | Change the output of finished photos. Free. | settings |
POST | /v1/jobs/{id}/retry | Run photos through the model again (itemIds or failed). | review |
GET | /v1/jobs/{id}/events | Live progress as Server-Sent Events. | events |
GET | /v1/jobs/{id}/webhooks | What happened to the batch's webhook deliveries. | events |
GET | /v1/jobs/{id}/items/{itemId}/file | One file: output, cutout, original, thumbnail. | batches |
DELETE | /v1/jobs/{id}/items/{itemId} | Remove one photo. | batches |
POST | /v1/jobs/{id}/items/{itemId}/retry | Run one photo again; tier: heavy for the strongest model (2 credits). | review |
POST | /v1/jobs/{id}/items/{itemId}/report | Report a broken result; refund when the pixel check agrees. | review |
POST | /v1/jobs/{id}/items/{itemId}/preview | Render one photo with other settings, nothing stored. | settings |
POST | /v1/images | One photo, one call. | single-image |
GET | /v1/presets | The marketplace presets and their sources. | settings |
GET | /v1/account | Balance per pocket, plan, limits, which key is speaking. | credits |
GET | /v1/credits/ledger | Every credit movement, paginated. | credits |
GET | /v1/openapi.json | This API as OpenAPI 3.1. No key needed. | reference |
Agents and MCP
An agent that can make HTTP requests can use everything on this site; the review queue, the wait parameter and the single-image call were shaped for that. The MCP server packages the same calls as tools for Claude, Cursor, Claude Code and other MCP clients. It runs next to your agent with your API key, reads photos from a folder and writes the ZIP back, and adds nothing you cannot do over HTTP.
Your account
- API keys: create, name, revoke.
- Usage and history: the ledger, with batch ids.
- Credits: buy a pack.
- Help and Terms.
Building something with this? Tell us what, and the volume, on the Agents & API page. It decides what we build next, and it is how limits get raised.