This document describes the Bambu Lab cloud API endpoints for syncing slicer presets (filament, print process, and machine profiles) between Bambu Studio and the cloud.
Captured from: Bambu Studio v2.4.0.70 with bambu_network_agent v02.04.00.58 Date: 2025-12-08
All API requests require authentication via Bearer token.
Host: api.bambulab.com
Authorization: Bearer <access_token>
User-Agent: bambu_network_agent/02.04.00.58
X-BBL-Client-Name: BambuStudio
X-BBL-Client-Type: slicer
X-BBL-Client-Version: 02.04.00.70
X-BBL-Device-ID: <uuid>
X-BBL-Language: en-US
X-BBL-OS-Type: macos|windows|linux
X-BBL-OS-Version: <version>
X-BBL-Agent-Version: 02.04.00.58
accept: application/json
GET /v1/user-service/my/profile
Returns user account information including UID.
GET /v1/iot-service/api/slicer/setting?version={slicer_version}&public=false
Parameters:
version: Slicer version (e.g., 2.4.0.5)public: Set to false for user presets onlyResponse: Returns a list of preset IDs that the user has synced to cloud.
GET /v1/iot-service/api/slicer/setting/{preset_id}
Response:
{
"message": "success",
"code": null,
"error": null,
"public": false,
"version": "1.5.0.20",
"type": "filament",
"name": "Devil Design PLA @Bambu Lab X1 Carbon 0.6 nozzle",
"update_time": "2025-12-08 01:06:27",
"nickname": null,
"base_id": "GFSA00",
"setting": {
"inherits": "Bambu PLA Basic @BBL X1C",
"filament_vendor": "\"Devil Design\"",
"nozzle_temperature": "225,220",
"pressure_advance": "0.03",
"updated_time": "1765138658"
},
"filament_id": null
}
Preset IDs follow a specific prefix pattern indicating the type:
| Prefix | Type | Description |
|---|---|---|
PPUS |
Print Process | Print/quality settings (layer height, speeds, infill, etc.) |
PFUS |
Filament | Filament settings (temperatures, flow, pressure advance, etc.) |
PMUS |
Printer/Machine | Machine settings (gcode, bed size, kinematics, etc.) |
The suffix after the prefix is a unique hash identifier.
Examples:
PPUS1b03400426f57d - Print process presetPFUS169056f3003bb4 - Filament presetPMUSbc396893c54df0 - Machine/printer preset| Field | Type | Description |
|---|---|---|
message |
string | API response status ("success") |
code |
int/null | Error code if any |
error |
string/null | Error message if any |
public |
boolean | Whether preset is publicly shared |
version |
string | Preset version |
type |
string | Preset type: "filament", "print", or "printer" |
name |
string | Display name of the preset |
update_time |
string | Last update timestamp (ISO format) |
nickname |
string/null | Optional user-defined nickname |
base_id |
string | Reference ID of the parent/base preset |
setting |
object | Key-value pairs of customized settings |
filament_id |
string/null | Bambu filament ID if applicable |
The setting object contains only the delta/modified values from the parent preset. Key fields include:
inherits: Name of the parent preset this inherits fromupdated_time: Unix timestamp of last modification{
"inherits": "Bambu PLA Basic @BBL X1C",
"filament_vendor": "\"Devil Design\"",
"filament_cost": "20",
"filament_settings_id": "\"Devil Design PLA @Bambu Lab X1 Carbon 0.6 nozzle\"",
"nozzle_temperature": "225,220",
"nozzle_temperature_initial_layer": "225,220",
"hot_plate_temp": "60",
"cool_plate_temp": "60",
"textured_plate_temp": "60",
"pressure_advance": "0.03",
"enable_pressure_advance": "1",
"filament_max_volumetric_speed": "30,29",
"activate_air_filtration": "1",
"during_print_exhaust_fan_speed": "50",
"complete_print_exhaust_fan_speed": "50",
"close_fan_the_first_x_layers": "2",
"overhang_fan_threshold": "10%",
"slow_down_layer_time": "5",
"temperature_vitrification": "65",
"filament_start_gcode": "...",
"filament_end_gcode": "..."
}
{
"inherits": "0.08mm Extra Fine @BBL H2D",
"print_settings_id": "# 0.08mm Extra Fine @BBL H2D",
"prime_tower_max_speed": "100",
"prime_tower_rib_wall": "0",
"prime_tower_width": "20"
}
{
"inherits": "Bambu Lab H2D 0.4 nozzle",
"printer_settings_id": "# Bambu Lab H2D 0.4 nozzle",
"bed_custom_model": "/path/to/model.stl",
"machine_start_gcode": "...",
"machine_end_gcode": "...",
"change_filament_gcode": "...",
"printer_notes": "...",
"support_air_filtration": "1"
}
The base_id field references Bambu's internal preset database:
| Prefix | Type |
|---|---|
GF |
Generic Filament |
GP |
Generic Print Process |
GM |
Generic Machine |
Examples:
GFSA00 - Generic filament baseGP136 - Generic print process baseGM033 - Generic machine base (H2D)POST /v1/iot-service/api/slicer/setting
Content-Type: application/json
{
"type": "filament",
"name": "My Custom PLA",
"version": "2.0.0.0",
"base_id": "GFSA00",
"setting": {
"inherits": "Bambu PLA Basic @BBL X1C",
"nozzle_temperature": "210,205",
"updated_time": "1733665800"
}
}
Required fields:
type: "filament", "print", or "printer"name: Display nameversion: Version string (e.g., "2.0.0.0", "2.3.0.2")base_id: Parent preset IDsetting: Object with modified values including updated_time (Unix timestamp)Response:
{
"message": "success",
"code": null,
"error": null,
"setting_id": "PFUSe99f2ff04974b4",
"update_time": "2025-12-08 16:31:48"
}
Important: The Bambu Cloud API does NOT support true updates via PUT/PATCH.
PUT /v1/iot-service/api/slicer/setting/{preset_id} returns 405 Method Not AllowedPATCH /v1/iot-service/api/slicer/setting/{preset_id} returns 500 Cloud database failedWorkaround: To "update" a preset:
setting_id)This mimics how Bambu Studio handles preset updates.
DELETE /v1/iot-service/api/slicer/setting/{preset_id}
Response:
{
"message": "success",
"code": null,
"error": null
}
GET /v1/iot-service/api/slicer/resource?slicer/plugins/cloud={version}
GET /v1/iot-service/api/slicer/resource?slicer/printer/bbl={version}
GET /v1/iot-service/api/slicer/resource?policy/privacy={version}
GET /v1/iot-service/api/user/print?force=true
GET /v1/user-service/my/tasks?limit=5&offset=0&status=0
GET /v1/iot-service/api/user/applications/{app_id}/cert?aes256={encrypted_key}
Delta Storage: Presets only store modified values from the parent, using the inherits field to reference the base preset.
Version Tracking: The updated_time field (Unix timestamp) is used for sync conflict resolution.
Gcode Escaping: Gcode fields use \\n for newlines within JSON strings.
Multi-value Fields: Some fields like nozzle_temperature contain comma-separated values for different conditions.
Authentication: The access token can be obtained via Bambu Lab OAuth flow or the /v1/user-service/user/ticket/{code} endpoint.