---
title: "Assemble a deck from existing slide job_ids"
method: POST
path: "/v1/deck/from-jobs"
tags: ["deck"]
---

# Assemble a deck from existing slide job_ids

`POST /v1/deck/from-jobs`

## Request

- Base URL: `https://api.slideforge.dev`
- URL: `https://api.slideforge.dev/v1/deck/from-jobs`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Compose an existing set of completed slide jobs into a real deck. Cheaper than POST /v1/deck (no LLM, no generation), more polished than POST /v1/compile (creates a real `job_type=deck` row that PATCH /v1/deck/{id} can later edit).

Use this when you have a set of slides from prior /v1/generate or /v1/render calls and want to bundle them into an editable deck.

## Request body

- DeckFromJobsRequest: POST /v1/deck/from-jobs request body. Like /v1/compile, but produces a real `job_type=deck` row with child slides linked via parent_job_id, so PATCH /v1/deck/{id} works on the result. No LLM, no generation — just merge + chrome.
  - `job_ids` string[], required
  - `name` string, nullable
  - `title` string, nullable
  - `author` string, nullable
  - `theme_id` string, nullable
  - `slide_numbers` boolean

## Response `202`

Deck creation queued

- DeckQueued: 202 response for deck creation.
  - `deck_id` string, required
  - `status` string
  - `slide_count` integer, required

## Other responses

- `400`: No job_ids provided or invalid
- `422`: Validation Error

---

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