---
title: "List the current user's filaments, paged."
method: GET
path: "/api/Filaments"
tags: ["Filaments"]
---

# List the current user's filaments, paged.

`GET /api/Filaments`

## Request

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

These are the user's filament spools, which the web app calls *materials*. Use a filament's
`id` in a print's `filamentUsage` to record what the print consumed. Weights are in milligrams.

## Query parameters

- `PageNumber` integer
- `PageSize` integer
- `SortDirection` 1 | 2: Sent as an integer: `1` = Asc, `2` = Desc.
- `SortColumn` 1 | 2 | 3 | 4 | 5 | 6: Sent as an integer: `1` = DisplayName, `2` = MaterialType, `3` = FilamentRemaining, `4` = Brand, `5` = Color, `6` = StorageLocation.
- `searchText` string
- `filterByMaterialCategoryNickname` string
- `filterByStorageLocation` string
- `includeInactive` boolean
- `showFavoritesOnly` boolean
- `showLoadedFilamentOnly` boolean
- `colorPatterns` PrintLogApiEnumsColorPatternType[]
- `finishTypes` PrintLogApiEnumsFilamentFinishType[]
- `effects` PrintLogApiEnumsFilamentEffect[]

## Response `200`

Returns the paged list of filament rolls.

- PrintLogApiModelsPagedListOfPrintLogApiModelsDTOsFilamentFilamentSummaryDto: `[ImmutableObject(true)]` is here for HybridCache and nothing else. It is inert at runtime; the attribute is how HybridCache is told it may hand the same instance to every caller instead of storing a serialized copy in L1 and deserializing it on each hit. Without it a cache <i>hit</i> would pay a full JSON deserialize. That is the cost #66 declined to spend on the serialize side, and it would land on the endpoints whose expensive part — the SQL aggregation — the cache already skips. <b>Be clear about what it does and does not claim.</b> This type is mutable — both properties have setters and `Items` is a mutable `List<T>` — so the attribute is a statement of convention, not a property the compiler enforces: nothing mutates a `PagedList` it read out of the cache, and nothing may start. What it is not is a new risk. A cached `PagedList` was already shared by reference across concurrent requests under plain `IMemoryCache`; the attribute keeps that exact behaviour rather than introducing it. The only alternative is letting HybridCache serialize and re-deserialize per hit, which is a real cost paid on every request to buy protection against a mutation that does not happen. Treat anything returned from a cache lookup as read-only, and if a caller ever genuinely needs to mutate one, copy it first.
  - `paging` PrintLogApiModelsPageInfo
    - `currentPage` integer
    - `totalPages` integer
    - `pageSize` integer
    - `totalCount` integer
  - `items` PrintLogApiModelsDTOsFilamentFilamentSummaryDto[], nullable
    - `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.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden

---

[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)
