Automate through the API
The same operations as your workspace, with explicit permissions and account boundaries.
Access
Sign in to the workspace and create a token under ‘API & tokens’. Keep the secret in your own system. Send it as a Bearer header. You can revoke it immediately; choose an expiry of up to 365 days.
Authorization: Bearer <YOUR_TOKEN> Content-Type: application/json
Read and write scopes are separate for prints, links, websites and generation. Tokens cannot create more tokens. Publish Smart Links through your browser session after reviewing the preview. A token for one Smart Link can only edit that draft.
Calculate and request a print
- Upload the file without an account. Keep the ID and private file token from the response.
- Send your choices with x-estimate-token. Then poll until a price or manual-review result is available.
- Save a request using prints:write: address, file ID/token, note and optional picture IDs. Upload pictures with POST /images first.
curl https://omnitechs.nl/api/v1/calculator \
-F "[email protected]"
curl https://omnitechs.nl/api/v1/calculator/<FILE_ID> \
-H "x-estimate-token: <FILE_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"unit":"mm","scalePercent":100,"materialId":"pla","colourId":"unsure","qualityId":"standard","useId":"functional","quantity":1,"customerTypeId":"private"}'STL/3MF: up to 40 MiB. An estimate is not an accepted quote or print order. Submitted files: up to 90 days; other uploads: 7 days. Addresses currently support the Netherlands.
Generation and retries
Use generation:write to start a base generation. Balance is reserved; a failed provider task is refunded. Use one idempotency-key per attempt and reuse it after a network failure. Keep the body unchanged for that key. Each account can have up to three active tasks.
curl https://omnitechs.nl/api/v1/generation \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "idempotency-key: <OPAQUE_ATTEMPT_ID>" \
-H "Content-Type: application/json" \
-d '{"kind":"text","prompt":"A simple low-poly planter","imageIds":[]}'Check /capabilities for availability. Results are retained locally before a task becomes ‘SUCCEEDED’. Download them with generation:read. Image generation accepts your own JPEG/PNG upload IDs; external image URLs are refused.
Smart Link MCP
Create a Smart Link in the workspace and issue a token for that link. Connect your AI to /api/v1/mcp using Streamable HTTP and a Bearer header. Tools: get_smart_link and update_smart_link. Send the current revision when editing. A conflict does not overwrite changes; reload the draft.
MCP supports protocol 2025-11-25, 2025-06-18 and 2025-03-26. The client must accept both application/json and text/event-stream. There is no OAuth sign-in flow; choose a client that supports custom Bearer headers.
Websites
/websites saves your project goal and platform choice: wordpress, nextjs or advise. Provisioning and publishing are not available yet; a saved draft is not a live website.
Endpoint reference
GET /api/v1/printsList account-owned printsPOST /api/v1/printsCreate account-owned printsGET /api/v1/linksList account-owned linksPOST /api/v1/linksCreate account-owned linksGET /api/v1/websitesList account-owned website drafts (provisioning unavailable)POST /api/v1/websitesCreate account-owned website drafts (provisioning unavailable)GET /api/v1/links/{id}Read account-owned Smart LinkPATCH /api/v1/links/{id}Save Smart Link with revision checkingGET /api/v1/websites/{id}Read account-owned website draftPATCH /api/v1/websites/{id}Save website draft with revision checkingGET /api/v1/prints/{id}Read your saved print applicationGET /api/v1/prints/{id}/fileDownload your original print file within its retention windowGET /api/v1/generationList your generation jobsPOST /api/v1/generationReserve balance and start a base Meshy generationGET /api/v1/generation/{id}Poll your provider task and settle its outcomeGET /api/v1/generation/files/{id}/{format}Download your retained local modelPOST /api/v1/imagesUpload an account-owned image, up to 8 MiB, for prints or generationGET /api/v1/tokensBrowser session: list redacted token metadataPOST /api/v1/tokensBrowser session: issue a one-time tokenDELETE /api/v1/tokens/{id}Browser session: revoke your token immediatelyPOST /api/v1/calculatorPublic STL/3MF upload, up to 40 MiBGET /api/v1/calculator/{id}Read an estimate with its private capabilityPOST /api/v1/calculator/{id}Queue slicing with approved material, quality and quantity choicesPOST /api/v1/mcpSmart Link MCP Streamable HTTP; link scopes and JSON-RPC 2.0GET /api/v1/capabilitiesRead current generation and provisioning availability without secretsGET /api/v1/openapiRead this OpenAPI contract
Errors and limits
401: sign in or replace an invalid token. 403: check scopes and browser origin. 409: reload the revision or check the earlier generation attempt. 429: wait or reduce usage. 503: dependency unavailable. Keep x-request-id for support; never include your token in logs or URLs.
Workspace: 30 requests per minute per IP and 90 per account. Calculator per IP: 20 uploads and 60 calculations per hour, 90 status requests per minute. Up to 50 records per type and 20 active API tokens. Requests and downloads are private and are not publicly cached.