---
title: "Create a gallery"
method: POST
path: "/v1/workspaces/{workspace}/galleries"
---

# Create a gallery

`POST /v1/workspaces/{workspace}/galleries`

## Request

- Base URL: `https://api.uploads.sh`
- URL: `https://api.uploads.sh/v1/workspaces/{workspace}/galleries`
- Auth: HTTP bearer

Send an Idempotency-Key to make retries safe for 24 hours. Reusing the key with the same effective body returns the original 201 response. Reusing it with a different body returns 409.

## Headers

- `Idempotency-Key` string

## Request body

- GalleryCreate
  - `title` string, required
  - `description` string, nullable

## Response `201`

The gallery was created.

- Gallery
  - `id` string, required
  - `url` string, uri, required
  - `workspace` string, required
  - `title` string, required
  - `description` string, nullable
  - `visibility` 'public', required
  - `coverItemId` string, nullable
  - `version` integer, required
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `itemCount` integer
  - `references` object[]
  - `previewUrl` string, uri, nullable
  - `items` GalleryItem[], required
    - `id` string, required
    - `objectKey` string, required
    - `position` integer, required
    - `caption` string, nullable, required
    - `altText` string, nullable, required
    - `createdAt` string, date-time, required
    - `status` 'available' | 'missing' | 'withheld', required
    - `url` string, uri, nullable, required
    - `embedUrl` string, uri, nullable, required
    - `pageUrl` string, uri, required
    - `contentType` string, nullable, required
    - `size` integer, nullable, required
    - `uploaded` string, date-time, nullable, required
    - `modified` string, date-time, nullable, required
    - `posterUrl` string, uri
    - `videoDimensions` object
      - `width` integer, required
      - `height` integer, required

## Other responses

- `400`: Invalid request.
- `401`: Missing or invalid credential.
- `403`: The credential lacks the required scope or role.
- `409`: The request conflicts with current resource state.
- `429`: The workspace rate limit or upload budget was exceeded.

---

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