---
title: "Upload Drawing"
method: POST
path: "/api/v1/drawings/{drawing_id}/upload"
tags: ["drawings"]
---

# Upload Drawing

`POST /api/v1/drawings/{drawing_id}/upload`

Mint a signed PUT URL for direct-to-Storage uploads.

The browser uploads the PDF body directly to Supabase Storage. The
API never sees the bytes. After the upload completes, the frontend
calls `/ingest` to start parsing.

## Path parameters

- `drawing_id` string, uuid, required

## Response `200`

Successful Response

- SignedUploadResponse — A short-lived signed PUT URL the browser uploads the PDF to.
  - `upload_url` string, required
  - `storage_path` string, required
  - `expires_in` integer, required

## Other responses

- `4XX` — Client Error
- `5XX` — Server Error

---

[API](https://skmtc.dev/rudus/apis/rudus-api.md) · [All operations](https://skmtc.dev/rudus/apis/rudus-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/rudus/rudus-api/revisions/f149124a4d80/schema)
