---
title: "Upload a file"
method: POST
path: "/v1/uploads"
tags: ["Uploads"]
---

# Upload a file

`POST /v1/uploads`

Uploads a temporary media file that can be referenced in API generation requests. The uploaded files will be automatically expired and deleted after a period of time. It is strongly recommended to use our SDKs for this which have a simplified interface that directly accepts file objects.

## Headers

- `X-Runway-Version` '2024-11-06', required

## Request body

- object
  - `filename` string, required — The filename of the file to upload. Must have a valid extension and be a supported media type (image, video, or audio).
  - `type` 'ephemeral', required — The type of upload to create

## Response `200`

The upload URL and Runway URI have been successfully created.

- object
  - `uploadUrl` string, uri, required — The URL to upload your media file to with a POST request.
  - `fields` object, required — Fields that must be included in the file upload request as form data.
  - `runwayUri` string, required — The Runway upload URI to use in other API generation requests

## Other responses

- `429` — You have exceeded the rate limit for this endpoint.

## Changes

- **2026-06-02** `bb2963960c9b` — 1 info
  - added the media type `application/json` for the response with the status `429`
- **2025-12-04** `6dab1bdab5d3` — 4 info
  - request body became optional
  - removed the non-success response with the status `400`
  - the `runwayUri` response's property pattern `^runway:\/\/.*` was added for the status `200`
  - added 'propertyNames' constraint to the `fields` response property for the status `200`
- **2025-12-03** `c2a88516fa0c` — 2 breaking, 2 info
  - request body became required
  - removed 'propertyNames' constraint from the `fields` response property for the status `200`
  - added the non-success response with the status `400`
  - the `runwayUri` response's property pattern `^runway:\/\/.*` was removed for the status `200`
- **2025-12-03** `76b3962cf49e` — 4 info
  - request body became optional
  - removed the non-success response with the status `400`
  - the `runwayUri` response's property pattern `^runway:\/\/.*` was added for the status `200`
  - added 'propertyNames' constraint to the `fields` response property for the status `200`
- **2025-11-04** `f33cb61dbbf6` — 2 breaking, 1 info
  - request body became required
  - the `filename` request property's minLength was increased from `2` to `3`
  - removed the non-success response with the status `404`

[Full history](https://skmtc.dev/runwayml/apis/runwayml-api/changes/v1/uploads/post.md)

---

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