Rough Cut Manufacturing
For software and AI agents

Rough Cut Manufacturing API

The public endpoints behind our quote page, the buyer status board and the invoice portal. Every call is a JSON POST to https://roughcutmfg.com/api/. There are no API keys: a board or an invoice is read with the private link we emailed to the buyer.

Find it automatically

Endpoints

Request a quote: POST /api/submit-proposal

Sends a request for a quote to the shop's quoting board and emails the requester a confirmation: name, email, phone and what to make. It needs a Cloudflare Turnstile check solved on our quote page, and drawings or CAD files are attached there, so an agent should send the person to roughcutmfg.com/quote.

Status board: POST /api/job-status

A buyer's board of their jobs and the stage each is at, read with the token from the emailed link https://roughcutmfg.com/status?link=<token> (the link parameter; a link sent before 2026-10-21 carries it after # instead). peek says what a link is without using it up; open uses the link up (it works once) and answers with a device token; view reads the board with that device token; signout deletes it; shop gives the shop's name and contacts. Open a board only when the person asks to. The board never shows prices, rates or hours.

curl -X POST https://roughcutmfg.com/api/job-status \
  -H 'Content-Type: application/json' \
  -d '{"action":"view","token":"<device token>"}'

Email a board link: POST /api/job-status-signin

Emails a fresh board link to a buyer account's address. It answers the same {"ok":true} whether or not the address has an account, and needs a Turnstile check solved on roughcutmfg.com/status.

Read an invoice: POST /api/portal-invoice

The invoice behind a portal link we emailed, https://roughcutmfg.com/portal/<token>: send {"token":"<token>"}. Read only; it changes nothing.

Good to know