---
title: "Request file upload"
method: POST
path: "/signed-uploads"
tags: ["files"]
---

# Request file upload

`POST /signed-uploads`

Request a signed URL for uploading a file directly to storage. **The returned `id` is needed to create a file from the signed upload.**

## Request body

- CreateSignedUploadRequest
  - `content_type` string — The content type of the file to be uploaded, e.g. application/pdf.
  - `filename` string, required — The name of the file to be uploaded.
  - `purpose` 'verification_evidence', required — The purpose of the uploaded file.

## Response `201`

Created

- SignedUpload — Signed upload resource, including the signed URL that you can use to upload directly to the bucket.
  - `created_at` string, date-time, required — The timestamp (in [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) format) of when the resource was created.
  - `expires_at` string, date-time, required — The timestamp when the signed upload expires.
  - `filename` string, required — The name of the file to be uploaded.
  - `id` string, required — Unique resource identifier.
  - `modified_at` string, date-time, required — The timestamp (in [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) format) of when the resource was last modified.
  - `purpose` 'verification_evidence', required — The purpose of the uploaded file.
  - `signed_upload_url` string, required — The signed URL that you can use to upload directly to the bucket.

## Other responses

- `400` — Bad Request

## Changes

- **2026-07-13** `03da9bc8e86b` — 1 info
  - api tag `files` added

[Change history](https://skmtc.dev/joinsophic/apis/sophic-engine-api/changes/signed-uploads/post.md)

---

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