---
title: "Initiate a signed-URL CAD model upload"
method: POST
path: "/cell_specifications/{cell_spec_id}/cad/initiate-upload"
tags: ["Cell Specifications"]
---

# Initiate a signed-URL CAD model upload

`POST /cell_specifications/{cell_spec_id}/cad/initiate-upload`

## Request

- Base URL: `https://api.ionworks.com`
- URL: `https://api.ionworks.com/cell_specifications/{cell_spec_id}/cad/initiate-upload`
- Auth: none declared

Return a signed URL to PUT a CAD model to (up to 100 MB).

PUT the file bytes to ``signed_url`` with the returned ``content_type``, then
call ``confirm-upload`` with the same ``file_name`` and the returned
``upload_id`` to attach it.

## Path parameters

- `cell_spec_id` string, uuid, required

## Request body

- CadUploadRequest: Identifies the CAD file being uploaded.
  - `file_name` string, required: Filename of the model, e.g. 'cell.step'. Its extension selects the format: .step, .stp, .iges, .igs, .stl, .obj, .ply, .glb, or .off.

## Response `200`

Successful Response

- CadUploadTarget: Where the client PUTs a CAD model.
  - `upload_id` string, required: Identifies this upload; pass it back to confirm-upload.
  - `path` string, required: Storage path the model is written to.
  - `signed_url` string, required: Signed URL to PUT the file to.
  - `token` string, required: Upload token embedded in the signed URL.
  - `content_type` string, required: Content-Type header the PUT must carry.

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-04** `1f50d4b61910`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ionworks/apis/ionworks-api/changes/cell_specifications/:cell_spec_id/cad/initiate-upload/post.md)

---

[API](https://skmtc.dev/ionworks/apis/ionworks-api.md) - [All operations](https://skmtc.dev/ionworks/apis/ionworks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ionworks/apis/ionworks-api/revisions/abebbbc5f60a?raw)
