v1

latestOpenAPI 3.1.0MIT2026-07-173438118.7 KB
Posts

Create a new post

Errors

Returns error if series not found, access denied, slug/number conflict, or database error

post/api/posts

Request body

audioFileIdstring uuid nullable

Optional audio file attachment for the post

contentstring required

Full content of the post

isPublishedboolean nullable

Publish this post immediately upon creation

postNumberinteger required

Episode or post number for sequencing content within the series

seriesIdstring uuid required

Series to add this post to

slugstring required

Unique URL path segment for the new post

thumbnailUrlstring nullable

Cover image URL for the post preview

titlestring required

Post title for display

videoFileIdstring uuid nullable

Optional video file attachment for the post

Example request

{
  "audioFileId": "c3d4e5f6-7890-1234-cdef-123456789012",
  "content": "Welcome to our first episode where we discuss the fundamentals...",
  "isPublished": false,
  "postNumber": 1,
  "seriesId": "b2c3d4e5-6f78-9012-bcde-f12345678901",
  "slug": "episode-1-getting-started",
  "thumbnailUrl": "https://example.com/thumbnail.jpg",
  "title": "Episode 1: Getting Started",
  "videoFileId": "d4e5f6a7-8901-2345-def0-234567890123"
}

Response

Post created successfully

audioFileIdstring uuid nullable

ID of associated audio file

contentstring required

Post body text and content

createdAtstring date-time nullable

Post creation timestamp

idstring uuid required

Post's unique identifier

isPublishedboolean required

Whether the post is published and visible to users

postNumberinteger required

Position number for ordering this post within its parent series

seriesIdstring uuid required

Parent series identifier

slugstring required

SEO-friendly URL identifier for the post

thumbnailUrlstring nullable

URL to the post's thumbnail image

titlestring required

Post display title

updatedAtstring date-time nullable

Post last update timestamp

videoFileIdstring uuid nullable

ID of associated video file

Example response

{
  "audioFileId": "c3d4e5f6-7890-1234-cdef-123456789012",
  "content": "Welcome to our first episode where we discuss the fundamentals...",
  "createdAt": "2023-01-01T00:00:00Z",
  "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
  "isPublished": true,
  "postNumber": 1,
  "seriesId": "b2c3d4e5-6f78-9012-bcde-f12345678901",
  "slug": "episode-1-getting-started",
  "thumbnailUrl": "https://example.com/thumbnail.jpg",
  "title": "Episode 1: Getting Started",
  "updatedAt": "2023-01-01T12:00:00Z",
  "videoFileId": "d4e5f6a7-8901-2345-def0-234567890123"
}