---
title: "Reserve an upload slot and get a signed URL"
method: POST
path: "/v1/uploads"
tags: ["uploads"]
---

# Reserve an upload slot and get a signed URL

`POST /v1/uploads`

## Request

- Base URL: `https://api.transcriptdock.com`
- URL: `https://api.transcriptdock.com/v1/uploads`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `sb-access-token`

## Request body

- UploadRequest
  - `filename` string, required
  - `content_type` string, required
  - `bytes` integer, required

## Response `201`

Slot reserved; PUT the file to signed_upload_url, then complete

- Upload
  - `id` string, uuid, required: Upload id to pass as source.upload_id on job creation.
  - `object_key` string, required: Storage key of the object; informational.
  - `signed_upload_url` string, uri, required: PUT the file bytes here with the declared Content-Type before expires_at.
  - `expires_at` string, date-time, required: When the signed URL and the pending upload stop being accepted.
  - `status` 'pending' | 'ready' | 'failed' | 'expired' | 'purged', required: pending until the PUT completes; ready means a job can reference it.

---

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