---
title: "Create a new printer for the current user."
method: POST
path: "/api/Printers"
tags: ["Printers"]
---

# Create a new printer for the current user.

`POST /api/Printers`

## Request

- Base URL: `https://api.3dprintlog.com`
- URL: `https://api.3dprintlog.com/api/Printers`
- 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`

## 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.

## Response `201`

Returned with the newly creeated printer details.

- PrintLogApiModelsDTOsPrinterPrinterDetailDto
  - `id` integer, nullable
  - `make` string, nullable
  - `model` string, nullable
  - `name` string, nullable
  - `description` string, nullable
  - `nozzleDiameter` number, double, nullable
  - `filamentDiameter` number, double, nullable
  - `isActive` boolean
  - `loadedFilaments` PrintLogApiModelsDTOsPrinterPrinterFilamentSummaryDto[], nullable: The collection of currently loaded filament for this printer.
    - `id` string, uuid
    - `slot` integer, nullable: The 0-based slot the spool is in, or null when it was loaded without one.
    - `slotLabel` string, nullable: What the printer calls the slot, such as `T2`.
    - `loadedAt` string, date-time: When the spool was loaded.
    - `filament` PrintLogApiModelsDTOsFilamentFilamentSummaryDto
      - `id` string, uuid
      - `spoolNumber` integer, nullable: The user's own number for this spool (1, 2, 3…), which Spoolman clients use as its id. Read-only: assigned on create, never reused, and ignored on PUT.
      - `displayName` string, nullable: Common name for the roll of filament.
      - `brand` string, nullable
      - `materialType` string, nullable: The material Type, ie PLA, PETG, ABS.
      - `materialCategory` PrintLogApiModelsDTOsMaterialCategoryMaterialCategoryDto: The category of materials, such as filament, resin, powder, etc.
        - `nickname` string, nullable: The nickname of the material category
        - `name` string, nullable: The long form name of the category
        - `description` string, nullable: A description of that category
        - `hasDiameter` boolean: Whether this material has a diameter
        - `showNozzleTemperature` boolean
        - `showBedTemperature` boolean
        - `showMeltingTemperature` boolean
        - `showRecommendedInitialLayerTimeInSeconds` boolean
        - `showRecommendedLayerTimeInSeconds` boolean
        - `showMaterialRefreshRatio` boolean: The percentage of new powder when mixing with old powder
        - `showInertGas` boolean
      - `materialDensityGramPerCubicCm` number, double: The Density of the Material
      - `colorName` string, nullable
      - `colorHex` string, nullable
      - `recommendedTemp` number, double, nullable: The user's recommended temperature
      - `isActive` boolean
      - `notes` string, nullable
      - `createdDate` string, date-time
      - `filamentRemaining` integer, nullable
      - `filamentLengthRemainingInM` number, double, nullable: Converted from FilamentRemaining rather than accumulated separately, so the list and the detail page cannot disagree. See FilamentDetailDto for why the per-usage volume and length columns are not summed. Get-only: computed on read.
      - `filamentVolumeRemainingInMl` number, double, nullable
      - `purchasePriceValue` string, nullable: Any notes about the purchase price
      - `initialNominalWeightMg` integer, nullable
      - `diameterMm` number, double, nullable
      - `loadedInPrinter` PrintLogApiModelsDTOsPrinterPrinterSummaryWithoutCategory
        - `id` integer
        - `name` string, nullable
        - `make` string, nullable
        - `model` string, nullable
        - `isActive` boolean
      - `storageLocation` string, nullable
      - `isFavorite` boolean
      - `colorPattern` 1 | 2 | 3 | 4: Sent as an integer: `1` = Solid, `2` = Multi, `3` = Gradient, `4` = Rainbow.
      - `finishType` 1 | 2 | 3: Sent as an integer: `1` = Standard, `2` = Silk, `3` = Matte.
      - `colors` string[], nullable
      - `effects` PrintLogApiEnumsFilamentEffect[], nullable
      - `defaultImageThumbnailUrl` string, nullable: Signed thumbnail URL for the default image. Populated ONLY by FilamentService's explicit hydration for the owner's filament list. Null everywhere else — including inside print responses, which are anonymous. Never populate this via AutoMapper.
  - `category` PrintLogApiModelsDTOsPrinterCategoryPrinterCategoryDto: The class/category/type of 3D printing technology, such as FDM, SLA, etc
    - `nickname` string, nullable: The nickname of the category
    - `name` string, nullable: The long form name of the category
    - `description` string, nullable: A description of that category
    - `materialCategory` PrintLogApiModelsDTOsMaterialCategoryMaterialCategoryDto: The category of materials, such as filament, resin, powder, etc.
      - `nickname` string, nullable: The nickname of the material category
      - `name` string, nullable: The long form name of the category
      - `description` string, nullable: A description of that category
      - `hasDiameter` boolean: Whether this material has a diameter
      - `showNozzleTemperature` boolean
      - `showBedTemperature` boolean
      - `showMeltingTemperature` boolean
      - `showRecommendedInitialLayerTimeInSeconds` boolean
      - `showRecommendedLayerTimeInSeconds` boolean
      - `showMaterialRefreshRatio` boolean: The percentage of new powder when mixing with old powder
      - `showInertGas` boolean
    - `showNozzleDiameter` boolean
    - `showFilamentDiameter` boolean
    - `showBeamDiameter` boolean
    - `showBedSize` boolean
    - `showScreenResolution` boolean
    - `showHasHeatedBed` boolean
    - `showHasHeatedChamber` boolean
  - `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: How many filament positions the printer has. 1 for a single-tool printer.
  - `images` PrintLogApiModelsDTOsPrinterPrinterImageDto[], nullable: Photos of this printer, ordered by display order. Hydrated explicitly after materialization and never projected: SAS signing cannot run inside ProjectTo.
    - `id` integer
    - `url` string, nullable: Signed, inline, bucketed-expiry URL. Null if signing failed.
    - `thumbnailUrl` string, nullable: Thumbnail URL; falls back to PrintLogApi.Models.DTOs.Printer.PrinterImageDto.Url when no thumbnail exists.
    - `isDefault` boolean
    - `displayOrder` integer

## 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.
- `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.

---

[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/dfc3a4df4e38?raw)
