---
title: "Create Upload URL"
method: POST
path: "/v1/uploads"
tags: ["uploads"]
---

# Create Upload URL

`POST /v1/uploads`

Create a presigned upload URL for a media file.

## Request body

- UploadRequest — Request to create a presigned upload URL.
  - `filename` string, required — Filename with extension (3-255 chars). Accepted: .mp4, .mov, .png, .jpg, .jpeg, .webp

## Response `200`

Successful Response

- UploadResponse — Response with presigned upload URL and beeble:// URI.
  - `id` string, required — Upload ID (upload_...)
  - `upload_url` string, required — Presigned PUT URL for uploading your file. Expires after 1 hour.
  - `beeble_uri` string, required — beeble:// URI to reference this file in SwitchX generation calls (source_uri, reference_image_uri, or alpha_uri).

---

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