> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trypost.it/llms.txt
> Use this file to discover all available pages before exploring further.

# Posts

> Create, schedule, and manage social media posts across multiple platforms.

## What are posts?

Posts are the core content unit in TryPost. A post represents a piece of content that can be published across one or more social media platforms. Each post has **platform entries** — one for each connected social account targeted by the post — that hold the content type, publishing status, and per-platform metadata.

## Creating a post

1. Click **Create Post** or click on a date in the calendar
2. Write your content
3. Add media (images or videos) if desired
4. Pick which connected accounts to publish to (each becomes a platform entry)
5. Choose to post now or schedule for later

When you create a post, TryPost creates one platform entry per chosen social account. The post text is shared across all of them — there is no separate "synced/custom" toggle.

Posts created by [Repurpose](/knowledge-base/repurposes) also land in the calendar (`created_via` is `repurpose`).

## The calendar

The calendar view is the primary way to see your content schedule:

* **Click** any post on the calendar to open it for editing
* **Switch views** between month, week, or day
* The status badge color signals where each post is in the publishing flow

## Scheduling

Pick a date and time and TryPost will publish the post automatically.

* All scheduling times are stored and displayed in **UTC**
* The scheduler checks for due posts **every minute**
* A post scheduled for `10:00 UTC` will typically publish between `10:00` and `10:01 UTC`

When a post becomes due:

1. Status flips to `publishing`
2. A background job is dispatched per enabled platform entry
3. Each platform publishes independently
4. When all platforms finish, the post status updates to the final outcome

Workspace [webhooks](/knowledge-base/webhooks) fire on those status changes (`post.scheduled`, `post.published`, `post.partially_published`, `post.failed`). `publishing` itself does not send an event.

<Note>
  Posts can only be scheduled in the future. The validator rejects past dates.
</Note>

## Publishing flow

Each platform entry publishes independently. If LinkedIn succeeds but Instagram fails, the post becomes **partially published** — successful platforms aren't undone because of one failure.

Failed platform entries are not retried automatically — you can re-run the publish from the post editor (or, via API, send `PUT /posts/{post}` with `status=publishing`).

## Post statuses

| Status | Description |
| - | - |
| `draft` | Being composed, not yet scheduled |
| `scheduled` | Waiting to be published at the set date/time |
| `publishing` | Currently being sent to platforms |
| `published` | Successfully published to all enabled platforms |
| `partially_published` | Published to some platforms, failed on others |
| `failed` | Failed on every enabled platform |

## Platform entry statuses

Each platform entry inside a post has its own status:

| Status | Description |
| - | - |
| `pending` | Waiting for the post to be published |
| `publishing` | Currently being sent to this platform |
| `published` | Successfully published — `platform_url` points to the live post |
| `failed` | Failed; `error_message` describes why |

When a platform entry fails, `error_message` carries the reason returned by the platform (e.g. `Token expired`, `Rate limit exceeded`, `Content policy violation`).

## Comments and @mentions

Posts have a **Comments** tab where workspace members can discuss drafts before they go out.

* Type `@` to mention another member — they receive a `mentioned_in_comment` notification (online → in-app only, offline → in-app + email)
* React to comments with emoji to lightweight-acknowledge without typing a reply
* Edit or delete your own comments any time

See [Notifications](/knowledge-base/notifications).

## Duplicating a post

From the post list (or any post's "..." menu) pick **Duplicate** to copy a post into a new draft. The duplicate gets a fresh ID and `draft` status; the original is untouched. The copy preserves content, media, labels, and platform entries — adjust the schedule and platforms before publishing. Subscribed webhooks receive `post.created` for the copy.

The duplicate action is gated by the same workspace policies as "create post" — anyone with create-post permission can duplicate.

## Labels

Assign labels to posts to organize your content calendar. A post can have multiple labels. Use them for:

* **Campaigns** — Group posts by marketing campaign
* **Content types** — Separate educational, promotional, and engagement posts
* **Clients** — Tag posts by client (useful for agencies)
* **Priority** — Mark urgent or time-sensitive content

See [Labels](/knowledge-base/labels) for more.

## Per-platform fields

Each platform entry on a post exposes:

| Field | Description |
| - | - |
| `content_type` | The format used on this platform — `linkedin_post`, `instagram_reel`, `x_post`, etc. See [Media](/knowledge-base/media) for the full matrix. |
| `enabled` | Whether this platform is included when publishing |
| `status` | The publishing status for this specific platform |
| `platform_url` | Public URL of the live post (set after `status=published`) |
| `error_message` | Reason for failure (set when `status=failed`) |

## Deleting posts

You can delete any post at any time. Deleting removes the post and all its platform entries. Subscribed webhooks receive `post.deleted` with only `{ id, workspace_id }`.

<Warning>
  Already-published posts can't be "unpublished" from the social platforms — deletion in TryPost only removes our local record. Edit or delete on the platform itself if you need to take it down.
</Warning>

## FAQ

<AccordionGroup>
  <Accordion title="Can I edit a post after it's published?">
    No. Once a post reaches `published`, the editor blocks further edits and the API returns `422` for `PUT /posts/{post}`. To change anything, edit the post on the social platform directly.
  </Accordion>

  <Accordion title="What happens if one platform fails?">
    The other platforms are unaffected. The post becomes `partially_published` and the workspace owner receives a notification. The `error_message` on the failed platform entry tells you what went wrong.
  </Accordion>

  <Accordion title="Can I publish the same post again?">
    Not directly. Create a new post with the same content, or re-trigger the publish from the editor on a post that has at least one failed/pending platform.
  </Accordion>

  <Accordion title="What timezone is used for scheduling?">
    UTC. The dashboard and the API use UTC across the board — there's no per-workspace timezone setting today.
  </Accordion>

  <Accordion title="How quickly are scheduled posts published?">
    The scheduler runs every minute. A post scheduled for `10:00` will typically be picked up between `10:00` and `10:01`, then dispatched per platform.
  </Accordion>

  <Accordion title="Why does my link read example(.)com on X?">
    X charges much more to deliver a post that carries a link and shows it to fewer people, so the X version of a post is published with its links written non-clickable. Only X is affected, and your draft is untouched. See [links in posts](/platforms/x-twitter#links-in-posts).
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.