> ## Documentation Index
> Fetch the complete documentation index at: https://payload-storage-bunny.seshuk.im/llms.txt
> Use this file to discover all available pages before exploring further.

# Mint a client-upload URL

> Returns a short-lived signed (edge) or presigned (S3) URL so the browser can `PUT` file bytes straight to Bunny. Runs the collection's `clientUploads.access` check and validates the file against `upload.mimeTypes` and `upload.limits.fileSize`. See [Client uploads](/configuration/storage/client-uploads).



## OpenAPI

````yaml /api-reference/openapi.json post /api/storage-bunny/storage/upload
openapi: 3.1.0
info:
  description: >-
    HTTP endpoints the plugin registers on your Payload app under `/api`. The
    admin UI calls these for you; document and drive them yourself only if you
    build a custom upload flow.
  title: Payload Storage Bunny — Plugin API
  version: 3.0.0
servers:
  - description: Your Payload app origin
    url: https://your-site.com
security:
  - payloadToken: []
paths:
  /api/storage-bunny/storage/upload:
    post:
      tags:
        - Bunny Storage
      summary: Mint a client-upload URL
      description: >-
        Returns a short-lived signed (edge) or presigned (S3) URL so the browser
        can `PUT` file bytes straight to Bunny. Runs the collection's
        `clientUploads.access` check and validates the file against
        `upload.mimeTypes` and `upload.limits.fileSize`. See [Client
        uploads](/configuration/storage/client-uploads).
      requestBody:
        content:
          application/json:
            schema:
              properties:
                collectionSlug:
                  description: Target upload collection.
                  type: string
                filename:
                  description: Original file name.
                  type: string
                filesize:
                  description: File size in bytes.
                  type: number
                mimeType:
                  description: File MIME type.
                  type: string
              required:
                - collectionSlug
                - filename
                - mimeType
              type: object
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  filename:
                    description: Sanitized file name.
                    type: string
                  method:
                    examples:
                      - PUT
                    type: string
                  prefix:
                    description: Resolved storage path prefix the file lands under.
                    type: string
                  url:
                    description: Signed/presigned URL to `PUT` the file to.
                    type: string
                type: object
          description: Signed upload URL and the resolved storage path.
        '403':
          description: Client uploads disabled for the collection, or access denied.
        '413':
          description: File exceeds the size limit.
        '415':
          description: Disallowed MIME type.
components:
  securitySchemes:
    payloadToken:
      description: >-
        Payload authentication cookie. These endpoints run Payload access
        control; an authenticated admin session is required.
      in: cookie
      name: payload-token
      type: apiKey

````