---
title: "List material property datasets for a material"
method: GET
path: "/material_property_datasets"
tags: ["Material Property Datasets"]
---

# List material property datasets for a material

`GET /material_property_datasets`

List material property datasets for a given material.

## Query parameters

- `material_id` string, required — Filter by material ID
- `project_id` string, nullable — Optionally filter by project ID
- `limit` integer
- `offset` integer

## Response `200`

Successful Response

- PaginatedResponseMaterialPropertyDataset
  - `items` MaterialPropertyDataset[], required
    - `material_id` string, required — ID of the parent material
    - `project_id` string, required — ID of the project this property is scoped to
    - `name` string, required — User-provided dataset name, e.g. 'Electrolyte transport'
    - `columns` ColumnSpec[], required — All columns in the dataset with their units.
      - `name` string, required — Display name stored in the processed parquet
      - `unit` string — Physical unit, e.g. 'mol.L-1' or 'S.m-1'. Empty string for unitless quantities.
      - `source_column_index` integer, required — 0-based column position in the uploaded file. The column at this position is selected and stored under ``name``. Required for all uploads regardless of whether the file has a header row.
    - `id` string, required — Unique identifier
    - `organization_id` string, required — Organization that owns this record
    - `storage_path` string, required — Path to the processed parquet file in the material-property-datasets bucket.
    - `original_path` string, nullable — Path to the raw original file in the material-property-datasets bucket. NULL only for records created before this field was introduced.
    - `data_version` integer, required — Increments on every data-changing operation (file replacement or column re-processing). Downstream code can store this alongside computed results and compare against the current value to detect staleness.
    - `nan_counts` object, nullable — Number of NaN/null values per column, keyed by display name. Computed at upload time. ``None`` for records uploaded before this field was introduced.
    - `no_header` boolean — True when the uploaded CSV had no header row. Column positions are mapped via ``source_column_index`` on each column spec.
    - `created_by` string, nullable — User ID of the uploader
    - `created_at` string, date-time, required — Upload timestamp
    - `updated_at` string, date-time, required — Last update timestamp
    - `source_pipeline_id` string, nullable — FK to the pipeline this dataset was computed from.
    - `source_simple_pipeline_id` string, nullable — FK to the simple pipeline this dataset was computed from.
    - `source_analysis_id` string, nullable — FK to the analysis this dataset was computed from.
    - `source_label` string, nullable — Free-text provenance note.
  - `count` integer, required
  - `total` integer, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
