---
title: "Create a new series"
method: POST
path: "/api/series"
tags: ["Series"]
---

# Create a new series

`POST /api/series`

# Errors
Returns error if series creation fails, slug conflict, or database error

## Request body

- CreateSeriesRequest — Request payload for creating a new series with content and metadata
  - `category` string, nullable — Category or genre of the series (optional)
  - `coverImageUrl` string, nullable — Banner image URL for the series homepage
  - `description` string, nullable — Description of the series content and purpose (optional)
  - `slug` string, required — Unique URL path segment for the new series
  - `title` string, required — Name for the new series being created

## Response `201`

Series created successfully

- SeriesResponse — API response model for series
  - `category` string, nullable — Category or genre of the series
  - `coverImageUrl` string, nullable — URL to the series cover image
  - `createdAt` string, date-time, nullable — Series creation timestamp
  - `description` string, nullable — Description of the series content and purpose
  - `id` string, uuid, required — Series unique identifier
  - `length` integer, nullable — Total number of posts in the series
  - `slug` string, required — SEO-friendly URL identifier for the series
  - `title` string, required — Display name of the series
  - `updatedAt` string, date-time, nullable — Series last update timestamp
  - `userId` string, uuid, required — ID of the user who owns this series

## Other responses

- `400` — Invalid series data
- `401` — Authentication required to create series
- `409` — Series with this slug already exists
- `500` — Server error during series creation

## Changes

- **2025-10-08** `46cf13730883` — 1 info
  - added the optional property `length` to the response with the `201` status
- **2025-10-02** `6348840d4fcf` — 3 breaking, 3 warning
  - removed the required property `isMonetized` from the response with the `201` status
  - removed the required property `isPublished` from the response with the `201` status
  - removed the required property `pricingTier` from the response with the `201` status
  - removed the request property `isMonetized`
  - …2 more
- **2025-09-24** `143443c14b73` — 2 info
  - the endpoint scheme security `bearerAuth AND cookieAuth` was added to the API
  - the endpoint scheme security `cookieAuth` was removed from the API
- **2025-09-22** `08a2378b4e66` — 1 info
  - endpoint added
- **2025-09-01** `a2488be8a6e4` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/patroninc/apis/patron-api/changes/api/series/post.md)

---

[API](https://skmtc.dev/patroninc/apis/patron-api.md) · [All operations](https://skmtc.dev/patroninc/apis/patron-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/patroninc/patron-api/revisions/1583b1f4c97d/schema)
