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.
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[]
colorrequired
string
idrequired
string
trayInfoIdxrequired
string
typerequired
string
usedGrequired
number
usedMrequired
number
indexoptional
number
labelObjectEnabledoptional
boolean
layerFilamentListsoptional
object[]
filamentListrequired
number
layerRangesrequired
string
nozzleDiametersoptional
string
nozzleVolumeTypeoptional
string
objectsoptional
object[]
identifyIdrequired
string
namerequired
string
skippedrequired
boolean
outsideoptional
boolean
predictionoptional
number
printerModelIdoptional
string
supportUsedoptional
boolean
timelapseTypeoptional
string
warningsoptional
object[]
errorCoderequired
string
levelrequired
number
msgrequired
string
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
textSlotsoptional
object[]
PrintagoParam text slots with their per-plate occurrence identities,
re-detected whenever the file is (re)processed. The saved reuse mode
lives on the slot's parameter, which survives a file replacement; this
is the geometry-derived half that must always track the current file.
fontNameoptional
string
`font_name` of the first volume seen with this key.
fontVersionoptional
string
`font_version` of the first volume seen with this key.
keyrequired
string
The matching volume/object name — the substitution key.
labelrequired
string
The label this slot's parameter is shown under.
occurrencesoptional
object[]
Every printable object instance carrying this slot, across all plates.
Absent when the file predates occurrence detection or has no plate
metadata to resolve instances against.
identifyIdoptional
string
Bambu's per-instance id, when present (matches gcode object labels).
instanceIdrequired
number
0-based instance index among the object's build items.
objectIdrequired
string
`model_settings.config` object id (matches the root model's build items).
plateIdrequired
number
surfaceTypeoptional
number
`surface_type` of the first volume seen with this key (0=flat).
textrequired
string
The text authored into the volume. It prints as-is when the slot goes
unfilled, which makes it the parameter's default.
volumeCountrequired
number
How many text volumes in the file carry this slot name.
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"
],
"textSlots": [
{
"key": "string",
"label": "string",
"text": "string",
"volumeCount": 1,
"fontName": "string",
"fontVersion": "string",
"surfaceType": 1,
"occurrences": [
{
"plateId": 1,
"objectId": "string",
"instanceId": 1,
"identifyId": "string"
}
]
}
],
"plateRenderSourceHash": "string"
},
"materials": [
{
"index": 0,
"skip": true
}
],
"hasEmbeddedGcode": true
}