REST API

Submit files, add an optional part brief and maximum dimension, start a conversion and fetch finished 3D models over HTTP.

Authentication

Every request carries an API key issued in the admin area. Parts created with a key belong to the account the key was issued for.

Authorization: Bearer vlm_ab12cd34_...

Submit a part

POST /api/public/v1/parts — multipart/form-data. Up to 5 files and 20 MB in total. brief, maxDimension and grouping are optional, exactly as in the app. With submit=true the conversion starts right away.

curl -X POST https://voluminate.3dspark.de/api/public/v1/parts \
  -H "Authorization: Bearer $VOLUMINATE_API_KEY" \
  -F "files=@bracket-front.jpg" \
  -F "files=@bracket-side.jpg" \
  -F "name=Bracket" \
  -F "brief=Sheet metal bracket, two M6 threads" \
  -F "maxDimension=120" \
  -F "maxDimensionUnit=mm" \
  -F "submit=true"
201 Created
{
  "part": { "id": "…", "partNumber": "SET-1234", "name": "Bracket" },
  "files": [ { "id": "…", "name": "bracket-front.jpg" } ],
  "conversion": { "id": "…", "status": "queued" }
}

Start a conversion later

curl -X POST https://voluminate.3dspark.de/api/public/v1/parts/<part-id>/convert \
  -H "Authorization: Bearer $VOLUMINATE_API_KEY"

Check status and download models

Download links are signed and valid for one hour. Poll every 30–60 seconds; a run is capped at 45 minutes.

curl https://voluminate.3dspark.de/api/public/v1/parts/<part-id> \
  -H "Authorization: Bearer $VOLUMINATE_API_KEY"
{
  "partNumber": "SET-1234",
  "conversion": { "id": "…", "status": "completed" },
  "models": [
    { "id": "variant-1", "format": "stl", "sizeBytes": 812344, "downloadUrl": "https://…" }
  ]
}

Errors

Errors return { "error": { "code", "message" } }: 401 invalid key, 402 no credits left, 403 blocked, 404 unknown part, 422 invalid request, 429 rate or capacity limit reached.