> ## 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.

# Slideshows – AI Slideshow Generation API for TikTok, Instagram & More

> Generate AI-powered slideshows for TikTok photo carousels, Instagram carousels, Pinterest pins, and more. Create, edit, render, and post slideshows programmatically - perfect for OpenClaw agents and automated content pipelines.

> Generate AI slideshows, render them as TikTok photo carousels or Instagram carousels, and post them to media-capable accounts - all through the API. The full content creation pipeline for OpenClaw agents and AI-driven social media automation.

Use slideshow endpoints to build slide content, iterate on text/layout, render final images, and publish those images through the posting API. This is the core of the automated content pipeline - your OpenClaw agent or automation script generates slideshows, and the [Create Post](/api-reference/create-post) endpoint distributes them to media-capable accounts.

All slideshow routes are key-scoped and use the standard Partner API envelope documented in [Response Pattern](/api-reference/response).

## Scope Rules

* Workspace keys read and write slideshow rows in their workspace.
* Personal keys read and write rows where `user_id = owner_user_id` and `workspace_id IS NULL`.
* Cross-scope resources return `404 not_found`.

## How It Works

Think of slideshows as a content object you can refine before posting:

1. Create a slideshow (`generate`) with AI/manual config, or copy from TikTok.
2. Iterate on draft content (`get`, `update`, optional `regenerate` per slide).
3. Render when ready (`render`) to produce final slide assets.
4. Publish those slide image URLs using [Create Post](/api-reference/create-post) with `media.type = "slideshow"` and `media.urls`.

## Typical End-to-End Flow

1. Create/choose a pack (optional but common):
   [Slideshow Packs](/api-reference/slideshow-packs)
2. Generate a slideshow:
   [Generate Slideshow](/api-reference/generate-slideshow)
3. Refine the draft:
   [Get Slideshow](/api-reference/get-slideshow),
   [Update Slideshow](/api-reference/update-slideshow),
   [Regenerate Slide](/api-reference/regenerate-slide)
4. Render finalized slides:
   [Render Slideshow](/api-reference/render-slideshow)
5. Send rendered slide URLs to posts API:

```json theme={null}
{
  "caption": "My slideshow post",
  "media": {
    "type": "slideshow",
    "urls": ["https://cdn.example.com/slide-1.jpg", "https://cdn.example.com/slide-2.jpg"]
  },
  "accounts": [{ "id": "0f4f54d4-8cce-4fb7-8c7b-befbcb8af812" }]
}
```

<Note>
  For publishing, use final image URLs from the slideshow response. After render, this is typically
  `slides[].rendered_image_url` (fallback to `image_url` if a rendered URL is not present).
</Note>

## Endpoint Index

| Operation            | Endpoint                                                                       | Docs                                                                |
| -------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------- |
| Preview TikTok copy  | `POST /api/partner/v1/slideshows/copy-tiktok/preview`                          | [Preview TikTok Slideshow Copy](/api-reference/copy-tiktok-preview) |
| Import TikTok copy   | `POST /api/partner/v1/slideshows/copy-tiktok/import`                           | [Import TikTok Slideshow Copy](/api-reference/copy-tiktok-import)   |
| Generate slideshow   | `POST /api/partner/v1/slideshows/generate`                                     | [Generate Slideshow](/api-reference/generate-slideshow)             |
| List slideshows      | `GET /api/partner/v1/slideshows`                                               | [List Slideshows](/api-reference/list-slideshows)                   |
| Get slideshow        | `GET /api/partner/v1/slideshows/{slideshowId}`                                 | [Get Slideshow](/api-reference/get-slideshow)                       |
| Update slideshow     | `PATCH /api/partner/v1/slideshows/{slideshowId}`                               | [Update Slideshow](/api-reference/update-slideshow)                 |
| Delete slideshow     | `DELETE /api/partner/v1/slideshows/{slideshowId}`                              | [Delete Slideshow](/api-reference/delete-slideshow)                 |
| Render slideshow     | `POST /api/partner/v1/slideshows/{slideshowId}/render`                         | [Render Slideshow](/api-reference/render-slideshow)                 |
| Duplicate slideshow  | `POST /api/partner/v1/slideshows/{slideshowId}/duplicate`                      | [Duplicate Slideshow](/api-reference/duplicate-slideshow)           |
| Regenerate one slide | `POST /api/partner/v1/slideshows/{slideshowId}/slides/{slideIndex}/regenerate` | [Regenerate Slide](/api-reference/regenerate-slide)                 |

## Validation Highlights

* Standard generation and manual setup both support `1-10` slides.
* Any `image_pack` slide must resolve a pack through global `pack_id` or per-slide `pack_assignments[index]`.
* `slide_config` index maps must use 0-based numeric keys inside range.
* Updating `slides` on a rendered slideshow resets it to `draft` and clears rendered artifacts.

## Packs and Templates

* Reusable image sets: [Slideshow Packs](/api-reference/slideshow-packs)
* Reusable slideshow blueprints: [Slideshow Templates](/api-reference/slideshow-templates)

## UI vs API

* UI is usually the fastest way to curate packs and templates manually.
* API is better for automation, external pipelines, and agent-driven workflows - especially when using OpenClaw agents or Claude Code to automate TikTok slideshow creation and posting.
* Both paths use the same underlying slideshow, pack, and template models.

## Agent Automation Tips

If you're building an OpenClaw agent or AI automation pipeline, here's the optimal slideshow workflow:

1. **Batch generate** - Create multiple slideshows in sequence, each with different hooks and styles
2. **Render in bulk** - Render all slideshows before posting to avoid delays
3. **Post as drafts to TikTok** - Use `tiktok.post_mode: "MEDIA_UPLOAD"` so you can add trending sounds manually
4. **Post directly to other platforms** - Instagram, YouTube, Pinterest, LinkedIn, and Facebook support direct posting
5. **Track analytics** - Use the [Analytics endpoints](/api-reference/get-analytics-summary) to see what's performing and feed that data back to your agent

See our [official OpenClaw skill](https://github.com/fdarkaou/genviral-skill) for a ready-made implementation of this workflow.
