---
title: "Attach raw-data records to a measurement"
method: POST
path: "/cell_measurements/{measurement_id}/raw_data"
tags: ["Cell Measurements"]
---

# Attach raw-data records to a measurement

`POST /cell_measurements/{measurement_id}/raw_data`

Bulk-attach raw-data records to a measurement (idempotent).

## Path parameters

- `measurement_id` string, required

## Request body

- AttachRawData — Body for bulk-attaching raw-data records to a measurement.
  - `raw_data_ids` string[], required — Raw-data IDs to attach to the measurement.

## Response `200`

Successful Response

- PaginatedResponseRawData
  - `items` RawData[], required
    - `project_id` string, required — Owning project ID (required).
    - `name` string, required — User-provided label for the raw file.
    - `source` string, nullable — Free-text provenance: where this raw file came from (a URL, DOI, S3 URI, vendor/cycler export description, etc.).
    - `metadata` object — Loose free-form metadata.
    - `id` string, required — Unique identifier.
    - `organization_id` string, required — Owning organization.
    - `filename` string, required — Original uploaded filename.
    - `content_type` string, nullable — MIME type, if known.
    - `size_bytes` integer, nullable — File size in bytes.
    - `storage_path` string, required — Path within the raw-data bucket.
    - `processing_status` 'pending' | 'queued' | 'processing' | 'needs_review' | 'awaiting_cell' | 'done' | 'failed' — Ingestion lifecycle: pending | queued | processing | needs_review | awaiting_cell | done | failed. See src.pydantic_models.raw_data_ingestion for what each means.
    - `processing_error` string, nullable — Terminal ingestion failure message, if any.
    - `processed_at` string, date-time, nullable — When ingestion last reached a terminal state.
    - `reader` string, nullable — Cycler format detected on parse (arbin, maccor, ...).
    - `created_by` string, nullable — User ID of the uploader.
    - `created_at` string, date-time, required — Creation timestamp.
    - `updated_at` string, date-time, required — Last update timestamp.
  - `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)
