---
title: "Creates a new topic, a new post, or a private message"
method: POST
path: "/posts.json"
tags: ["Posts", "Topics", "Private Messages"]
---

# Creates a new topic, a new post, or a private message

`POST /posts.json`

## Request body

- object
  - `title` string — Required if creating a new topic or new private message.
  - `raw` string, required
  - `topic_id` integer — Required if creating a new post.
  - `category` integer — Optional if creating a new topic, and ignored if creating a new post.
  - `target_recipients` string — Required for private message, comma separated.
  - `target_usernames` string — Deprecated. Use target_recipients instead.
  - `archetype` string — Required for new private message.
  - `created_at` string
  - `reply_to_post_number` integer — Optional, the post number to reply to inside a topic.
  - `embed_url` string — Provide a URL from a remote system to associate a forum topic with that URL, typically for using Discourse as a comments system for an external blog.
  - `external_id` string — Provide an external_id from a remote system to associate a forum topic with that id.
  - `auto_track` boolean — If false, the user will not track the topic. By default, the user will track the topic.

## Response `200`

post created

- object
  - `id` integer, required
  - `name` string, nullable, required
  - `username` string, required
  - `avatar_template` string, required
  - `created_at` string, required
  - `raw` string
  - `cooked` string, required
  - `post_number` integer, required
  - `post_type` integer, required
  - `posts_count` integer, required
  - `updated_at` string, required
  - `reply_count` integer, required
  - `reply_to_post_number` string, nullable, required
  - `quote_count` integer, required
  - `incoming_link_count` integer, required
  - `reads` integer, required
  - `readers_count` integer, required
  - `score` number, required
  - `yours` boolean, required
  - `topic_id` integer, required
  - `topic_slug` string, required
  - `display_username` string, nullable, required
  - `primary_group_name` string, nullable, required
  - `flair_name` string, nullable, required
  - `flair_url` string, nullable, required
  - `flair_bg_color` string, nullable, required
  - `flair_color` string, nullable, required
  - `flair_group_id` integer, nullable
  - `badges_granted` unknown[]
    - unknown
  - `version` integer, required
  - `can_edit` boolean, required
  - `can_delete` boolean, required
  - `can_recover` boolean, required
  - `can_see_hidden_post` boolean
  - `can_wiki` boolean, required
  - `user_title` string, nullable, required
  - `bookmarked` boolean, required
  - `actions_summary` object[], required
    - `id` integer, required
    - `can_act` boolean, required
  - `moderator` boolean, required
  - `admin` boolean, required
  - `staff` boolean, required
  - `user_id` integer, required
  - `draft_sequence` integer, required
  - `hidden` boolean, required
  - `trust_level` integer, required
  - `deleted_at` string, nullable, required
  - `user_deleted` boolean, required
  - `edit_reason` string, nullable, required
  - `can_view_edit_history` boolean, required
  - `wiki` boolean, required
  - `reviewable_id` integer, nullable, required
  - `reviewable_score_count` integer, required
  - `reviewable_score_pending_count` integer, required
  - `post_url` string, required
  - `post_localizations` unknown[]
    - unknown
  - `mentioned_users` unknown[]
    - unknown

---

[API](https://skmtc.dev/discourse/apis/discourse-api-documentation.md) · [All operations](https://skmtc.dev/discourse/apis/discourse-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/discourse/discourse-api-documentation/revisions/2fd8fd2d6fd0/schema)
