Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: AnyCutlist Parse File API
version: 1.0.0
description: 'Programmatic access to AnyCutlist, cutlist software for cut-and-edge shops: read customers'' cutting lists, manage cut lists and boards, optimize and export.
**Authentication.** Send an organization API key as `Authorization: Bearer cai_...`. Organization admins create keys in Settings, API & Connections. API access is included on the Professional and Enterprise plans.
**Scopes.** Each key carries scopes; each operation lists the scopes it accepts (`x-required-scopes`, any one of them). Endpoints not listed here refuse API keys.
**Limits and errors.** Each key has a per-minute limit; responses carry X-RateLimit-* headers, and a 429 carries Retry-After. Errors are JSON with `error`, usually a stable `code`, and a `requestId`.
**AI agents.** A remote MCP server at https://www.anycutlist.com/api/mcp offers task-shaped tools over the same keys, with idempotency keys on every create call and revision checks on calls about a saved cut list. Two scopes exist only for it: `request:quotes` and `request:exports` let an assistant ask for a quote or a machine file, which a person approves in AnyCutlist; no REST endpoint accepts them, and no API key can approve a request. See https://www.anycutlist.com/developers.'
contact:
name: AnyCutlist
url: https://www.anycutlist.com/contact
termsOfService: https://www.anycutlist.com/terms
servers:
- url: https://www.anycutlist.com/api/v1
security:
- apiKey: []
tags:
- name: Parse File
paths:
/parse-file:
post:
summary: Read a photo, PDF or document
description: 'Photos and PDFs need parse:image and use AI parse credits; with queue=true they return 202 with a parseJobId to poll. Spreadsheets and CSV files are not read here: send their rows to POST /parse-jobs as a table source.'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
queue:
type: string
enum:
- 'true'
description: Queue a photo or PDF and return 202 with parseJobId.
materialPalette:
type: string
description: JSON array of { id, name, thickness_mm }.
edgebandPalette:
type: string
description: JSON array of { id, name, thickness_mm }.
defaultMaterialId:
type: string
x-required-scopes:
- parse:file
- parse:image
responses:
2XX:
description: Success (JSON)
4XX:
$ref: '#/components/responses/Error'
tags:
- Parse File
operationId: postParseFile
x-operation-id-source: derived
components:
responses:
Error:
description: Refused
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
requestId:
type: string
securitySchemes:
apiKey:
type: http
scheme: bearer
description: 'Organization API key: cai_ followed by 32 hex characters.'
externalDocs:
description: Developers and AI agents
url: https://www.anycutlist.com/developers