---
title: Crea post
openapi: /openapi/firmreader.yaml POST /posts
lastUpdated: "2026-08-17"
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

```

`POST https://api.firmreader.com/v1/posts`

Publish a new post to a channel. The post is immediately visible to channel subscribers unless scheduled for a future time.

## Authentication

- `bearerAuth` — http bearer (API Key)

## Request body

- Content type: `application/json`
  - request body (object)
    - `channel_id` (string, required) — The ID of the channel to publish in.
    - `title` (string, required) — Headline displayed in the feed and notifications.
    - `body` (string, required) — The main content of the post. Supports Markdown formatting.
    - `priority` (string, one of: normal, high, urgent, default: "normal") — Notification priority level. Urgent bypasses user preferences.
    - `tags` (array) — Tags for categorization and filtering.
      - `items` (string)
    - `scheduled_at` (string, date-time) — ISO 8601 timestamp to schedule the post. If omitted, the post is published immediately.
    - `cover_image_url` (string, uri) — URL of the cover image displayed at the top of the post.

## Response 201

Post created successfully
  - response (object)
    - `id` (string) — Unique post identifier.
    - `channel_id` (string) — Channel the post belongs to.
    - `title` (string) — Post headline.
    - `body` (string) — Post content in Markdown.
    - `priority` (string, one of: normal, high, urgent) — Notification priority level.
    - `tags` (array) — Tags for categorization.
      - `items` (string)
    - `author` (object)
      - `id` (string)
      - `name` (string)
      - `email` (string)
    - `status` (string, one of: draft, scheduled, published, archived) — Current status of the post.
    - `published_at` (string, date-time) — When the post was published.
    - `scheduled_at` (string, date-time) — Scheduled publish time, if applicable.
    - `cover_image_url` (string, uri)
    - `views` (integer) — Number of unique readers.
    - `created_at` (string, date-time)
    - `updated_at` (string, date-time)

## Response 400

Invalid request parameters
  - response (object)
    - `error` (object)
      - `code` (string) — Machine-readable error code.
      - `message` (string) — Human-readable error message.
      - `param` (string) — The parameter that caused the error, if applicable.

## Response 401

Unauthorized
  - response (object)
    - `error` (object)
      - `code` (string) — Machine-readable error code.
      - `message` (string) — Human-readable error message.
      - `param` (string) — The parameter that caused the error, if applicable.


---

📦 **OpenAPI specs:** Every OpenAPI specification referenced by this documentation is available as a single download — https://docs.firmreader.com/api-specs.zip
