# Posting a new topic via API

**URL:** https://meta.discourse.org/t/posting-a-new-topic-via-api/93539
**Category:** Development
**Tags:** rest-api
**Created:** [July 31, 2018, 5:44am UTC](https://meta.discourse.org/t/posting-a-new-topic-via-api/93539 "2018-07-31T05:44:55Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)
#### Post date: [July 31, 2018, 5:52am UTC](https://meta.discourse.org/t/posting-a-new-topic-via-api/93539/2 "2018-07-31T05:52:51Z")

</div>

Standard www-form encoding is all. Make sure you’re sending either (api\_username, api\_key) or (Cookie, X-CSRF-Token).

> [@Reverse engineer the Discourse API](https://meta.discourse.org/t/how-to-reverse-engineer-the-discourse-api/20576):
>
> Discourse is backed by a complete JSON api. Anything you can do on the site you can also do using the JSON api. The API is documented at [docs.discourse.org](https://docs.discourse.org). You can also use the [discourse\_api](https://github.com/discourse/discourse_api) Ruby gem as a client library. However, not every endpoint is documented. To determine how to do something with the JSON API here are some steps you can follow. Example: recategorize a topic. Go to a topic and start editing a category: Open Chrome dev tools, switch to the Network tab, select …

---

_[View the full topic](https://meta.discourse.org/t/posting-a-new-topic-via-api/93539)._
