---
title: "Publish an owned deck"
method: POST
path: "/api/decks"
tags: ["Publish"]
---

# Publish an owned deck

`POST /api/decks`

## Request

- Base URL: `https://slidesfly.com`
- URL: `https://slidesfly.com/api/decks`
- Auth: HTTP bearer

Requires `Authorization: Bearer sk_…`. Supports `.html` or Pro `.zip`.

## Headers

- `Idempotency-Key` string

## Response `200`

Published

- OwnedPublishSuccess
  - `ok` unknown, required
  - `data` object, required
    - `deck_id` string, required
    - `version_id` string, required
    - `url` string, required
    - `title` string, required
    - `visibility` 'public' | 'unlisted' | 'private', required
    - `size_bytes` integer, required
    - `format` 'single_file' | 'multi_file', required
    - `file_count` integer
    - `anonymous` unknown, required

## Other responses

- `401`: Missing or invalid credentials
- `402`: Plan or anonymous quota exceeded
- `409`: Idempotency-Key reused with a different body (or still in flight)
- `422`: Invalid upload
- `429`: Rate limited
- `451`: Security scan rejected the deck

---

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