---
title: "Create an upload request"
method: POST
path: "/requests"
tags: ["Upload requests"]
---

# Create an upload request

`POST /requests`

## Request

- Base URL: `https://yungle.co/api/v1`
- URL: `https://yungle.co/api/v1/requests`
- Auth: HTTP bearer

A public page where anyone with the link can upload files into one of your collections — clients sending raw footage, a supplier sending documents. Files are scanned like any upload and count against your storage. Subscribe to `request.submitted` to hear when someone has sent something.

## Request body

- object
  - `collectionId` string, required: Where the files land. Not the vault.
  - `title` string, required: Shown to the people uploading.
  - `message` string: A note on the upload page.
  - `password` string: Uploaders must enter this first.
  - `requiredItems` string[]: A checklist shown on the page — guidance, not enforcement.
  - `expiresAt` string, date-time: When the link stops taking uploads. Omit for never.

## Response `201`

The request, with the link to give people.

- object
  - `request` UploadRequest, required: A public upload link that files arrive through, into one of your collections.
    - `id` string, required
    - `url` string, uri, required: The page to give people. Anyone with it can upload, until paused, closed or expired.
    - `title` string, required
    - `message` string, nullable, required
    - `collectionId` string, required
    - `status` string, required: Currently one of: `active`, `paused`, `closed`. Treat unknown values as unknown, not as an error.
    - `hasPassword` boolean, required
    - `requiredItems` string[], required
    - `expiresAt` string, date-time, nullable, required
    - `submissionCount` integer, required
    - `receivedBytes` integer, required
    - `createdAt` string, date-time, required

## Other responses

- `400`: The request was malformed or failed validation. Codes: `invalid_request`, `folder_error`.
- `401`: Missing or invalid credential. Codes: `unauthorized`.
- `402`: Needs a paid plan, or prepaid credit for metered usage. Codes: `upgrade_required`, `out_of_credit`.
- `403`: The credential lacks a required scope, or a shared link refused access. Codes: `insufficient_scope`, `password_required`, `wrong_password`, `guests_only`.
- `404`: No such resource in this workspace. Codes: `not_found`.
- `409`: Already exists, an Idempotency-Key conflict, or end-to-end encrypted content the server cannot serve. Codes: `conflict`, `e2ee_unsupported`.
- `429`: Rate limit or email budget exhausted. Wait for `Retry-After`. Codes: `rate_limited`, `email_budget_exhausted`.
- `500`: Our fault. `details.requestId` ties it to our logs. Codes: `internal_error`.

---

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