---
title: "Replace a printer's details."
method: PUT
path: "/api/Printers/{id}"
tags: ["Printers"]
---

# Replace a printer's details.

`PUT /api/Printers/{id}`

## Request

- Base URL: `https://api.3dprintlog.com`
- URL: `https://api.3dprintlog.com/api/Printers/{id}`
- Auth: one of:
  - OAuth 2 (authorization code, authorization URL `https://3dprintlog.auth0.com/authorize`, token URL `https://3dprintlog.auth0.com/oauth/token`)
  - API key in header `X-Api-Key`
  - API key in query parameter `api_key`

Replaces the whole printer rather than patching it: send every field, not only the changed ones.

## Path parameters

- `id` integer, required

## Request body

- PrintLogApiModelsDTOsPrinterAddPrinterDTO
  - `id` integer, nullable
  - `make` string, required
  - `model` string, required
  - `name` string, required
  - `description` string, nullable
  - `nozzleDiameter` number, double, nullable
  - `filamentDiameter` number, double, nullable
  - `beamDiameter` number, double, nullable
  - `loadedFilaments` PrintLogApiModelsDTOsPrinterAddPrinterFilamentDto[], nullable: The collection of currently loaded filament for this printer.
    - `id` string, uuid: The GUID of the PrintFilament collection. Use EMPTY_GUID for new entries.
    - `filamentId` string, uuid: The optional GUID of the filament used. Set as null (or EMPTY_GUID) to not link this usage to a filament, and instead treat this as a non-tracked filament.
  - `isActive` boolean
  - `category` string, nullable: Nickname of the Printer Category for this printer (ie, FDM, FFF, etc)
  - `bedWidthMm` number, double, nullable
  - `bedHeightMm` number, double, nullable
  - `bedDepthMm` number, double, nullable
  - `screenResolutionXPixels` number, double, nullable
  - `screenResolutionYPixels` number, double, nullable
  - `hasHeatedBed` boolean, nullable
  - `hasHeatedChamber` boolean, nullable
  - `wattageW` number, double, nullable
  - `slotCount` integer, nullable: How many filament positions the printer has (tools, AMS slots). Omit to keep the current value; a new printer defaults to 1.
  - `catalogModelId` string, nullable: Id of the printer catalog model this printer is, such as `bambu-lab-p1s`. Must exist and not be hidden; a retired model is accepted only if the printer already has it. Omit to keep the current model. Ids match case-insensitively and are saved in their canonical case.

## Response `201`

Returned with the updated printer details.

## Other responses

- `400`: Returned if the printer details do not contain all required fields, or if the ID in the printer details does not match the id in the route. A `catalogModelId` that is unknown, hidden, or retired (and not already the printer's) returns a problem with `code` `printer_model_not_found`.
- `401`: Returned if the user is not authenticated.
- `403`: Returned if the current user cannot access the requested printer.
- `404`: Returned if the printer does not exist.

## Changes

- **2026-10-20** `6b28a5b9e9ed`: 4 info
  - added the new optional request property `catalogModelId`
  - added the media type `application/json` for the response with the status `400`
  - added the media type `text/json` for the response with the status `400`
  - added the media type `text/plain` for the response with the status `400`

[Operation history](https://skmtc.dev/3dprintlog/apis/3d-print-log-api/changes/api/Printers/:id/put.md)

---

[API](https://skmtc.dev/3dprintlog/apis/3d-print-log-api.md) · [All operations](https://skmtc.dev/3dprintlog/apis/3d-print-log-api/llms.txt) · [OpenAPI document](https://skmtc.dev/3dprintlog/apis/3d-print-log-api/revisions/6b28a5b9e9ed?raw)
