Printago API
POST /v1/parts/extract-3mf-metadata

Extract 3MF metadata from a staged upload

Read plate and material metadata from a staged 3MF upload without creating a part. Accepts the `uploads:` path returned by signed-upload-urls.

Requires: part.create

Request Body

The staged upload to inspect

Extract3MFMetadataRequest
fileUrirequired
string
An `uploads:`-prefixed staging path returned by signed-upload-urls

Example Request

application/json
{
  "fileUri": "string"
}

Response Schema

Extract3MFMetadataResponse
hasEmbeddedGcoderequired
boolean
materialsrequired
object[]
colorrequired
string
identifieroptional
string
indexrequired
number
min: 0
nameoptional
string
skipoptional
boolean
typerequired
string
metadatarequired
object
filamentColorsrequired
string[]
filamentDensitiesoptional
number[]
filamentDiametersoptional
number[]
filamentIdsoptional
string[]
filamentTyperequired
string[]
nozzleDiameterrequired
string
plateRenderSourceHashoptional
string
`fileHashes[0]` of the source that produced the plates' `thumbnailRenderedUri`. Re-extraction carries the renders forward only while this still matches the part's current source; a replaced file leaves them behind rather than showing the previous model's geometry.
platesoptional
object[]
filamentIdsoptional
string[]
filamentMapModeoptional
string
filamentMapsoptional
number[]
gcodeFileoptional
string
idrequired
number
lockedoptional
boolean
nameoptional
string
patternBboxFileoptional
string
pickDataoptional
string
pickFileoptional
string
pickUploadedUrioptional
string
slicedoptional
object
extruderTypeoptional
string
filamentMapsoptional
string
filamentsoptional
object[]
indexoptional
number
labelObjectEnabledoptional
boolean
layerFilamentListsoptional
object[]
nozzleDiametersoptional
string
nozzleVolumeTypeoptional
string
objectsoptional
object[]
outsideoptional
boolean
predictionoptional
number
printerModelIdoptional
string
supportUsedoptional
boolean
timelapseTypeoptional
string
warningsoptional
object[]
weightoptional
number
thumbnailDataoptional
string
thumbnailFileoptional
string
thumbnailNoLightFileoptional
string
thumbnailRenderedUrioptional
string
The plate re-rendered by the three.js builder. Written by a different flow, and to a different storage path, than the archive copy above — a later metadata reprocess re-copies the archive image and must not be able to overwrite this. Prefer it over `thumbnailUploadedUri` (see `plateThumbnailUri`).
thumbnailUploadedUrioptional
string
The archive's own plate preview, copied out at metadata-extraction time.
topDataoptional
string
Base64 PNG data for the top/pick images, staged before upload then cleared.
topFileoptional
string
topUploadedUrioptional
string
Uploaded URIs for the plate's top-down image and color-coded object pick mask. Used by the visual skip-objects picker.
printerModelrequired
string
profileCompatrequired
object
compatiblerequired
string[]
saferequired
string[]
slicedrequired
string
slicerVersionoptional
object

Example Response

201 OK — application/json
{
  "metadata": {
    "printerModel": "string",
    "filamentType": [
      "string"
    ],
    "filamentColors": [
      "string"
    ],
    "filamentDensities": [
      1
    ],
    "filamentDiameters": [
      1
    ],
    "nozzleDiameter": "string",
    "profileCompat": {
      "sliced": "string",
      "compatible": [
        "string"
      ],
      "safe": [
        "string"
      ]
    },
    "plates": [
      {
        "id": 1,
        "name": "string",
        "locked": true,
        "filamentMapMode": "string",
        "filamentMaps": [
          1
        ],
        "gcodeFile": "string",
        "thumbnailFile": "string",
        "thumbnailUploadedUri": "string",
        "thumbnailRenderedUri": "string",
        "thumbnailNoLightFile": "string",
        "thumbnailData": "string",
        "topFile": "string",
        "pickFile": "string",
        "topData": "string",
        "pickData": "string",
        "topUploadedUri": "string",
        "pickUploadedUri": "string",
        "patternBboxFile": "string",
        "sliced": {
          "index": 1,
          "extruderType": "string",
          "nozzleVolumeType": "string",
          "printerModelId": "string",
          "nozzleDiameters": "string",
          "timelapseType": "string",
          "prediction": 1,
          "weight": 1,
          "outside": true,
          "supportUsed": true,
          "labelObjectEnabled": true,
          "filamentMaps": "string",
          "objects": [
            {
              "identifyId": "string",
              "name": "string",
              "skipped": true
            }
          ],
          "filaments": [
            {
              "id": "string",
              "trayInfoIdx": "string",
              "type": "string",
              "color": "string",
              "usedM": 1,
              "usedG": 1
            }
          ],
          "warnings": [
            {
              "msg": "string",
              "level": 1,
              "errorCode": "string"
            }
          ],
          "layerFilamentLists": [
            {
              "filamentList": 1,
              "layerRanges": "string"
            }
          ]
        },
        "filamentIds": [
          "string"
        ]
      }
    ],
    "filamentIds": [
      "string"
    ],
    "plateRenderSourceHash": "string"
  },
  "materials": [
    {
      "index": 0,
      "skip": true
    }
  ],
  "hasEmbeddedGcode": true
}