---
title: "Request a signed upload URL for a file"
method: POST
path: "/v2/uploads/sessions/{upload_session_id}/request-upload"
tags: ["v2 - Upload Sessions"]
---

# Request a signed upload URL for a file

`POST /v2/uploads/sessions/{upload_session_id}/request-upload`

## Request

- Base URL: `https://api.jubjubapp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.jubjubapp.com/v2/uploads/sessions/{upload_session_id}/request-upload`
- Auth: HTTP bearer

Session-token authenticated. Creates a media_v2 record and returns a signed PUT URL.

## Path parameters

- `upload_session_id` string, required

## Query parameters

- `token` string, nullable

## Headers

- `x-upload-token` string, nullable

## Request body

- SessionRequestUploadDTO: Request a signed upload URL for a single file.
  - `filename` string, required: Original filename
  - `content_type` string, nullable: MIME type (auto-detected if omitted)
  - `media_type` string: video or image
  - `size_bytes` integer, nullable: Total file size in bytes. Enables resumable (chunked) upload.

## Response `201`

Successful Response

- SessionUploadResponse: Response after requesting a signed upload URL.
  - `media_id` string, required
  - `signed_url` string, required
  - `resumable_url` string, nullable: Resumable session URL for chunked uploads. Available when size_bytes is provided.
  - `expires_at` string, date-time, required
  - `gcs_path` string, required
  - `content_type` string, required

## Other responses

- `422`: Validation Error

---

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