---
title: "Issue a presigned PUT URL and an owned file_key"
method: POST
path: "/uploads/presign"
---

# Issue a presigned PUT URL and an owned file_key

`POST /uploads/presign`

## Request

- Base URL: `https://api.mechanofab.com/v1`
- URL: `https://api.mechanofab.com/v1/uploads/presign`
- Auth: HTTP bearer

## Request body

- object
  - `filename` string, required
  - `content_type` string, required
  - `size_bytes` integer, required

## Response `201`

Presigned URL + file_key

- object

## Other responses

- `400`: Invalid request/input.
- `401`: Missing/invalid credentials.
- `402`: Insufficient credits.
- `403`: Scope/tool forbidden.
- `404`: Unknown resource.
- `409`: Idempotency conflict.
- `429`: Rate limited.
- `503`: Control plane / runtime unavailable.

---

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