---
title: "List all Materials"
method: GET
path: "/material.json"
tags: ["Materials"]
---

# List all Materials

`GET /material.json`

#### Filtering
This endpoint supports result filtering. For more information on how to filter this request, [go here](/docs/filtering).
			
			
#### OAuth Scope
This endpoint requires the following OAuth scope **read_inventory**.

## Response `200`

An array of Materials

- Material[]
  - `name` string, required — Name of the material, product or labour rate. The maximum length varies based on accounting package integration 30-100 characters for standard mode, up to 2000 characters for description billing mode. Required field that identifies the material in inventory lists, job forms, and invoices.
  - `item_number` string — Unique identifier code for the material. max length. Must be unique within an account.
  - `price` string — The selling price of the material. May include or exclude tax based on the price_includes_taxes field. Used as the default price when adding this material to jobs and generating invoices.
  - `cost` string — The purchase cost of the material. May include or exclude tax depending on the price_includes_taxes setting. Used for profit calculations and reporting. This field may be hidden from users without appropriate permissions.
  - `quantity_in_stock` number — The current inventory quantity of this material available in stock. Stored as a numeric value with decimal support. Updated automatically when materials are used in jobs or when inventory is manually adjusted. Only tracked if item_is_inventoried is enabled.
  - `price_includes_taxes` 0 | 1 — Boolean flag indicating whether the price and cost values include tax (1/true) or exclude tax (0/false). Controls tax calculations when determining final pricing. New materials inherit this setting from the account's default tax display preference.. Valid values are [0,1]
  - `barcode` string — The barcode identifier for the material. Can store UPC, EAN, or other barcode formats. Used for inventory scanning and quick material lookup in the mobile app.
  - `item_is_inventoried` 0 | 1 — Boolean flag indicating whether inventory tracking is enabled for this material (1/true) or disabled (0/false). When enabled, the quantity_in_stock is tracked and updated automatically when the material is used in jobs. Only physical products typically have this enabled.. Valid values are [0,1]
  - `uuid` string, uuid — Unique identifier for this record
  - `active` 0 | 1 — Record active/deleted flag. Valid values are [0,1]
  - `edit_date` string — Timestamp at which record was last modified
  - `item_description` string
  - `use_description_for_invoicing` string
  - `tax_rate_uuid` string, uuid

## Other responses

- `400` — Bad Request - The request is malformed or contains invalid parameters
- `401` — Unauthorized - Authentication credentials are missing or invalid
- `403` — Forbidden - You don't have permission to access this resource
- `429` — Too Many Requests - You have exceeded the rate limit
- `500` — Internal Server Error - An unexpected error occurred on the server

---

[API](https://skmtc.net/servicem8/apis/servicem8-api.md) · [All operations](https://skmtc.net/servicem8/apis/servicem8-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/servicem8/servicem8-api/revisions/53ede60e3653/schema)
