Appearance
API v2
The produuz.it REST API lets you automate design uploads, constructible management, report generation, and more from external systems.
Interactive Documentation
The full API is documented through an interactive Swagger interface:
- Swagger UI: back.produuz.it/api/v2/swagger/
- OpenAPI Schema: Available at the same URL for importing into API clients.
Authentication
The API uses JWT (JSON Web Token) authentication with OTP (one-time password) verification.
- Obtain a token —
POST /api/v2/my_user/token/with your credentials and OTP code. - Include the token — Add
Authorization: Bearer <token>to all subsequent requests. - Refresh the token —
POST /api/v2/my_user/token/refresh/before the token expires.
TIP
For automated integrations, ask your admin to create an API Account in Company Settings. API accounts can authenticate without OTP.
Main Endpoint Groups
| Group | Base path | Description |
|---|---|---|
| Constructibles | /api/v2/constructibles/ | Designs, actuals (assemblies/modules), batches, parts |
| Company | /api/v2/company/ | Projects, users, IFC parsing setups, API accounts |
| Reports | /api/v2/reports/ | Report creation and status tracking |
| Factories | /api/v2/factories/ | Production lines, stations, machines, triggers |
| Cloud Storage | /api/v2/cloudstorage/ | File uploads and package management |
| Logistics | /api/v2/logistics/ | Materials, stock, sizes, orders, delivery |
| Records | /api/v2/records/ | Issues, production events |
| Integrations | /api/v2/integrations/ | Webhooks |
| User | /api/v2/my_user/ | Profile, authentication, settings |
Common Workflows
For step-by-step API tutorials, see Connecting to the API:
- Upload and create designs
- Fetch and filter designs
- Generate constructibles
- Generate reports and machine files
- IFC to MOB2 file, end to end
Material Quantities for Purchasing
To order material you don't need to download every part. Ask the sizes endpoint for the material in scope and let it count for you:
POST /api/v2/logistics/sizes/profiles/names_and_actual_dims/
POST /api/v2/logistics/sizes/plates/names_and_actual_dims/POST /api/v2/logistics/sizes/profiles/names_and_actual_dims/
POST /api/v2/logistics/sizes/plates/names_and_actual_dims/The scope goes in the body as uuid lists, which are OR-ed together. Any of projects, assemblies, part_batches and modules works. Add with_counts to get the quantities:
json
{ "projects": ["<project uuid>"], "with_counts": true }{ "projects": ["<project uuid>"], "with_counts": true }Each entry is one material size with its cut dimensions. For profiles the dimension is the cut length in mm; for plates it is length*width:
json
[{
"size": "VUREN_C24 38*120",
"actual_dims": ["5630", "5380"],
"dims": [
{"dim": "5630", "count": 2, "total_length": 11260.0},
{"dim": "5380", "count": 4, "total_length": 21520.0}
],
"count": 148,
"total_length": 115766.0
}][{
"size": "VUREN_C24 38*120",
"actual_dims": ["5630", "5380"],
"dims": [
{"dim": "5630", "count": 2, "total_length": 11260.0},
{"dim": "5380", "count": 4, "total_length": 21520.0}
],
"count": 148,
"total_length": 115766.0
}]countis the number of parts to cut. Deprecated parts — replaced or deleted work — are not counted, so the quantities are orderable as they come.- Totals come as
total_lengthin mm for profiles andtotal_areain mm2 for plates. - Without
with_countsyou get onlysizeandactual_dims, which is the cheaper call for filling in a material selector. with_countsneeds a scope: counting a whole company catalogue is rejected with a400.- Scope by
projects,assembliesorpart_batches. A part inside a panel that sits inside a module is only linked to the panel, so scoping bymodulesalone can miss parts.
Rate Limits
The API enforces rate limits to ensure fair usage. If you receive a 429 Too Many Requests response, wait before retrying.