Skip to content
Select language:English
Select theme

Tool assemblies API

List and retrieve tool assembly models. Export the full library as a Fusion 360 package.

Updated

Base path: /v1/organizations/:organization_id/tool_assemblies

Method Path Description
GET /tool_assemblies List tool assembly models ready for export
GET /tool_assemblies/:id Get a tool assembly model
GET /tool_library/:vendor Export library as a package for the given vendor

Tool assemblies are read-only via the API — there is no POST, PATCH, or DELETE route for this resource. Create and manage them in the application under Library → Tool Assemblies.

{
"id": 42,
"name": "Face Mill Ø80 — ADKT",
"designation": "TA-042",
"status": "released",
"created_at": "2025-01-10T08:00:00Z",
"updated_at": "2025-06-01T10:00:00Z",
"category": { "id": 3, "name": "Face Mills", "code": "FM" },
"created_by": { "id": 7, "email": "user@example.com", "firstname": "Long", "lastname": "Han" },
"cutting_data": [
{
"id": "b1e1f7a0-1c2d-4e3f-9a8b-7c6d5e4f3a2b",
"material_id": 2,
"name": "42CrMo4 — Face milling",
"operation": "milling_face",
"parameters": { "cutting_speed": 180, "feed_per_tooth": 0.12 },
"unit_system": "metric",
"created_at": "2025-01-10T08:00:00Z",
"updated_at": "2025-01-10T08:00:00Z"
}
]
}

Note the identifying field is designation, not number. cutting_data[].parameters is a free-form JSON object — its keys depend on operation and aren’t fixed by the schema; treat it as an opaque bag of cutting parameters rather than a stable contract.

GET /tool_assemblies returns only tool assemblies that:

  • Have a status in the organization’s configured “tool library exportable” statuses — the “Central tool assemblies library” checkbox set (Draft/Released/Active/To archive/Archived) in Admin Center → Organizations → Preferences, an org-level preference (organizations.preferences["engineering"]["tool_library_exportable"]), not a fixed list of statuses. This is a separate axis from the tool assembly’s own release-pipeline status — the org decides what counts as “CAM-usable” independent of what the state machine calls “released”
  • Have assets_builded: true (the 3D/STEP assets have finished processing)

A tool assembly that exists and is visible in the app UI may not appear here if either condition isn’t met yet.

GET /tool_assemblies/:id, unlike the list endpoint, has no such filter — it returns any of the organization’s tool assemblies by id, subject to the normal authorization scoping (see Authentication).

GET /v1/organizations/:organization_id/tool_library/:vendor

:vendor is currently only implemented for fusion (Autodesk Fusion 360’s tool library JSON format, built from the same status/assets filter as the list endpoint). Any other vendor value returns a 200 OK with a null body rather than an error — check for an empty/null response rather than relying on an error status. To connect Autodesk Fusion, see ToolingMetrics CAM Connect for Autodesk Fusion.

# List all exportable tool assemblies
curl "https://api.toolingmetrics.com/v1/organizations/12/tool_assemblies" \
-H "Authorization: Bearer YOUR_TOKEN"
# Get a specific tool assembly with cutting data
curl "https://api.toolingmetrics.com/v1/organizations/12/tool_assemblies/42" \
-H "Authorization: Bearer YOUR_TOKEN"
# Export the full library as a Fusion 360 package
curl "https://api.toolingmetrics.com/v1/organizations/12/tool_library/fusion" \
-H "Authorization: Bearer YOUR_TOKEN" \
-o tool_library.json
import requests
import json
BASE = "https://api.toolingmetrics.com/v1"
HEADERS = {"Authorization": "Bearer YOUR_TOKEN"}
# Fetch all exportable tool assemblies and index them by designation for lookup
assemblies = requests.get(
f"{BASE}/organizations/12/tool_assemblies",
headers=HEADERS,
).json()
by_designation = {a["designation"]: a for a in assemblies}
ta = by_designation.get("TA-042")
if ta:
print(f"{ta['name']} — status: {ta['status']}")
# Download the Fusion 360 library package
fusion_pkg = requests.get(
f"{BASE}/organizations/12/tool_library/fusion",
headers=HEADERS,
).json()
if fusion_pkg:
with open("tool_library.json", "w") as f:
json.dump(fusion_pkg, f, indent=2)
print("Fusion 360 library exported.")
else:
print("Nothing exported — no exportable tool assemblies, or the vendor value isn't supported.")
Status Cause
401 Not authorized to view tool assemblies in this organization, or no organization with this id
404 GET /tool_assemblies/:id: no tool assembly with this id in this organization. The body uses the singular error key, as for Parts, Projects and Machines (see Errors)
422 Export Library only: the export could not be built even without the tool assemblies it could not build, which it otherwise leaves out of the library, notifying their user; errors says why
500 Export Library only: the export failed unexpectedly; errors holds "The tool library export failed"