> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genviral.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Slideshow Packs – Reusable Image Collections for Automated Content

> Manage reusable image packs for AI slideshow generation. Upload images, organize collections, and reference them across TikTok slideshows, Instagram carousels, and automated posting workflows. Built for OpenClaw agents and programmatic content creation.

> Organize images into reusable packs that power AI slideshow generation across TikTok, Instagram, Pinterest, and more. Your OpenClaw agent can manage packs programmatically - uploading images, creating collections, and referencing them in automated slideshow workflows.

Packs are reusable image collections used by slideshow generation. For AI agents automating content creation on TikTok, Instagram, YouTube, Pinterest, LinkedIn, or Facebook, packs let you organize brand assets, product photos, or AI-generated images into named collections that can be referenced across multiple slideshows.

## Scope Rules

* Workspace keys can mutate only packs in their workspace.
* Personal keys can mutate only personal packs (`workspace_id IS NULL`).
* Public packs are readable (when included) but not mutable unless owned in scope.

## Endpoint Index

| Operation        | Endpoint                                                 | Docs                                                  |
| ---------------- | -------------------------------------------------------- | ----------------------------------------------------- |
| List packs       | `GET /api/partner/v1/packs`                              | [List Packs](/api-reference/list-packs)               |
| Get pack         | `GET /api/partner/v1/packs/{packId}`                     | [Get Pack](/api-reference/get-pack)                   |
| Create pack      | `POST /api/partner/v1/packs`                             | [Create Pack](/api-reference/create-pack)             |
| Update pack      | `PATCH /api/partner/v1/packs/{packId}`                   | [Update Pack](/api-reference/update-pack)             |
| Delete pack      | `DELETE /api/partner/v1/packs/{packId}`                  | [Delete Pack](/api-reference/delete-pack)             |
| Add image by URL | `POST /api/partner/v1/packs/{packId}/images`             | [Add Pack Image](/api-reference/add-pack-image)       |
| Delete image     | `DELETE /api/partner/v1/packs/{packId}/images/{imageId}` | [Delete Pack Image](/api-reference/delete-pack-image) |

## Choosing Image Input Mode

Use this decision rule when adding pack images:

1. If you already have a public image URL, call [Add Pack Image](/api-reference/add-pack-image) directly.
2. If you only have file bytes, call [Upload File](/api-reference/upload-file) first, then call [Add Pack Image](/api-reference/add-pack-image) with the returned `url`.
3. `Add Pack Image` stores a URL reference in the pack. It does not fetch or re-host the file at add time.

## Typical Flows

### Flow A: Existing image URLs

1. Create a pack.
2. Add images by URL (`POST /api/partner/v1/packs/{packId}/images`).
3. Use the pack ID in slideshow generation (`pack_id` / `pack_assignments`).

### Flow B: Local files / raw bytes

1. Create a pack.
2. Call `POST /api/partner/v1/files` to get `uploadUrl` + `url`.
3. Upload bytes with `PUT uploadUrl`.
4. Call `POST /api/partner/v1/packs/{packId}/images` with `image_url = url`.
5. Use the pack ID in slideshow generation (`pack_id` / `pack_assignments`).
